本文介绍了一些RAM角色和STS token的常见问题,为您提供说明和指导。

RAM角色有几种类型?

根据RAM可信实体的不同,RAM支持以下三种类型的角色:

  • 阿里云账号
  • 阿里云服务
  • 身份提供商

三种类型的RAM角色分别可以被谁扮演?

  • 阿里云账号:允许RAM用户所扮演的角色。扮演角色的RAM用户可以属于自己的云账号,也可以属于其他云账号。此类角色主要用来解决跨账号访问和临时授权问题。
  • 阿里云服务:允许云服务所扮演的角色。特别的是,ECS实例RAM角色也属于这个类型,其可信实体为ECS服务,详情请参见借助于实例RAM角色访问其他云产品。此类角色主要用于授权云服务代理您进行资源操作。
  • 身份提供商:允许受信身份提供商下的用户所扮演的角色。此类角色主要用于实现与阿里云的SSO。

能否指定RAM用户具体可以扮演哪个RAM角色?

您也可以通过创建自定义策略指定RAM用户具体可以扮演的RAM角色。策略示例如下所示:

{
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "acs:ram:*:$accountId:role/$roleName"
        }
    ],
    "Version": "1"
}
说明
  • 上述自定义策略中的Resource为角色ARN,如何查看角色ARN请参见如何查看RAM角色的ARN?其中,$accountId为云账号ID,$roleName为RAM角色名称。
  • 将上述自定义策略授权给RAM用户,便可以指定具体可以扮演的RAM角色。关于如何为RAM用户授权,请参见为RAM用户授权

如何查看RAM角色的ARN?

您可以登录RAM控制台,在RAM角色管理页签下,单击目标RAM角色名称,在基本信息区域下查看角色ARN。


 RAM角色ARN

为什么使用STS时会报错?

STS使用Java SDK生成临时账号密码报错的信息如下所示:

Error message: You are not authorized to do this action. You should be authorized by RAM.

出现上述现象是因为进行授权的RAM用户没有相应的权限,因此使用时系统会报错。

请为RAM用户添加系统策略(AliyunSTSAssumeRoleAccess)或自定义策略,详情请参见能否指定RAM用户具体可以扮演哪个RAM角色?

STS服务调用次数是否有上限?

STS服务有流控限制:100QPS。当请求量超过100时,超出部分会报错,报错信息如下:

Request was denied due to user flow control

STS token的权限限制是什么?

STS token的权限:指定角色的权限与调用AssumeRole接口时所设置的Policy的交集。

说明 若在调用AssumeRole接口时不设置Policy参数,则返回的STS token将拥有指定角色的所有权限。

STS token的有效期是多久?

STS token的有效期为900秒~3600秒,默认值为3600秒。

说明 您可以在调用AssumeRole接口时设置DurationSeconds参数来限制STS token的有效时间。

STS获取的多个token是否同时有效?

STS token在过期之前都是有效的,无论是否创建了新的STS token。