跨账号授权(MaxCompute、Hologres)

如果当前阿里云账号要操作或访问其他阿里云账号的项目(例如,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扮演该角色访问相关被授权的资源。

  1. 创建RAM角色。

    创建角色,详情请参见创建可信实体为阿里云账号的RAM角色

    说明

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

    image.png

    角色关键配置示例如下:

    • 信任主体类型:云账号。

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

    • 角色名称testRole

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

  2. 修改角色信任策略。

    角色创建完成后,在角色的信任策略页签,单击编辑信任策略,将策略内容更新为以下内容,以允许账号 A 的 DataWorks 服务扮演此角色。详情请参见修改RAM角色的信任策略

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

    将 账号AUID 替换为账号 A 的实际 UID。

RAM角色配置权限策略

场景一:授权访问 MaxCompute

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

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

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

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

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

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

      说明

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

场景二:授权访问 Hologres

  1. 修改角色权限策略(仅Hologres)

    1. 在账号 B 的 RAM 控制台,创建自定义权限策略,授予访问 Hologres 实例所需的基础权限,策略内容如下:

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "hologram:GetInstance",
              "hologram:DescribeInstance",
              "hologram:ListDatabases",
              "hologram:ListWarehouses",
              "hologram:ListInstances"
            ],
            "Resource": "*"
          }
        ]
      }
    2. 并将该策略授权给testRole角色,参见:RAM角色授权

  2. 添加RAM角色至Hologres数据库。

    在 Hologres 中添加角色并授权 使用账号 B 登录 Hologres 管理控制台,进入目标实例的 HoloWeb 界面。

    • 安全中心 > 用户管理页面,添加已创建的 RAM 角色为数据库用户。

      PixPin_2025-11-24_16-51-58

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

      PixPin_2025-11-24_16-42-08

    详情参考文档 RAM用户权限授权快速入门

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

  1. 进入数据源页面。

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

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

  2. 单击新增数据源,并选择对应的数据源类型(MaxCompute 或 Hologres)。

  3. 在数据源配置页面,填写以下关键信息:

    • 所属云账号:其他阿里云主账号。

    • 地域:MaxCompute项目或Hologres实例所在地域。

    • 对方阿里云主账号UID:填写账号 B 的 UID。

    • 对方MaxCompute项目/Hologres 实例:填写账号 B 中目标资源的具体名称或 ID。

    • 对方RAM角色:填写在账号 B 中创建的 RAM 角色名称,例如 testRole。

  4. 配置资源组连通性。

    根据需要选择合适资源组,并测试连通性。网络连通配置参见:连接不同主账号数据源

    image.png

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

后续步骤

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

  • 基于该数据源进行数据集成同步操作。详情请参见数据集成

  • 进入数据地图,查看数据源的更多详细信息。详情请参见数据地图