本文介绍了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.
出现该问题的原因及解决方法如下:
- 该RAM用户缺少允许STS扮演角色的权限策略。
请为该RAM用户添加系统策略(AliyunSTSAssumeRoleAccess)或自定义策略。更多信息,请参见为RAM用户授权或能否指定RAM用户具体可以扮演哪个RAM角色。
- RAM角色的信任策略不包含您正在使用的RAM用户,即RAM角色不允许该RAM用户扮演。
请为RAM角色添加允许该RAM用户扮演的信任策略。更多信息,请参见修改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?
- 登录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的权限:指定角色的权限与调用AssumeRole接口时所设置的Policy
的交集。
STS Token的有效期是多久?
STS Token的有效期最小值为900秒,最大值为角色最大会话时间设置的值,默认值为3600秒。
- 您可以通过AssumeRole接口的DurationSeconds参数来限制STS Token的有效期。
- 您可以通过控制台或API设置角色最大会话时间。更多信息,请参见设置角色最大会话时间。
STS获取的多个Token是否同时有效?
STS Token在过期之前都是有效的,无论是否创建了新的STS Token。
STS Token发生泄露时如何处理?
如果您通过扮演RAM角色获取的安全令牌(STS Token)发生泄露,您可以按以下步骤回收所有已经颁发的STS Token。
- 使用阿里云账号登录RAM控制台。
- 移除RAM角色的所有权限策略。
具体操作,请参见为RAM角色移除权限。
- 删除RAM角色。
具体操作,请参见删除RAM角色。
删除RAM角色后,所有通过扮演该RAM角色获取的且未过期的STS Token都将立即失效。
如果您还需要使用该角色,您可以重新创建同名角色并授权相同的权限策略,使用新创建的角色继续完成您的任务。
STS Token的长度有最大值限制吗?
阿里云STS服务返回的安全令牌(STS Token)的长度不固定,强烈建议您不要假设安全令牌的最大长度。