本文介绍在使用数据传输服务DTS(Data Transmission Service)配置跨阿里云账号的任务时,如何为数据库实例所属的阿里云账号配置RAM授权。
若您无需了解背景信息,可直接根据跨阿里云账号任务的使用场景(是否跨阿里云账号选择为跨账号的数据库实例)配置RAM授权。更多信息,请参见场景一:源库跨账号、场景二:目标库跨账号、场景三:源库和目标库均跨账号。
背景信息
在使用DTS配置跨账号(是否跨阿里云账号选择为跨账号)的任务前,您需要进行相应的RAM授权操作,以将创建DTS任务的阿里云账号(主账号)作为授信云账号,从而允许其通过数据传输服务访问数据库实例所属阿里云账号的相关云资源。
什么是跨账号任务
跨账号任务又称为跨阿里云账号任务,指的是源库或目标库实例属于其他阿里云账号(而不属于创建DTS任务的阿里云账号)的DTS任务。
跨账号任务的场景
对于创建DTS任务(登录DTS控制台)的阿里云账号而言,跨账号任务涉及三种不同的场景。
更多关于账号的信息,请参见账号信息。
|
场景 |
场景说明 |
配置说明 |
|
源库跨账号 |
源库是否跨阿里云账号选择跨账号,且目标库是否跨阿里云账号选择不跨账号。 |
使用源库账号A配置RAM授权,使用目标库账号B创建DTS任务。 |
|
目标库跨账号 |
源库是否跨阿里云账号选择不跨账号,且目标库是否跨阿里云账号选择跨账号。 |
使用目标库账号B配置RAM授权,使用源库账号A创建DTS任务。 |
|
源库和目标库均跨账号 |
源库和目标库的是否跨阿里云账号均选择跨账号。 |
分别使用源库账号A和目标库账号B配置RAM授权,使用指定的账号C创建DTS任务。 |
支持跨账号访问的数据库
数据库实例是否支持跨账号访问,仅与数据实例的数据库类型和接入方式有关。支持跨账号的数据库实例,如下表所示。
源库是否跨阿里云账号的配置结果,不影响目标库数据库类型的选项。
源库
|
数据库类型 |
接入方式 |
|
MySQL |
云实例、专线/VPN网关/智能网关、ECS自建数据库 |
|
PolarDB for MySQL |
云实例 |
|
Tair/Redis |
云实例、专线/VPN网关/智能网关、ECS自建数据库、云企业网CEN、数据库网关DG |
|
SQLServer |
云实例、专线/VPN网关/智能网关 |
|
PostgreSQL |
云实例、专线/VPN网关/智能网关 |
|
MongoDB |
云实例、专线/VPN网关/智能网关、ECS自建数据库、云企业网CEN 重要
当源库为通过专线/VPN网关/智能网关接入的MongoDB版(分片集群架构)实例时,暂不支持跨账号配置。 |
|
Oracle |
专线/VPN网关/智能网关 |
|
PolarDB(兼容Oracle) |
云实例、专线/VPN网关/智能网关 |
|
PolarDB for PostgreSQL |
云实例 |
|
PolarDB-X 1.0 |
云实例 |
|
PolarDB-X 2.0 |
云实例 |
|
DB2 iSeries(AS/400) |
专线/VPN网关/智能网关 |
|
DB2 LUW |
专线/VPN网关/智能网关、ECS自建数据库 |
|
Mariadb |
云实例、专线/VPN网关/智能网关、ECS自建数据库 |
|
OceanBase(MySQL) |
云实例、专线/VPN网关/智能网关、ECS自建数据库 |
|
SLS |
云实例 |
|
AnalyticDB MySQL 3.0 |
云实例 |
|
Kafka |
云实例、专线/VPN网关/智能网关、ECS自建数据库 |
目标库
|
数据库类型 |
接入方式 |
|
MySQL |
云实例 |
|
PolarDB for MySQL |
云实例 |
|
AnalyticDB MySQL 3.0 |
云实例 |
|
Tair/Redis |
云实例 |
|
ClickHouse |
云实例 |
|
SelectDB |
云实例 |
|
MongoDB |
云实例 |
账号信息
在跨账号任务中,各阿里云账号(源库、目标库、DTS任务所属的阿里云账号)的用途与跨阿里云账号的数据库相关,存在以下三种情况。
跨阿里云账号的数据库:配置DTS任务时,是否跨阿里云账号选择为跨账号的数据库。可作为判断跨阿里云账号任务场景的依据。
表格使用示例:首先需要确认跨账号的是源库还是目标库,然后通过跨阿里云账号的数据库列寻找目标行,查看各阶段使用到的阿里云账号。
|
跨阿里云账号的数据库 |
登录RAM控制台的阿里云账号 |
信任策略中填入的阿里云账号 |
创建DTS任务的阿里云账号 |
DTS任务填入的跨阿里云账号 |
|
源库 |
源库所属的阿里云账号 |
目标库所属的阿里云账号 |
目标库所属的阿里云账号 |
源库信息:跨阿里云账号填入源库所属的阿里云账号 |
|
目标库 |
目标库所属的阿里云账号 |
源库所属的阿里云账号 |
源库所属的阿里云账号 |
目标库信息:跨阿里云账号填入目标库所属的阿里云账号 |
|
源库和目标库 |
源库和目标库所属的阿里云账号 |
指定的阿里云账号 |
指定的阿里云账号 |
|
配置流程
-
确认跨阿里云账号任务的场景。
根据是否跨阿里云账号选择为跨账号的数据库实例,判断跨阿里云账号任务的使用场景。
-
获取阿里云账号(主账号)ID。
获取数据库实例和创建DTS任务的阿里云账号(主账号)ID。
-
创建RAM角色。
使用数据库实例所属的阿里云账号(主账号),创建配置任务所需的RAM角色。
-
精确授权。
为创建好的RAM角色精确授权。
-
修改信任策略。
修改RAM角色的信任策略。
前提条件
数据库实例所属的阿里云账号已授予DTS访问云资源的权限。
注意事项
-
当前仅RDS MySQL实例间、PolarDB MySQL版集群间、Tair(企业版)实例间、云数据库MongoDB版(副本集架构)间、云数据库MongoDB版(分片集群架构)间,支持跨账号的双向同步任务。
-
跨账号的双向同步任务,同时属于源库跨账号和目标库跨账号的场景。因此,源库和目标库所属的阿里云账号(主账号)均需配置RAM授权。
-
暂不支持不同属性账号之间(如金融云和政务云账号之间)的同步任务。
-
登录控制台时,使用的阿里云账号均为阿里云账号(主账号)。若使用RAM用户(子账号),则可能会在创建DTS任务时提示授权不正确。
准备工作
获取源库所属阿里云账号(主账号)ID
使用源库所属的阿里云账号(主账号),访问基本信息页面,在页面右侧获取账号ID。
获取目标库所属阿里云账号(主账号)ID
使用目标库所属的阿里云账号(主账号),访问基本信息页面,在页面右侧获取账号ID。
获取创建DTS任务的阿里云账号(主账号)ID
使用创建DTS任务的阿里云账号(主账号),访问基本信息页面,在页面右侧获取账号ID。
场景一:源库跨账号
步骤一:创建RAM角色
-
使用源库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,单击创建角色。
-
在创建角色面板,配置RAM角色信息。
-
将信任主体类型选择为云账号。

