跨阿里云账号任务如何配置RAM授权

本文介绍在使用数据传输服务DTS(Data Transmission Service)配置跨阿里云账号的任务时,如何为源或目标库实例所属的阿里云账号配置RAM授权。

背景信息

在使用DTS配置跨账号任务时,需要使用数据库实例所属的阿里云账号(主账号)配置RAM授权,将创建DTS任务的阿里云账号(主账号)作为授信云账号,允许其通过数据传输服务访问数据库实例所属阿里云账号的相关云资源。

支持的数据库

在配置DTS任务时,支持配置是否跨阿里云账号的数据库如下表所示。

说明

源库是否跨阿里云账号的配置结果,不影响目标库数据库类型的选项。

数据库实例

阿里云数据库

自建数据库

源库

RDS MySQLRDS MariaDBRDS PostgreSQLRDS SQL ServerPolarDB-X 1.0PolarDB-X 2.0PolarDB PostgreSQL版PolarDB PostgreSQL版(兼容Oracle)PolarDB MySQL版云数据库Redis云原生内存数据库Tair云数据库MongoDB版、云数据库OceanBase版(MySQL模式)、AnalyticDB MySQL版 3.0集群。

  • 通过专线、VPN网关、智能网关接入的MySQL、Mariadb、PostgreSQL、PolarDB PostgreSQL版(兼容Oracle)、Redis、MongoDB、Oracle、SQL Server、Db2 for LUWDb2 for i、OceanBase(MySQL模式)数据库。

  • 通过ECS自建数据库接入的自建MySQL、Mariadb、Redis、MongoDB、Db2 for LUW、OceanBase(MySQL模式)数据库。

  • 通过云企业网CEN接入的自建Redis、MongoDB数据库。

  • 通过数据库网关DG接入的自建Redis数据库。

目标库

RDS MySQLPolarDB MySQL版、云数据库SelectDB版、云数据库Redis云原生内存数据库Tair云数据库ClickHouseAnalyticDB MySQL版 3.0集群。

暂不支持。

前提条件

  • 源和目标库实例所属的阿里云账号已经授权DTS的RAM角色访问其云资源,详情请参见授予DTS访问云资源的权限

  • 已获取源库实例、目标库实例和创建DTS任务的阿里云账号(主账号)ID。您可以使用对应的阿里云账号(主账号)登录概览页面,在页面右侧获取账号ID

注意事项

  • 当前仅RDS MySQL实例间、云原生内存数据库Tair(含企业版的云数据库Redis)实例间,支持跨账号的双向同步任务。

  • 暂不支持不同属性账号之间(如金融云和政务云账号之间)的同步任务。

操作步骤

  1. 为数据库实例创建RAM角色。

    说明
    • 若使用RAM用户(子账号)进行操作,则可能会在创建DTS任务时提示授权不正确。

    • DTS实例中无需跨阿里云账号(是否跨阿里云账号选择为不跨账号或者无该配置项)的数据库实例不需要创建RAM角色。

    1. 使用数据库实例所属的阿里云账号(主账号),登录RAM控制台

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

      身份管理-角色-new-zh.jpg

      重要

      请勿选择为身份管理 > 用户,否则DTS将无法访问数据库实例并报错。

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

    4. 创建角色面板,选择可信实体类型为阿里云账号,然后单击下一步创建角色

    5. 在弹出的对话框中,配置RAM角色信息。信任账号

      配置选项

      配置说明

      角色名称

      填写RAM角色名称,本示例填写ram-for-dts

      说明

      可以填写大写英文、小写英文、数字或短横线(-),长度不超过64个字符。

      备注(可选)

      填写RAM角色备注信息。

      选择信任的云账号

      选择为其他云账号,并填写创建DTS任务的阿里云账号(主账号)ID作为授信云账号。

    6. 单击完成

  2. 为创建好的RAM角色精确授权。

    1. 单击精确授权创建角色

    2. 权限管理页签,单击精确授权

      image

    3. 精确授权面板中,勾选选择权限类型系统策略

      image

    4. 输入策略名称下方的文本框中,输入AliyunDTSRolePolicy

    5. 单击确定

    6. 精确授权成功后,单击关闭

  3. 修改信任策略。

    1. (可选)角色页面,找到刚刚创建的RAM角色,单击对应的RAM角色名称。

      image

    2. 在RAM角色的基本信息页面,单击信任策略页签。

      image

    3. 信任策略页签中,单击编辑信任策略

    4. 将下述代码复制至策略框中。

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "RAM": [
                          "acs:ram::<阿里云账号ID>:root"
                      ],
                      "Service": [
                          "<阿里云账号ID>@dts.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
    5. 将代码中两个<阿里云账号ID>替换为创建DTS任务的阿里云账号(主账号)ID。

    6. 单击保存信任策略

后续操作

完成RAM授权后,您可以创建跨阿里云账号的任务。具体操作,请参见同步方案概览迁移方案概览订阅方案概览中的相关配置文档。

重要
  • 您需要使用信任策略中配置的<阿里云账号ID>,登录控制台创建DTS任务。

  • 是否跨阿里云账号选择为跨账号跨阿里云账号填入数据库实例所属阿里云账号(主账号)的UID;跨阿里云账号角色名填入数据库实例所属云账号配置的角色名称(本示例填写准备工作中创建的ram-for-dts)。

常见问题

  • 如何在跨账号任务中使用各阿里云账号?

    在跨账号任务中,各阿里云账号的用途与跨阿里云账号的数据库相关,存在以下三种情况。

    说明
    • 使用的阿里云账号均为阿里云账号(主账号)。

    • 跨阿里云账号的数据库:配置DTS任务时,是否跨阿里云账号选择为跨账号的数据库。

    • 目前仅目标库为RDS MySQL云数据库ClickHouse时,支持配置是否跨阿里云账号

    表格使用示例:首先需要确认跨账号的是源库还是目标库,然后通过跨阿里云账号的数据库列寻找目标行,查看各阶段使用到的阿里云账号。

    跨阿里云账号的数据库

    登录RAM控制台的阿里云账号

    信任策略中填入的阿里云账号

    创建DTS任务的阿里云账号

    DTS任务填入的跨阿里云账号

    源库

    源库所属的阿里云账号

    目标库所属的阿里云账号

    目标库所属的阿里云账号

    源库信息跨阿里云账号填入源库所属的阿里云账号

    目标库

    目标库所属的阿里云账号

    源库所属的阿里云账号

    源库所属的阿里云账号

    目标库信息跨阿里云账号填入目标库所属的阿里云账号

    源库和目标库

    源库和目标库所属的阿里云账号

    指定的阿里云账号

    指定的阿里云账号

    • 源库信息跨阿里云账号填入源库所属的阿里云账号

    • 目标库信息跨阿里云账号填入目标库所属的阿里云账号

  • 如何处理配置跨账号任务时出现的报错?

    以下为配置跨账号任务时,出现的常见告警信息及对应解决办法:

    告警信息

    解决办法

    UID错误提示_zh

    您填写的跨阿里云账号有误,请检查数据库实例所属阿里云账号(主账号)的UID是否填写正确。更多信息,请参见准备工作

    角色名错误

    image

    可能原因如下:

    • 您填写的跨阿里云账号角色名有误:请检查数据库实例所属阿里云账号(主账号)的RAM角色名称是否填写正确。

    • RAM角色精确授权不正确:请使用数据库实例所属的阿里云账号(主账号)进行授权操作。

    说明

    更多信息,请参见准备工作

    RAM

    可能原因如下:

    • 您填写的跨阿里云账号角色名有误:请检查数据库实例所属阿里云账号(主账号)的角色名称是否填写正确。

    • RAM角色未完成精确授权:请检查RAM角色是否正确完成精确授权。

    • RAM角色未修改信任策略:请检查RAM角色是否正确修改信任策略。

    说明

    请参考准备工作进行检查。

    没有权限

    您填写的跨阿里云账号角色名没有精确授权,请为填写的RAM角色精确授权后重新创建任务。以源数据库为例,授权操作请参见为已有RAM角色精确授权

    image

    您填写的跨阿里云账号角色名有误,请勿填写DTS系统的默认角色AliyunDTSDefaultRole,请填写在准备工作中创建的RAM角色。

为已有RAM角色精确授权

  1. 使用源实例所属的阿里云账号(主账号),登录RAM控制台

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

  3. 创建角色右侧输入目标RAM角色并搜索。

  4. 在目标行的操作列,单击精确授权

  5. 添加权限界面输入策略名称下方,输入AliyunDTSRolePolicy

    说明

    选择权限类型默认选择为系统策略

  6. 单击确认