本文介紹了RAM角色和臨時身份憑證(STS Token)的常見問題,為您提供說明和指導。
使用STS時報錯“You are not authorized to do this action. You should be authorized by RAM.”,如何處理?
調用AssumeRole介面擷取STS Token時,出現如下報錯資訊:
Error message: You are not authorized to do this action. You should be authorized by RAM.出現該問題的原因及解決方案如下:
使用阿里雲帳號(主帳號)調用該介面。
AssumeRole介面不允許阿里雲帳號(主帳號)調用,請使用RAM使用者或RAM角色調用。
發起調用的RAM使用者或RAM角色缺少允許STS扮演角色的權限原則。
請為發起調用的RAM使用者或RAM角色添加系統權限原則(AliyunSTSAssumeRoleAccess)或自訂權限原則。自訂權限原則樣本,請參見權限原則樣本。
要扮演的RAM角色的信任策略中不包含正在發起調用的RAM使用者或RAM角色。
請修改要扮演的RAM角色的信任策略,允許發起調用的RAM使用者或RAM角色扮演該RAM角色。更多資訊,請參見修改RAM角色的信任策略。
AssumeRole介面允許誰調用?
AssumeRole介面用於擷取一個扮演RAM角色的STS Token,該介面僅允許RAM使用者或RAM角色調用,不允許阿里雲帳號(主帳號)調用。
RAM角色有幾種?分別可以被誰扮演?
根據RAM可信實體的不同,支援以下三種類型的RAM角色:
可信實體為阿里雲帳號的RAM角色:允許RAM使用者或RAM角色扮演的角色。扮演角色的RAM使用者或RAM角色可以屬於自己的阿里雲帳號,也可以屬於其他阿里雲帳號。該類角色主要用於解決跨帳號訪問和臨時授權問題。
可信實體為阿里雲服務的RAM角色:允許雲端服務扮演的角色。分為普通服務角色和服務關聯角色兩種。該類角色主要用於解決跨服務訪問問題。
可信實體為身份供應商的RAM角色:允許可信身份供應商下的使用者所扮演的角色。該類角色主要用於實現與阿里雲的單點登入(SSO)。
如何限制指定RAM使用者扮演指定RAM角色?
修改RAM角色信任策略。
在RAM角色的信任策略中,通過
Principal指定允許扮演該角色的RAM使用者,其中,<account-id>為阿里雲帳號ID,<user-name>為RAM使用者名稱稱。具體操作,請參見修改RAM角色的信任策略。信任策略樣本:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<account-id>:user/<user-name>" ] } } ], "Version": "1" }為RAM使用者授予角色扮演的許可權。
為RAM使用者授予系統權限原則(AliyunSTSAssumeRoleAccess)或自訂權限原則,自訂權限原則可以進一步縮小角色扮演的範圍。
在自訂權限原則中,通過
Resource指定允許扮演的RAM角色ARN,其中,<account-id>為阿里雲帳號ID,<role-name>為RAM角色名稱。具體操作,請參見建立自訂權限原則、為RAM使用者授權。權限原則樣本:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": "acs:ram:*:<account-id>:role/<role-name>" } ], "Version": "1" }
如何查看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的許可權:指定RAM角色的許可權與調用AssumeRole介面時所設定的Policy的交集。
若在調用AssumeRole介面時不設定Policy參數,則返回的STS Token將擁有指定RAM角色的所有許可權。
STS Token的有效期間是多久?
STS Token的有效期間最小值為900秒,最大值為角色最大會話時間設定的值,預設值為3600秒。
您可以通過AssumeRole介面的DurationSeconds參數來限制STS Token的有效期間。
您可以通過控制台或API設定角色最大會話時間。更多資訊,請參見設定RAM角色最大會話時間。
STS擷取的多個Token是否同時有效?
STS Token在到期之前都是有效,無論是否建立了新的STS Token。
STS Token發生泄露時如何處理?
如果您通過扮演RAM角色擷取的安全性權杖(STS Token)發生泄露,您可以按以下步驟回收所有已經頒發的STS Token。
登入RAM控制台。
移除RAM角色的所有權限原則。
具體操作,請參見為RAM角色移除許可權。
刪除RAM角色。
具體操作,請參見刪除RAM角色。
刪除RAM角色後,所有通過扮演該RAM角色擷取的且未到期的STS Token都將立即失效。
如果您還需要使用該RAM角色,您可以重新建立同名角色並授予相同的權限原則,使用新建立的RAM角色繼續完成您的任務。
STS Token的長度有最大值限制嗎?
阿里雲STS服務返回的安全性權杖(STS Token)的長度不固定,強烈建議您不要假設安全性權杖的最大長度。