-
将信任主体名称选择为其他云账号,并在文本框填入目标库所属阿里云账号(主账号)的ID。

-
在页面下方,单击确定。
-
在创建角色面板,填入RAM角色名称单击确定。
本示例填入ram-for-dts。

-
步骤二:为RAM角色精确授权
通过RAM角色创建成功页面
-
在权限管理页签,单击精确授权。

-
在精确授权面板,将策略类型选择为系统策略。

-
在策略名称文本框,填入AliyunDTSRolePolicy。
-
单击确定。
您可以在权限管理页签中的右侧,单击
按钮以刷新页面,查看是否精确授权成功。
通过RAM角色列表
-
进入RAM角色的详情页面。
-
使用源库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,查找并单击目标RAM角色。

-
-
在权限管理页签,单击精确授权。

-
在精确授权面板,将策略类型选择为系统策略。

-
在策略名称文本框,填入AliyunDTSRolePolicy。
-
单击确定。
您可以在权限管理页签中的右侧,单击
按钮以刷新页面,查看是否精确授权成功。
步骤三:修改RAM角色的信任策略
通过精确授权成功页面
-
单击信任策略页签。

-
在信任策略页签,单击编辑信任策略。
-
在脚本编辑页签,使用下述代码替换策略框中的代码。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" } -
将代码中两个
<阿里云账号ID>替换为目标库所属阿里云账号(主账号)的ID。 -
单击确定,保存信任策略。
若保存信任策略后,代码中Service部分的
"<阿里云账号ID>@dts.aliyuncs.com"自动变更为"dts.aliyuncs.com",则表示<阿里云账号ID>配置错误(需配置为目标库所属阿里云账号ID,而您配置的是源库所属阿里云账号ID)。说明登录RAM控制台和信任策略中替换的阿里云账号,请参见账号信息。
通过RAM角色列表
-
进入RAM角色的详情页面。
-
使用源库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,查找并单击目标RAM角色。

-
-
单击信任策略页签。

-
在信任策略页签,单击编辑信任策略。
-
在脚本编辑页签,使用下述代码替换策略框中的代码。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" } -
将代码中两个
<阿里云账号ID>替换为目标库所属阿里云账号(主账号)的ID。 -
单击确定,保存信任策略。
若保存信任策略后,代码中Service部分的
"<阿里云账号ID>@dts.aliyuncs.com"自动变更为"dts.aliyuncs.com",则表示<阿里云账号ID>配置错误(需配置为目标库所属阿里云账号ID,而您配置的是源库所属阿里云账号ID)。说明登录RAM控制台和信任策略中替换的阿里云账号,请参见账号信息。
场景二:目标库跨账号
步骤一:创建RAM角色
-
使用目标库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,单击创建角色。
-
在创建角色面板,配置RAM角色信息。
-
将信任主体类型选择为云账号。

-
将信任主体名称选择为其他云账号,并在文本框填入源库库所属阿里云账号(主账号)的ID。

-
在页面下方,单击确定。
-
在创建角色面板,填入RAM角色名称单击确定。
本示例填入ram-for-dts。

-
步骤二:为RAM角色精确授权
通过RAM角色创建成功页面
-
在权限管理页签,单击精确授权。

-
在精确授权面板,将策略类型选择为系统策略。

-
在策略名称文本框,填入AliyunDTSRolePolicy。
-
单击确定。
您可以在权限管理页签中的右侧,单击
按钮以刷新页面,查看是否精确授权成功。
通过RAM角色列表
-
进入RAM角色的详情页面。
-
使用目标库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,查找并单击目标RAM角色。

-
-
在权限管理页签,单击精确授权。

-
在精确授权面板,将策略类型选择为系统策略。

-
在策略名称文本框,填入AliyunDTSRolePolicy。
-
单击确定。
您可以在权限管理页签中的右侧,单击
按钮以刷新页面,查看是否精确授权成功。
步骤三:修改RAM角色的信任策略
通过精确授权成功页面
-
单击信任策略页签。

-
在信任策略页签,单击编辑信任策略。
-
在脚本编辑页签,使用下述代码替换策略框中的代码。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" } -
将代码中两个
<阿里云账号ID>替换为源库所属阿里云账号(主账号)的ID。 -
单击确定,保存信任策略。
若保存信任策略后,代码中Service部分的
"<阿里云账号ID>@dts.aliyuncs.com"自动变更为"dts.aliyuncs.com",则表示<阿里云账号ID>配置错误(需配置为源库所属阿里云账号ID,而您配置的是目标库所属阿里云账号ID)。说明登录RAM控制台和信任策略中替换的阿里云账号,请参见账号信息。
通过RAM角色列表
-
进入RAM角色的详情页面。
-
使用目标库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,查找并单击目标RAM角色。

-
-
单击信任策略页签。

-
在信任策略页签,单击编辑信任策略。
-
在脚本编辑页签,使用下述代码替换策略框中的代码。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" } -
将代码中两个
<阿里云账号ID>替换为源库所属阿里云账号(主账号)的ID。 -
单击确定,保存信任策略。
若保存信任策略后,代码中Service部分的
"<阿里云账号ID>@dts.aliyuncs.com"自动变更为"dts.aliyuncs.com",则表示<阿里云账号ID>配置错误(需配置为源库所属阿里云账号ID,而您配置的是目标库所属阿里云账号ID)。说明登录RAM控制台和信任策略中替换的阿里云账号,请参见账号信息。
场景三:源库和目标库均跨账号
步骤一:使用源库所属的阿里云账号(主账号)配置RAM授权
-
创建RAM角色。
-
使用源库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,单击创建角色。
-
在创建角色面板,配置RAM角色信息。
-
将信任主体类型选择为云账号。

-
将信任主体名称选择为其他云账号,并在文本框填入指定的创建DTS任务的阿里云账号(主账号)ID。

-
在页面下方,单击确定。
-
在创建角色面板,填入RAM角色名称单击确定。
本示例填入ram-for-dts。

-
-
-
为RAM角色精确授权。
通过RAM角色创建成功页面
-
在权限管理页签,单击精确授权。

-
在精确授权面板,将策略类型选择为系统策略。

-
在策略名称文本框,填入AliyunDTSRolePolicy。
-
单击确定。
您可以在权限管理页签中的右侧,单击
按钮以刷新页面,查看是否精确授权成功。
通过RAM角色列表
-
进入RAM角色的详情页面。
-
使用源库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,查找并单击目标RAM角色。

-
-
在权限管理页签,单击精确授权。

-
在精确授权面板,将策略类型选择为系统策略。

-
在策略名称文本框,填入AliyunDTSRolePolicy。
-
单击确定。
您可以在权限管理页签中的右侧,单击
按钮以刷新页面,查看是否精确授权成功。
-
-
修改RAM角色的信任策略。
通过精确授权成功页面
-
单击信任策略页签。

