跨账号协同使用DMS

DMS中,不同阿里云账号(主账号)的资源相互隔离。如果您需要访问其他主账号在DMS中的资源,或者需要将自身主账号的阿里云资源录入到其他主账号的DMS中,则需要进行跨账号访问或录入资源操作。本文为您介绍如何进行跨账号访问资源和录入资源。

跨阿里云账号录入实例

注意事项

  • 通过角色ARN录入实例功能目前正在逐步灰度中,如果您有使用需求,请联系DMS技术支持。

  • 目前仅支持跨账号录入阿里云实例。

  • 在进行跨账号录入实例操作时,DMS要求资源归属者必须登录过DMS

授权操作

说明

跨账号录入实例前,需要为跨账号录入实例的RAM用户授予管理DMS资源、在DMS录入的数据库实例类型等权限。

假设阿里云账号(主账号)A需要录入阿里云账号(主账号)B的资源至A所在的DMS租户,则阿里云账号(主账号)BRAM用户(子账号)需要在RAM控制台进行如下操作:

  1. 使用资源归属者B的阿里云账号(主账号)下拥有AliyunRAMFullAccess权限的RAM用户(子账号)登录RAM控制台

  2. 角色页面,新建RAM角色并为用户A设置信任策略。您可通过如下任一方式进行操作:

    方式一:可视化编辑

    1. 创建角色页面,单击切换编辑器

      image

    2. 可视化编辑页签下,主体选择云服务。配置项说明如下:

      • 其他云账号下方的文本框填入主账号AUID。

      • 云服务选择数据管理/DMSEnterprise

        image

    3. 单击确定

    方式二:脚本编辑

    1. 创建角色页面,单击切换编辑器

      image

    2. 脚本编辑页签下,填入相关的策略。

      策略含义:为跨账号录入实例的用户设置信任策略,允许指定用户管理资源。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "<主账号AUID>@dms.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
    3. 单击确定

  3. 权限策略页面,创建权限策略。例如DmsCrossAccountPolicy

    目前,在权限策略中支持设置的数据库类型和接入方式(VPC专线)如下:RedisPolarDB分布式版、OceanBase、LindormHologresGDBSelectDB、ClickHouse企业版。

    单击此处查看各数据库的权限策略信息。

    Redis

    {
      "Statement": [
        {
          "Action": [
            "kvstore:DescribeSecurityIps",
            "kvstore:ModifySecurityIps",
            "kvstore:DescribeRegions",
            "kvstore:DescribeInstances",
            "kvstore:DescribeInstanceAttribute",
            "kvstore:DescribeInstanceConfig"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    PolarDB-X 1.0

    {
      "Statement": [
        {
          "Action": [
            "drds:DescribeDrdsInstances",
            "drds:QueryInstanceInfoByConn",
            "drds:DescribeDrdsInstanceList",
            "drds:DescribeDrdsDBIpWhiteList",
            "drds:ModifyDrdsIpWhiteList",
            "drds:DescribeDrdsInstanceVersion"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    PolarDB-X 2.0

    {
      "Statement": [
        {
          "Action": [
            "polardbx:DescribeDBInstances",
            "polardbx:DescribeSecurityIps",
            "polardbx:ModifySecurityIps",
            "polardbx:DescribeDBInstanceAttribute",
            "polardbx:DescribeDBInstanceViaEndpoint"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    OceanBase

    {
      "Statement": [
        {
          "Action": [
            "oceanbase:DescribeAllTenantsConnectionInfo",
            "oceanbase:DescribeInstances"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    Lindorm

    {
      "Statement": [
        {
          "Action": [
            "lindorm:GetLindormInstanceList",
            "lindorm:GetLindormInstance",
            "lindorm:GetLindormInstanceListForDMS",
            "lindorm:GetLindormInstanceForDMS",
            "lindorm:GetLindormInstanceForDMSByConnStr",
            "lindorm:GetInstanceIpWhiteList",
            "lindorm:UpdateInstanceIpWhiteList"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    Hologres

    {
      "Statement": [
        {
          "Action": [
            "hologram:GetInstance",
            "hologram:ListInstances"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    GDB

    {
      "Statement": [
        {
          "Action": [
            "gdb:DescribeDbInstances"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    SelectDB

    {
      "Statement": [
        {
          "Action": [
            "selectdb:DescribeDBInstances",
            "selectdb:DescribeDBInstanceAttribute",
            "selectdb:DescribeDBInstanceNetInfo",
            "selectdb:DescribeSecurityIPList",
            "selectdb:ModifySecurityIPList"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    ClickHouse企业版

    {
      "Statement": [
        {
          "Action": [
            "clickhouse:DescribeDBClusters",
            "clickhouse:DescribeDBInstances",
            "clickhouse:DescribeDBInstanceAttribute",
            "clickhouse:DescribeEndpoints",
            "clickhouse:DescribeSecurityIPList",
            "clickhouse:ModifySecurityIPList"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }

    示例策略含义:指定在DMS通过VPC专线录入数据库。

    {
      "Statement": [
        {
          "Action": [
            "vpc:DescribeVpcs"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ],
      "Version": "1"
    }
  4. 角色页面,为步骤2中创建的角色授予DmsCrossAccountPolicy权限。更多信息,请参见RAM角色授权

  5. 角色页面,单击角色名称,在角色详情页面复制ARN

    image

录入实例

用户A录入数据库时,填入角色ARN。

说明

通过角色ARN录入实例的方式正在灰度中。

image

跨阿里云账号访问实例资源

说明

如果您需要跨阿里云账号访问DMS中的实例资源,请根据如下内容进行操作。

前提条件

访问资源的用户A与资源归属者B所属的阿里云账号(主账号)不同,且归属者BDMS内有对应的租户。

授予访问者权限

  1. 使用资源归属者的阿里云账号(主账号)B下拥有AliyunRAMFullAccess权限的RAM用户(子账号)登录RAM控制台

  2. 角色页面新建RAM角色

    说明

    其他云账号参数区域填入需要访问资源的阿里云账号(主账号)UID。

    image

  3. 角色页面,为步骤2中创建的角色授予AliyunDMSLoginConsoleAccess(登录DMS控制台)权限。更多信息,请参见RAM角色授权

访问DMS资源

  1. 使用阿里云账号(主账号)A下拥有AliyunSTSAssumeRoleAccess权限的RAM用户(子账号)登录阿里云控制台

  2. 单击右上角的头像,切换身份信息。

    image

  3. 输入资源归属者B的阿里云账号(主账号)UID,以及创建的角色名称。

    image

  4. 单击提交

  5. 完成身份切换后,再访问数据管理DMS 5.0

    说明

    当您访问DMS时,DMS会自动将您设置为普通用户。如需对实例资源进行变更、导出操作,需要您在DMS额外申请资源权限

相关文档

云数据库录入