本文介紹了RAM角色和臨時身份憑證(STS Token)的常見問題,為您提供說明和指導。
使用STS時報錯“You are not authorized to do this action. You should be authorized by RAM.”,如何處理?
如果一個RAM用戶使用API、CLI或SDK調用AssumeRole獲取STS Token時,出現如下報錯信息:
Error message: You are not authorized to do this action. You should be authorized by RAM.
出現該問題的原因及解決方法如下:
- 該RAM用戶缺少允許STS扮演角色的權限策略。
請為該RAM用戶添加系統策略(AliyunSTSAssumeRoleAccess)或自定義策略。更多信息,請參見為RAM用戶授權或能否指定RAM用戶具體可以扮演哪個RAM角色。
- RAM角色的信任策略不包含您正在使用的RAM用戶,即RAM角色不允許該RAM用戶扮演。
請為RAM角色添加允許該RAM用戶扮演的信任策略。更多信息,請參見修改RAM角色的信任策略。
AssumeRole接口允許誰調用?
AssumeRole接口用于獲取一個扮演RAM角色的STS Token,該接口僅允許RAM用戶或RAM角色調用,不允許阿里云賬號(主賬號)調用。
RAM角色有幾種?分別可以被誰扮演?
根據RAM可信實體的不同,RAM支持以下三種類型的角色:
- 阿里云賬號:允許RAM用戶所扮演的角色。扮演角色的RAM用戶可以屬于自己的阿里云賬號,也可以屬于其他阿里云賬號。此類角色主要用來解決跨賬號訪問和臨時授權問題。
- 阿里云服務:允許云服務所扮演的角色。此類角色主要用于解決跨云服務授權訪問問題。例如:ECS實例RAM角色就是這個類型,其可信實體為ECS服務。更多信息,請參見使用實例RAM角色訪問其他云產品。
- 身份提供商:允許可信身份提供商下的用戶所扮演的角色。此類角色主要用于實現與阿里云的SSO。
能否指定RAM用戶具體可以扮演哪個RAM角色?
您可以通過創建自定義策略指定RAM用戶具體可以扮演的RAM角色。策略示例如下所示:
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Resource": "acs:ram:*:<account-id>:role/<role-name>"
}
],
"Version": "1"
}
- 上述自定義策略中的
Resource
為角色ARN,其中,<account-id>
為阿里云賬號ID,<role-name>
為RAM角色名稱。關于如何查看角色ARN,請參見如何查看RAM角色的ARN。 - 將上述自定義策略授權給RAM用戶,便可以指定具體可以扮演的RAM角色。關于如何為RAM用戶授權,請參見為RAM用戶授權。
如何查看RAM角色的ARN?
- 登錄RAM控制臺。
- 在左側導航欄,選擇 。
- 單擊目標RAM角色名稱。
- 在基本信息區域,查看RAM角色ARN。
STS服務調用次數是否有上限?
AssumeRole接口調用次數上限:100次/秒。一個阿里云賬號及該賬號下的RAM用戶、RAM角色共用該接口調用次數上限。
當請求量超過上限時,會返回以下報錯信息:
- 錯誤信息
錯誤碼 錯誤信息 Throttling.Api Request was denied due to api flow control. Throttling.User Request was denied due to user flow control. Throttling Request was denied due to flow control. 302
狀態碼
當出現以上報錯信息時,請您減少并發調用次數。如果您的業務場景確實需要更高的并發調用次數,您可以提交工單申請配額。
STS Token的權限限制是什么?
STS Token的權限:指定角色的權限與調用AssumeRole接口時所設置的Policy
的交集。
STS Token的有效期是多久?
STS Token的有效期最小值為900秒,最大值為角色最大會話時間設置的值,默認值為3600秒。
- 您可以通過AssumeRole接口的DurationSeconds參數來限制STS Token的有效期。
- 您可以通過控制臺或API設置角色最大會話時間。更多信息,請參見設置角色最大會話時間。
STS獲取的多個Token是否同時有效?
STS Token在過期之前都是有效的,無論是否創建了新的STS Token。
STS Token發生泄露時如何處理?
如果您通過扮演RAM角色獲取的安全令牌(STS Token)發生泄露,您可以按以下步驟回收所有已經頒發的STS Token。
- 使用阿里云賬號登錄RAM控制臺。
- 移除RAM角色的所有權限策略。
具體操作,請參見為RAM角色移除權限。
- 刪除RAM角色。
具體操作,請參見刪除RAM角色。
刪除RAM角色后,所有通過扮演該RAM角色獲取的且未過期的STS Token都將立即失效。
如果您還需要使用該角色,您可以重新創建同名角色并授權相同的權限策略,使用新創建的角色繼續完成您的任務。
STS Token的長度有最大值限制嗎?
阿里云STS服務返回的安全令牌(STS Token)的長度不固定,強烈建議您不要假設安全令牌的最大長度。