本文介紹了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)該問題的原因及解決方法如下:

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?

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

STS服務調(diào)用次數(shù)是否有上限?

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

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

  • 錯誤信息
    錯誤碼錯誤信息
    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狀態(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的交集。

說明 若在調(diào)用AssumeRole接口時不設(shè)置Policy參數(shù),則返回的STS Token將擁有指定角色的所有權(quán)限。

STS Token的有效期是多久?

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

說明

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

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

STS Token發(fā)生泄露時如何處理?

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

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

    具體操作,請參見為RAM角色移除權(quán)限

  3. 刪除RAM角色。

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

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

如果您還需要使用該角色,您可以重新創(chuàng)建同名角色并授權(quán)相同的權(quán)限策略,使用新創(chuàng)建的角色繼續(xù)完成您的任務。

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

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