RAM 角色与 RAM 用户一样,都是 RAM 中定义的身份。RAM 角色是一种虚拟用户,没有确定的身份认证密钥,需要被一个受信的实体用户扮演才能正常使用。

说明 如果没有特别说明,文中出现的角色都是指 RAM 角色

RAM 角色

RAM 角色(RAM-Role)是一种虚拟用户,它是 RAM 身份类型的一种。
图 1. RAM 角色


RAM 角色相关概念

与 RAM 角色相关的概念关系如下图所示:
图 2. RAM 角色相关概念


表 1. 相关概念的具体释义
名称 释义
RoleARN RoleARN 是角色的全局资源描述符,用来指定具体角色。
  • RoleARN 遵循阿里云 ARN 的命名规范。比如,某个云账号下的 devops 角色的 ARN 为:acs:ram::1234567890123456:role/samplerole
  • 创建角色后,单击角色名后,可在 基本信息页查看其 ARN。
受信实体 角色的受信实体是指可以扮演角色的实体用户身份。
  • 创建角色时必须指定受信实体,角色只能被受信的实体扮演。
  • 受信实体可以是受信的云账号,或者受信服务。
权限策略 一个角色可以绑定一组权限策略。没有绑定权限策略的角色也可以存在,但不能访问资源。
扮演角色 扮演角色(Assume Role)是实体用户获取角色身份的安全令牌的方法。一个实体用户通过调用 AssumeRole 的 API 可以获得角色的安全令牌,使用安全令牌可以访问云服务 API。
切换身份 切换身份(Switch Role)是在控制台中实体用户从当前登录身份切换到角色身份的方法。
  • 一个实体用户登录到控制台之后,可以切换到被许可扮演的某一种角色身份,然后以角色身份操作云资源。
  • 用户不需要使用角色身份时,可以从角色身份切换回原来的登录身份。
角色令牌 角色令牌是角色身份的一种临时访问密钥。角色身份没有确定的访问密钥,当一个实体用户要使用角色时,必须通过扮演角色来获取对应的角色令牌,然后使用角色令牌来调用阿里云服务 API。

使用须知

RAM 角色必须与一种实体用户身份联合起来才能使用。
图 3. 使用 RAM 角色


RAM 角色与教科书式角色的区别
  • RAM 角色:RAM 角色作为虚拟用户,它有确定的身份,可以被赋予一组权限策略,但它没有确定的身份认证密钥(登录密码或 AccessKey)。
  • 教科书式角色:教科书式角色(Textbook-Role)或传统意义上的角色是指一组权限集合,类似于 RAM 里的权限策略。如果一个用户被赋予了这种角色,也就意味着该用户被赋予了一组权限,可以访问被授权的资源。
虚拟用户与实体用户的区别
  • 实体用户:云账号、RAM用户账号、云服务账号作为实体用户,拥有确定的登录密码或 AccessKey。
  • 虚拟用户:RAM 角色作为虚拟用户,没有确定的认证密钥。RAM 角色需要被一个受信的实体用户扮演,扮演成功后实体用户将获得 RAM 角色的临时安全令牌,使用这个临时安全令牌就能以角色身份访问被授权的资源。

RAM 角色类型

RAM 支持以下两种类型的角色:

  • 用户角色:允许 RAM 用户所扮演的角色。扮演角色的 RAM 用户可以属于自己云账号,也可以是属于其他云账号。用户角色主要用来解决跨账号访问和临时授权问题。
  • 服务角色: 允许云服务所扮演的角色。服务角色主要用于授权云服务代理您进行资源操作。

创建 RAM 角色

通过 RAM 控制台来创建 RAM 角色包含以下步骤:

  1. 选择角色类型:用户角色或服务角色。
  2. 填写类型信息:选择受信的演员身份。
  3. 配置角色基本信息:填写角色名称。
  4. 给角色绑定授权策略。

