本文介绍了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)的长度不固定,强烈建议您不要假设安全令牌的最大长度。