跨账号迁移RAM角色授权策略

更新时间:

跨账号迁移是指不同账号之间Bucket的数据迁移。本文介绍跨账号迁移如何为RAM角色授予权限。

前提条件

说明

如果登录控制台的账号与源账号、目的账号以及清单存储账号相同,请参考同账号迁移创建RAM角色并授权策略。关于清单存储的源类型,包括AWS S3 Inventory、HTTP/HTTPS和Alibaba OSS Inventory。如果清单存储的账号D仅在清单列表位置选择OSS,并且与登录控制台账号不同时,则可参考跨账号迁移。

本文所涉及的账号和 Bucket 如下:

  • 账号A用于登录迁移控制台、创建源以及目标的数据地址和迁移任务。

  • 已在账号B下的某个地域创建Bucket B作为跨账号迁移的源Bucket,并记录账号B的UID、Bucket B的名称及所在地域。

  • 已在账号C下的某个地域创建Bucket C作为跨账号迁移的目标Bucket,并记录账号C的UID、Bucket C的名称及所在地域。

  • 已在账号D下的某个地域创建Bucket D作为跨账号迁移的清单存储Bucket,并记录账号D的UID、Bucket D的名称及所在地域。

创建用于迁移数据的RAM角色

鉴于授权阿里云账号需要使用AK和SK,为了确保数据安全,建议您创建RAM角色,并按照最小权限原则对该RAM角色进行授权策略,以便进行数据迁移。

说明

若需进行跨账号数据迁移,请根据实际情况建议在账号A下分别创建对应源阿里云账号B的RAM角色Role-B、目标阿里云账号C的RAM角色Role-C,以及清单存储账号D的RAM角色Role-D,并分别授予相关权限策略。

  1. 通过账号A 登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 角色

  3. 在角色页面,单击创建角色

  4. 创建角色页面的选择可信实体类型区域,选择阿里云服务,点击下一步。

  5. 在已选择可信实体类型区域,选择普通服务角色,输入角色名称和选择受信服务(在线迁移服务)。

通过OSS控制台给迁移的RAM角色授予策略

重要

通过Bucket Policy按语法策略的方式进行授权时,新添加的策略会覆盖已有的策略,请确保新添加策略包含已有策略的内容,否则可能导致关联已有策略的操作失败。实际使用时,请相应替换自定义角色名称(如果自定义角色名称包含大写字母,需转换为对应的小写字母。例如已创建的角色名称为AliyunSrcRoleA,您需要转换为aliyunsrcrolea)。

通过源阿里云账号B给登录控制台账号A的RAM角色Role-B授权

  • 登录OSS 控制台账号B,进入迁移的Bucket B界面

  • 在左侧导航栏,选择权限控制 > Bucket 授权策略

  • 在语法策略添加中,增加以下Bucket Policy。

    • 自定义策略:

      授予RAM角色列举并读取源数据所在Bucket-B下所有资源的权限

      说明

      以下权限策略仅供您参考,其中<mybucket>为源账号B下的Bucket-B,<myuid>为源账号B的UID,<uid>为登录控制台账号A的UID,<rolename>为账号A下的RAM角色名称Role-B,请根据实际值替换。关于OSS权限策略的更多信息,请参见RAM Policy常见示例

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "oss:List*",
              "oss:Get*"
            ],
            "Principal": [
               "arn:sts::<uid>:assumed-role/<rolename>/*"
            ],
            "Resource": [
              "acs:oss:*:<myuid>:<mybucket>",
              "acs:oss:*:<myuid>:<mybucket>/*"
            ]
          }
        ]
      }

通过目标阿里云账号C给登录控制台账号A的RAM角色Role-C授权

  • 登录OSS控制台账号C,进入迁移的Bucket C界面

  • 在左侧导航栏,选择权限控制 > Bucket 授权策略

  • 在语法策略添加中,增加以下Bucket Policy。

    • 自定义策略:

      授予RAM角色对存放迁移后数据的Bucket-C下所有资源进行列举、读取、删除和写操作的权限。

      说明

      以下权限策略仅供您参考,其中<mybucket>为目标账号C下的Bucket-C,<myuid>为目标账号C的UID,<uid>为登录控制台账号A的UID,<rolename>为账号A下的RAM角色名称Role-C,请根据实际值替换。关于OSS权限策略的更多信息,请参见RAM Policy常见示例

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "oss:List*",
              "oss:Get*",
              "oss:Put*",
              "oss:AbortMultipartUpload"
            ],
            "Principal": [
               "arn:sts::<uid>:assumed-role/<rolename>/*"
            ],
            "Resource": [
              "acs:oss:*:<myuid>:<mybucket>",
              "acs:oss:*:<myuid>:<mybucket>/*"
            ]
          }
        ]
      }

通过清单存储阿里云账号D给登录控制台账号A的RAM角色Role-D授权

  • 登录OSS 控制台账号D,进入迁移的Bucket D界面

  • 在左侧导航栏,选择权限控制 > Bucket 授权策略

  • 在语法策略添加中,增加以下Bucket Policy。

    • 自定义策略:

      授予RAM角色列举并读取清单所在Bucket-D下所有资源的权限

      说明

      以下权限策略仅供您参考,其中<mybucket>为源账号D下的Bucket-D,<myuid>为源账号D的UID,<uid>为登录控制台账号A的UID,<rolename>为账号A下的RAM角色名称Role-D,请根据实际值替换。关于OSS权限策略的更多信息,请参见RAM Policy常见示例

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "oss:List*",
              "oss:Get*"
            ],
            "Principal": [
               "arn:sts::<uid>:assumed-role/<rolename>/*"
            ],
            "Resource": [
              "acs:oss:*:<myuid>:<mybucket>",
              "acs:oss:*:<myuid>:<mybucket>/*"
            ]
          }
        ]
      }