创建用户角色

  1. 登录 RAM 控制台
  2. 单击角色管理 > 新建角色
  3. 选择角色类型子页,单击用户角色
  4. 填写类型信息子页,选择受信云账号。
    • 若创建的角色是给自己名下的 RAM 用户使用,请选择当前云账号为受信云账号。
    • 若创建的角色是给其他云账号名下的 RAM 用户使用,请选择其他云账号,并在受信云账号 ID 中填写其他云账号的 ID。
  5. 配置角色基本信息子页,输入角色名称备注后,单击 创建
    说明
    • 成功创建用户角色后,角色没有任何权限,单击授权可直接为该角色授权编辑授权策略,详情请参考授权
    • 成功创建用户角色后,单击其角色名称或其对应操作列下的管理,可以查看相应的角色详情。

创建服务角色

  1. 登录 RAM 控制台
  2. 单击角色管理 > 新建角色
  3. 选择角色类型子页,单击服务角色。可用的服务角色举例:
    • MTS 多媒体转码服务,用于将 OSS Bucket 设置为 MTS 任务的数据源时,创建以 MTS 为受信服务的角色,并使用 MTS 服务扮演该角色访问 OSS 中的数据。
    • OAS 归档存储服务,用于将 OSS Bucket 设置为归档存储服务的数据源时,创建以归档存储为受信服务的角色,并使用归档存储服务扮演该角色访问 OSS 中的数据
    • LOG 日志服务,用于将日志服务收集的日志导入 OSS 时,创建以日志服务为受信服务的角色,并使用日志服务扮演该角色将数据写入 OSS。
    • ApiGateway API 网关服务,用于将函数服务设置为 API 网关的后端服务时,创建以 API 网关服务为受信服务的角色,并使用 API 网关扮演该角色调用函数服务。
    • ECS 云服务器,用于授权 ECS 服务访问您在其他云服务中的云资源。
    说明 更多受信服务请以实际界面为准。
  4. 填写类型信息子页,选择受信服务。
  5. 配置角色基本信息子页,输入角色名称备注后,单击 创建
    说明
    • 成功创建用户角色后,角色没有任何权限,单击授权可直接为该角色授权编辑授权策略,详情请参考授权
    • 成功创建用户角色后,单击其角色名称或其对应操作列下的管理,可以查看相应的角色详情。

使用 RAM 角色

服务角色只能被受信云服务扮演,而用户角色可以通过 RAM 用户身份来扮演。
  1. 创建一个 RAM 用户,并为该用户创建 AccessKey 或设置登录密码。
  2. 给该 RAM 用户授权,授权时添加系统授权策略:AliyunSTSAssumeRoleAccess。
说明 为了安全起见,阿里云不允许受信云账号以自己身份扮演角色。必须使用 RAM 用户进行角色扮演。

根据使用方式的不同,RAM 用户可以使用控制台或 API 扮演 RAM 角色:

  • 使用控制台扮演 RAM 角色

    如果一个实体用户要想使用被赋予的某个 RAM 角色,实体用户必须先以自己身份登录,然后执行切换身份操作将自己从实体身份切换到角色身份。

    1. RAM 用户登录 RAM 控制台
    2. 将鼠标悬停在右上角头像的位置,单击切换身份
    3. 进入角色切换的页面,填写相应企业别名和角色名,单击切换
      说明
      • 切换成功后,用户将以角色身份访问控制台。此时控制台右上角将显示角色身份(即当前身份)和登录身份。
      • 切换成功后,用户将只能执行该角色身份被授权的所有操作,而登录时实体身份所对应的访问权限被隐藏。
    4. 在扮演角色身份时,选择返回登录身份可以切换回登录身份。
      说明 此时将拥有实体身份所对应的访问权限,而不再拥有角色身份所拥有的权限。
  • 使用 API 扮演 RAM 角色

    当 RAM 用户被授予 AssumeRole 权限之后,可以使用其 AccessKey 调用安全令牌服务(STS) 的 AssumeRole 接口,以获取某个角色的临时安全令牌,然后使用临时安全令牌访问云资源的 API 接口。

    关于 AssumeRole API 的调用方法,请参考AssumeRole

RAM 角色机制的适用场景