本文介绍当一个企业希望将部分业务授权给另一个企业时,使用 RAM 角色进行跨云账号授权来管理资源的授权及访问。

背景信息

云账号 A 和云账号 B 分别代表不同的企业。A 购买了多种云资源来开展业务,例如:ECS 实例、RDS 实例、SLB 实例以及 OSS 存储空间等。

  • 企业 A 希望能专注于业务系统,而将云资源运维、监控、管理等任务授权给企业 B。
  • 企业 B 还可以进一步将 A 的资源访问权限分配给 B 的某一个或多个员工,B 可以精细控制其员工对资源的操作权限。
  • 如果 A 和 B 的这种运维合同关系终止,A 随时可以撤销对 B 的授权。

需求分析

  • 账号 A 是资源 Owner,可以授权账号 B 来操作相应资源。
  • 账号 B 给其名下的 RAM 用户(代表员工或应用)进行授权,限制 RAM 用户对资源的访问能力。当 B 的员工加入或离职时,A 无需做任何权限变更。
  • 如果双方业务终止,A 随时可以撤销对 B 的授权。

解决方案

针对以上需求,使用 RAM 角色可以实现跨账号授权及资源访问的控制。

  • 云账号 A 在 RAM 中创建一个角色,给角色授予合适的权限,并允许云账号 B 使用该角色。

    操作流程见跨账号授权

  • 如果云账号 B 下的某个员工(RAM 用户)需要使用该角色,那么云账号 B 可以自主进行授权控制。账号 B 下的 RAM 用户将使用被授予的角色身份来操作账号 A 的资源。

    操作流程见 跨账号资源访问

  • 如果账号 A 与账号 B 的合作终止,A 只需要撤销账号 B 对该角色的使用。此时账号 B 下的所有 RAM 用户对该角色的使用权限将被自动撤销。

    操作流程见撤销跨账号授权

跨账号授权

假设企业 A(AccountID=11223344,别名 company-a)需要授权企业 B(AccountID=12345678,别名 company-b)的员工对其 ECS 进行操作。
图 1. 使用 RAM 角色跨账号授权
使用RAM角色跨账号授权
  1. 云账号 A 创建用户 RAM 角色 ecs-admin,并选择其他云账号:12345678 作为受信云账号。

    具体操作请参考角色

    角色创建成功后,在角色详情中可以查看到该角色的基本信息:

    • 角色的 ARN 如下:
      acs:ram::11223344:role/ecs-admin
    • 角色的信任策略(只允许企业 B 来扮演角色)如下:
      {
      "Statement": [
      {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
         "RAM": [
           "acs:ram::12345678:root"
         ]
       }
      }
      ],
      "Version": "1"
      }
  2. 云账号 A 给角色 ecs-admin 授权AliyunECSFullAccess

    具体操作请参考授权

  3. 云账号 B 为其员工创建 RAM 用户 zhangsan,并为该 RAM 用户设置登录密码及授予AliyunSTSAssumeRoleAccess(调用 STS AssumeRole 接口)的系统策略。

跨账号资源访问

通过对云账户 B 的 RAM 用户 zhangsan 进行授权后,RAM 用户通过控制台可以访问云账号 A 的 ECS 资源。

  1. 云账号 B 的 RAM 用户 zhangsan 登录 RAM 控制台

    子用户登录时需输入企业别名:company-b、子用户名称:zhangsan 和子用户密码:123456。

  2. 登录成功后,将鼠标悬停在右上角头像的位置,单击切换身份

    进入身份切换页面,输入正确的企业别名:company-a 和角色名:ecs-admin,进行角色切换。

说明 切换成功后,云账号 B 的 RAM 用户便可以操作云账号 A 下的 ECS 资源。

撤销跨账号授权

云账号 A 也可以撤销云账号 B 对角色 ecs-admin 的使用。

  1. 云账号 A 登录 RAM 控制台,在角色管理 页面找到角色 ecs-admin,单击其角色名称。
  2. 单击角色授权策略,单击解除授权