文档

场景:跨账号创建数据源

更新时间:

如果当前阿里云账号要操作或访问其他阿里云账号的项目(例如,MaxCompute、Hologres),则需在当前阿里云账号中,将其他阿里云账号的项目创建为当前阿里云账号的数据源,以此实现跨阿里云账号访问数据。

注意事项

前提条件

说明

本文以“在账号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访问

  1. 创建RAM角色。

    使用阿里云账号登录RAM控制台,创建RAM角色并添加账号A为该角色信任的云账号,后续可使用账号A扮演该角色访问相关被授权的资源。创建角色,详情请参见创建可信实体为阿里云账号的RAM角色

    说明

    此处创建的RAM角色,是用于账号A可扮演该角色在账号B中访问账号B的DataWorks。若后续该RAM角色需要通过账号A访问账号A的DataWorks,则需重新定义RAM角色策略。详情请参见定义RAM角色策略

    image.png

    角色关键配置示例如下:

    • 角色名称为:McRole

    • 信任的云账号选择其他账号:此处填写的是账号A的账号ID。您可使用目标账号(账号A)登录控制台,鼠标悬停至顶部菜单栏的用户头像,获取账号ID。

    配置完成后,账号A后续即可扮演McRole角色,访问相关被授权的资源。

  2. 修改角色信任策略。

    您需进入McRole角色详情页,修改角色信任策略,授权账号A可访问当前账号B的DataWorks。修改角色的信任策略,详情请参见修改RAM角色的信任策略。策略内容如下。

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "需要授权的主账号A的uid@engine.dataworks.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }

账号B:添加RAM角色至MaxCompute项目

  1. 使用账号B进入目标MaxCompute项目。

    您可通过MaxCompute控制台提供SQL分析功能,快速进入MaxCompute项目。详情请参见使用SQL分析连接

    更多连接工具,详情请参见选择连接工具

  2. 添加RAM角色至MaxCompute项目。

    1. 将步骤一创建的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

    2. 根据需要为角色进行授权。授权操作,详情请参见授权操作

      说明

      您可根据跨账号添加的数据源在A工作空间的使用场景,提前为RAM角色授权与相关权限,例如,若要在A工作空间查询B工作空间数据源下的表,需确保数据源配置的RAM角色已拥有该表的SELECT权限。

账号A:使用账号B的用户信息创建数据源

说明

在本步骤,您将使用账号A登录DataWorks,通过账号B的用户信息创建MaxCompute数据源,实现数据源的跨账号创建。因此,执行本步骤前,您需提前获取账号B的UID。

  1. 进入数据源页面。

    1. 登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的管理中心,在下拉框中选择对应工作空间后单击进入管理中心

    2. 进入工作空间管理中心页面后,单击左侧导航栏的数据源,进入数据源页面。

  2. 单击新增数据源 > MaxCompute,创建数据源。

  3. 配置数据源信息。

    1. 配置基本信息。

      根据界面提示,配置如下信息。标准模式工作空间,需分别创建开发环境数据源和生产环境数据源。工作空间模式,详情请参见必读:简单模式和标准模式的区别

      image.png

      关键参数配置如下:

      • 对方账号的UID:其他阿里云账号(即账号B)的账号UID。需从账号B处获取。

      • 对方RAM角色:允许本账号(即账号A)访问对方账号(即账号B)资源的角色。即本文已创建的角色McRole

      • 对方MaxCompute项目:即本账号(即账号A)使用对方账号(即账号B)哪个项目创建数据源。本文示例使用xc_porject_20项目。

      更多创建数据源的配置详情,请参见创建MaxCompute数据源

    2. 配置资源组连通性。

      根据需要选择合适资源组,并测试连通性。资源组相关介绍,详情请参见DataWorks资源组概述

      image.png

    3. 单击完成创建,即完成跨账号创建数据源。

后续步骤

数据源创建后,您可执行如下操作: