本文介紹了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.

出現該問題的原因及解決方法如下:

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?

  1. 登錄RAM控制臺
  2. 在左側導航欄,選擇身份管理 > 角色。
  3. 單擊目標RAM角色名稱。
  4. 基本信息區域,查看RAM角色ARN。 RAM角色ARN

STS服務調用次數是否有上限?

AssumeRole接口調用次數上限:100次/秒。一個阿里云賬號及該賬號下的RAM用戶、RAM角色共用該接口調用次數上限。

當請求量超過上限時,會返回以下報錯信息:

  • 錯誤信息
    錯誤碼錯誤信息
    Throttling.ApiRequest was denied due to api flow control.
    Throttling.UserRequest was denied due to user flow control.
    ThrottlingRequest was denied due to flow control.
  • 302狀態碼

當出現以上報錯信息時,請您減少并發調用次數。如果您的業務場景確實需要更高的并發調用次數,您可以提交工單申請配額。

STS Token的權限限制是什么?

STS Token的權限:指定角色的權限與調用AssumeRole接口時所設置的Policy的交集。

說明 若在調用AssumeRole接口時不設置Policy參數,則返回的STS Token將擁有指定角色的所有權限。

STS Token的有效期是多久?

STS Token的有效期最小值為900秒,最大值為角色最大會話時間設置的值,默認值為3600秒。

說明
  • 您可以通過AssumeRole接口的DurationSeconds參數來限制STS Token的有效期。
  • 您可以通過控制臺或API設置角色最大會話時間。更多信息,請參見設置角色最大會話時間。

STS獲取的多個Token是否同時有效?

STS Token在過期之前都是有效的,無論是否創建了新的STS Token。

STS Token發生泄露時如何處理?

如果您通過扮演RAM角色獲取的安全令牌(STS Token)發生泄露,您可以按以下步驟回收所有已經頒發的STS Token。

  1. 使用阿里云賬號登錄RAM控制臺
  2. 移除RAM角色的所有權限策略。

    具體操作,請參見為RAM角色移除權限。

  3. 刪除RAM角色。

    具體操作,請參見刪除RAM角色

    刪除RAM角色后,所有通過扮演該RAM角色獲取的且未過期的STS Token都將立即失效。

如果您還需要使用該角色,您可以重新創建同名角色并授權相同的權限策略,使用新創建的角色繼續完成您的任務。

STS Token的長度有最大值限制嗎?

阿里云STS服務返回的安全令牌(STS Token)的長度不固定,強烈建議您不要假設安全令牌的最大長度。