如果当前阿里云账号要操作或访问其他阿里云账号的项目(例如,MaxCompute、Hologres),则需在当前阿里云账号中,将其他阿里云账号的项目创建为当前阿里云账号的数据源,以此实现跨阿里云账号访问数据。
注意事项
跨账号创建的数据源不能用于数据开发和调度。如您需进行相关数据开发操作,请使用当前账号创建数据源。详情请参见创建MaxCompute数据源、创建Hologres数据源。
跨账号创建数据源时,仅支持通过RAM角色访问的方式访问对应的项目。
本文仅适用于MaxCompute、Hologres数据源,并且以跨账号创建MaxCompute数据源示例,展示跨账号场景的相关操作,Hologres数据源的操作类似。其他类型数据源的跨账号场景请参见:
AnalyticDB for PostgreSQL:请参考跨账号创建AnalyticDB for PostgreSQL数据源。
AnalyticDB for MySQL3.0:请参考跨账号创建AnalyticDB for MySQL3.0数据源。
前提条件
本文以“在账号A中,通过将账号B的MaxCompute项目xc_porject_20创建为账号A的MaxCompute数据源,来实现账号A访问账号B的MaxCompute项目数据”为例,为您展示跨账号创建MaxCompute数据源的相关操作。
已创建阿里云主账号A、阿里云主账号B。创建账号,详情请参见注册账号。
阿里云主账号A:跨账号创建数据源的执行方,即“用账号B的用户信息执行跨账号创建数据源”。
阿里云主账号B:跨账号创建数据源的信息提供方,即“将本账号的用户信息提供给账号A,让账号A进行跨账号创建数据源”。
阿里云主账号B已创建MaxCompute项目,做为跨账号创建数据源使用的目标项目。创建MaxCompute项目,详情请参见创建MaxCompute项目。本文示例使用xc_porject_20项目。
账号B:创建RAM角色并允许账号A访问
创建RAM角色。
使用阿里云账号登录RAM控制台,创建RAM角色并添加账号A为该角色信任的云账号,后续可使用账号A扮演该角色访问相关被授权的资源。创建角色,详情请参见创建可信实体为阿里云账号的RAM角色。
说明此处创建的RAM角色,是用于账号A可扮演该角色在账号B中访问账号B的DataWorks。若后续该RAM角色需要通过账号A访问账号A的DataWorks,则需重新定义RAM角色策略。详情请参见定义RAM角色策略。
角色关键配置示例如下:
角色名称为:McRole。
信任的云账号选择其他账号:此处填写的是账号A的账号ID。您可使用目标账号(账号A)登录控制台,鼠标悬停至顶部菜单栏的用户头像,获取账号ID。
配置完成后,账号A后续即可扮演McRole角色,访问相关被授权的资源。
修改角色信任策略。
您需进入McRole角色详情页,修改角色信任策略,授权账号A可访问当前账号B的DataWorks。修改角色的信任策略,详情请参见修改RAM角色的信任策略。策略内容如下。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "需要授权的主账号A的uid@engine.dataworks.aliyuncs.com" ] } } ], "Version": "1" }
账号B:添加RAM角色至MaxCompute项目
使用账号B进入目标MaxCompute项目。
您可通过MaxCompute控制台提供SQL分析功能,快速进入MaxCompute项目。详情请参见使用SQL分析连接。
更多连接工具,详情请参见选择连接工具。
添加RAM角色至MaxCompute项目。
将步骤一创建的McRole角色添加至MaxCompute项目。SQL语句格式如下。
-- 将RAM角色加入MaxCompute项目 add user `RAM$<accout_name>:role/<RAM角色名称>`; -- 查看空间下所有用户 list users; -- 查看RAM角色被授予的权限 show grants for `RAM$<accout_name>:role/<RAM角色名称>`;
参数说明如下:
<accout_name>:整体需替换为账号B的名称。
<RAM角色名称>:整体需替换为步骤一创建的角色名称McRole。
根据需要为角色进行授权。授权操作,详情请参见授权操作。
说明您可根据跨账号添加的数据源在A工作空间的使用场景,提前为RAM角色授权与相关权限,例如,若要在A工作空间查询B工作空间数据源下的表,需确保数据源配置的RAM角色已拥有该表的SELECT权限。
账号A:使用账号B的用户信息创建数据源
在本步骤,您将使用账号A登录DataWorks,通过账号B的用户信息创建MaxCompute数据源,实现数据源的跨账号创建。因此,执行本步骤前,您需提前获取账号B的UID。
进入数据源页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入管理中心。
进入工作空间管理中心页面后,单击左侧导航栏的
,进入数据源页面。
单击
,创建数据源。配置数据源信息。
配置基本信息。
根据界面提示,配置如下信息。标准模式工作空间,需分别创建开发环境数据源和生产环境数据源。工作空间模式,详情请参见必读:简单模式和标准模式的区别。
关键参数配置如下:
对方账号的UID:其他阿里云账号(即账号B)的账号UID。需从账号B处获取。
对方RAM角色:允许本账号(即账号A)访问对方账号(即账号B)资源的角色。即本文已创建的角色McRole。
对方MaxCompute项目:即本账号(即账号A)使用对方账号(即账号B)哪个项目创建数据源。本文示例使用xc_porject_20项目。
更多创建数据源的配置详情,请参见创建MaxCompute数据源。
配置资源组连通性。
根据需要选择合适资源组,并测试连通性。资源组相关介绍,详情请参见DataWorks资源组概述。
单击完成创建,即完成跨账号创建数据源。
后续步骤
数据源创建后,您可执行如下操作: