如果当前阿里云账号要操作或访问其他阿里云账号的项目(例如,MaxCompute、Hologres),则需在当前阿里云账号中,将其他阿里云账号的项目创建为当前阿里云账号的数据源,以此实现跨阿里云账号访问数据。
使用限制
跨账号创建的数据源不能用于数据开发和调度。如您需进行相关数据开发操作,请使用当前账号创建数据源。详情请参见绑定MaxCompute计算资源、绑定Hologres计算资源。
跨账号创建数据源时,仅支持通过RAM角色访问的方式访问对应的项目。
准备工作
已创建阿里云主账号A、阿里云主账号B。创建账号,详情请参见注册账号。
阿里云主账号A:跨账号创建数据源的使用方,即“用账号B的用户信息执行跨账号创建数据源”。
阿里云主账号B:跨账号创建数据源的资源提供方,即“将本账号的用户信息提供给账号A,让账号A进行跨账号创建数据源”。
账号B中已准备好待共享的数据资源(例如,已创建MaxCompute项目或Hologres实例与数据库)。
场景一(访问MaxCompute):阿里云主账号B已创建MaxCompute项目,作为跨账号创建数据源使用的目标项目。创建MaxCompute项目,详情请参见创建MaxCompute项目。
场景二(访问Hologres):阿里云主账号B已购买Hologres并创建数据库。
步骤一:在账号 B 中创建并授权 RAM 角色
创建RAM角色并建立信任关系
使用阿里云账号登录RAM控制台,创建RAM角色并添加账号A为该角色信任的云账号,后续可使用账号A扮演该角色访问相关被授权的资源。
创建RAM角色。
创建角色,详情请参见创建可信实体为阿里云账号的RAM角色。
说明此处创建的RAM角色,是用于账号A可扮演该角色在账号B中访问账号B的DataWorks。若后续该RAM角色需要通过账号A访问账号A的DataWorks,则需重新定义RAM角色策略。详情请参见定义RAM角色策略。

角色关键配置示例如下:
信任主体类型:云账号。
信任主体名称:其他云账号。此处填写的是账号A的账号ID。您可使用目标账号(账号A)登录控制台,鼠标悬停至顶部菜单栏的用户头像,获取账号ID。
角色名称:testRole。
配置完成后,账号A后续即可扮演testRole角色,访问相关被授权的资源。
修改角色信任策略。
角色创建完成后,在角色的信任策略页签,单击编辑信任策略,将策略内容更新为以下内容,以允许账号 A 的 DataWorks 服务扮演此角色。详情请参见修改RAM角色的信任策略。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "需要授权的主账号A的uid@engine.dataworks.aliyuncs.com" ] } } ], "Version": "1" }将
账号A的UID替换为账号 A 的实际 UID。
为RAM角色配置权限策略
场景一:授权访问 MaxCompute
使用账号B进入目标MaxCompute项目。
您可通过MaxCompute控制台提供SQL分析功能,快速进入MaxCompute项目。详情请参见使用SQL分析连接。
更多连接工具,详情请参见选择连接工具。
添加RAM角色至MaxCompute项目。
将步骤一创建的testRole角色添加至MaxCompute项目。SQL语句格式如下。
-- 将RAM角色加入MaxCompute项目 add user `RAM$<accout_name>:role/<RAM角色名称>`; -- 查看空间下所有用户 list users; -- 查看RAM角色被授予的权限 show grants for `RAM$<accout_name>:role/<RAM角色名称>`;参数说明如下:
<account_name>:整体需替换为账号B的名称。
<RAM角色名称>:整体需替换为步骤一创建的角色名称testRole。
根据需要为角色进行授权。授权操作,详情请参见授权操作。
说明您可根据跨账号添加的数据源在A工作空间的使用场景,提前为RAM角色授权与相关权限,例如,若要在A工作空间查询B工作空间数据源下的表,需确保数据源配置的RAM角色已拥有该表的SELECT权限。
场景二:授权访问 Hologres
修改角色权限策略(仅Hologres)
在账号 B 的 RAM 控制台,创建自定义权限策略,授予访问 Hologres 实例所需的基础权限,策略内容如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "hologram:GetInstance", "hologram:DescribeInstance", "hologram:ListDatabases", "hologram:ListWarehouses", "hologram:ListInstances" ], "Resource": "*" } ] }并将该策略授权给testRole角色,参见:为RAM角色授权。
添加RAM角色至Hologres数据库。
在 Hologres 中添加角色并授权 使用账号 B 登录 Hologres 管理控制台,进入目标实例的 HoloWeb 界面。
在安全中心 > 用户管理页面,添加已创建的 RAM 角色为数据库用户。

若该角色为普通用户,需在安全中心 > DB 授权页面,为该用户授予数据库级别的操作权限。

详情参考文档 RAM用户权限授权快速入门。
步骤二:账号A使用账号B的用户信息创建数据源
进入数据源页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的,在下拉框中选择对应工作空间后单击进入管理中心。
进入工作空间管理中心页面后,单击左侧导航栏的数据源,进入数据源页面。
单击新增数据源,并选择对应的数据源类型(MaxCompute 或 Hologres)。
在数据源配置页面,填写以下关键信息:
所属云账号:其他阿里云主账号。
地域:MaxCompute项目或Hologres实例所在地域。
对方阿里云主账号UID:填写账号 B 的 UID。
对方MaxCompute项目/Hologres 实例:填写账号 B 中目标资源的具体名称或 ID。
对方RAM角色:填写在账号 B 中创建的 RAM 角色名称,例如 testRole。
配置资源组连通性。
根据需要选择合适资源组,并测试连通性。网络连通配置参见:连接不同主账号数据源。

单击完成创建,即完成跨账号创建数据源。
后续步骤
数据源创建后,您可执行如下操作: