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