-
在信任策略页签,单击编辑信任策略。
-
在脚本编辑页签,使用下述代码替换策略框中的代码。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" } -
将代码中两个
<阿里云账号ID>替换为指定的创建DTS任务的阿里云账号(主账号)ID。 -
单击确定,保存信任策略。
若保存信任策略后,代码中Service部分的
"<阿里云账号ID>@dts.aliyuncs.com"自动变更为"dts.aliyuncs.com",则表示<阿里云账号ID>配置错误(需配置为创建DTS任务的阿里云账号ID,而您配置的是源库所属阿里云账号ID)。说明登录RAM控制台和信任策略中替换的阿里云账号,请参见账号信息。
通过RAM角色列表
-
进入RAM角色的详情页面。
-
使用源库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,查找并单击目标RAM角色。

-
-
单击信任策略页签。

-
在信任策略页签,单击编辑信任策略。
-
在脚本编辑页签,使用下述代码替换策略框中的代码。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" } -
将代码中两个
<阿里云账号ID>替换为指定的创建DTS任务的阿里云账号(主账号)ID。 -
单击确定,保存信任策略。
若保存信任策略后,代码中Service部分的
"<阿里云账号ID>@dts.aliyuncs.com"自动变更为"dts.aliyuncs.com",则表示<阿里云账号ID>配置错误(需配置为创建DTS任务的阿里云账号ID,而您配置的是源库所属阿里云账号ID)。说明登录RAM控制台和信任策略中替换的阿里云账号,请参见账号信息。
-
步骤二:使用目标库所属的阿里云账号(主账号)配置RAM授权
-
创建RAM角色。
-
使用目标库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,单击创建角色。
-
在创建角色面板,配置RAM角色信息。
-
将信任主体类型选择为云账号。

-
将信任主体名称选择为其他云账号,并在文本框填入指定的创建DTS任务的阿里云账号(主账号)ID。

-
在页面下方,单击确定。
-
在创建角色面板,填入RAM角色名称单击确定。
本示例填入ram-for-dts。

-
-
-
为RAM角色精确授权。
通过RAM角色创建成功页面
-
在权限管理页签,单击精确授权。

-
在精确授权面板,将策略类型选择为系统策略。

-
在策略名称文本框,填入AliyunDTSRolePolicy。
-
单击确定。
您可以在权限管理页签中的右侧,单击
按钮以刷新页面,查看是否精确授权成功。
通过RAM角色列表
-
进入RAM角色的详情页面。
-
使用目标库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,查找并单击目标RAM角色。

-
-
在权限管理页签,单击精确授权。

-
在精确授权面板,将策略类型选择为系统策略。

-
在策略名称文本框,填入AliyunDTSRolePolicy。
-
单击确定。
您可以在权限管理页签中的右侧,单击
按钮以刷新页面,查看是否精确授权成功。
-
-
修改RAM角色的信任策略。
通过精确授权成功页面
-
单击信任策略页签。

-
在信任策略页签,单击编辑信任策略。
-
在脚本编辑页签,使用下述代码替换策略框中的代码。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" } -
将代码中两个
<阿里云账号ID>替换为指定的创建DTS任务的阿里云账号(主账号)ID。 -
单击确定,保存信任策略。
若保存信任策略后,代码中Service部分的
"<阿里云账号ID>@dts.aliyuncs.com"自动变更为"dts.aliyuncs.com",则表示<阿里云账号ID>配置错误(需配置为创建DTS任务的阿里云账号ID,而您配置的是目标库所属阿里云账号ID)。说明登录RAM控制台和信任策略中替换的阿里云账号,请参见账号信息。
通过RAM角色列表
-
进入RAM角色的详情页面。
-
使用目标库所属的阿里云账号(主账号),登录RAM控制台。
-
在左侧导航栏,选择。
重要请勿选择为,否则DTS将无法访问数据库实例并报错。
-
在角色页面,查找并单击目标RAM角色。

-
-
单击信任策略页签。

-
在信任策略页签,单击编辑信任策略。
-
在脚本编辑页签,使用下述代码替换策略框中的代码。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" } -
将代码中两个
<阿里云账号ID>替换为指定的创建DTS任务的阿里云账号(主账号)ID。 -
单击确定,保存信任策略。
若保存信任策略后,代码中Service部分的
"<阿里云账号ID>@dts.aliyuncs.com"自动变更为"dts.aliyuncs.com",则表示<阿里云账号ID>配置错误(需配置为创建DTS任务的阿里云账号ID,而您配置的是目标库所属阿里云账号ID)。说明登录RAM控制台和信任策略中替换的阿里云账号,请参见账号信息。
-
后续操作
完成RAM授权后,您可以创建跨阿里云账号的任务。具体操作,请参见配置跨阿里云账号的任务。

按钮以刷新页面,查看是否精确授权成功。
