当MaxCompute项目需要多人维护时,非项目所有者(Project Owner)的用户必须被加入MaxCompute项目中,且被授予相应的权限,才能操作MaxCompute中的表、资源、函数或作业(实例)。本文为您介绍MaxCompute支持的用户管理操作。

背景信息

创建MaxCompute项目后,除项目所有者(Project Owner)或具备MaxCompute内置角色的用户外,其他用户未经许可不允许访问MaxCompute项目。如果需要其他用户协同开发项目,则需要项目所有者将用户添加到MaxCompute项目中。

MaxCompute支持的用户类型及操作如下。

用户类别 用户类型 操作 说明 操作人角色 操作入口
账户级别(tenant) RAM用户、RAM角色 添加用户(账号级别) 添加用户并绑定账号级别的角色。 阿里云主账号或具备账户级别的Super_Administrator角色的用户。 MaxCompute控制台-用户管理(绑定账户级别角色)
修改用户(账号级别) 修改用户绑定的账号级别的角色。
删除用户(账号级别) 删除绑定账号级别角色的用户。
项目级别(Project) 阿里云账号 添加阿里云账号用户(项目级别) 将其他阿里云账号添加至MaxCompute项目中。 项目所有者(Project Owner)或具备MaxCompute内置角色的用户。
删除阿里云账号用户(项目级别) 删除MaxCompute项目中已添加的阿里云账号。
RAM用户 添加RAM用户(项目级别) 将MaxCompute项目归属的阿里云账号下的RAM用户添加至MaxCompute项目中。
删除RAM用户(项目级别) 删除MaxCompute项目中已添加的RAM用户。
RAM角色 添加RAM角色(项目级别) 将在RAM访问控制台上创建的RAM角色添加至MaxCompute项目中。
删除RAM角色(项目级别) 删除MaxCompute项目中已添加的RAM角色。
查看用户列表(项目级别) 查看MaxCompute项目中已添加的用户。

使用限制

仅华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)地域支持通过MaxCompute控制台添加用户。

添加用户(账号级别)

通过MaxCompute控制台添加用户的操作步骤如下:
  1. 登录MaxCompute控制台,在左上角选择地域。
  2. 用户管理页签,单击新增成员
  3. 添加成员对话框,从选择组织成员列表中,选择RAM用户或RAM角色显示在已添加账号列表中,并勾选批量设置角色中的一个或多个账户级别角色。
  4. 确认无误后,单击确定

修改用户(账号级别)

说明 仅支持修改用户绑定的账户级别角色,不支持修改用户名称。
通过MaxCompute控制台修改用户的操作步骤如下:
  1. 登录MaxCompute控制台,在左上角选择地域。
  2. 用户管理页签的目标用户的角色下拉列表重新选择角色即可。

删除用户(账号级别)

通过MaxCompute控制台删除用户的操作步骤如下:
  1. 登录MaxCompute控制台,在左上角选择地域。
  2. 用户管理页签的目标用户的操作列,单击移除
  3. 删除成员对话框,单击确定

添加阿里云账号用户(项目级别)

当项目的所有者需要对其他阿里云账号用户授权时,需要先将该用户添加到自己的项目中,只有添加到项目中的用户才能够被授权。

  • 命令格式
    add user ALIYUN$<account_name>;
  • 参数说明
    参数名称 是否必填 说明
    account_name 指定阿里云账号的账号名称。例如odps_test_user@aliyun.com
  • 使用示例

    假设test_project_a项目中需要添加阿里云账号odps_test_user@aliyun.com,命令示例如下。

    add user ALIYUN$odps_test_user@aliyun.com;

删除阿里云账号用户(项目级别)

当用户离开MaxCompute项目团队时,需要将用户从项目中移除。用户一旦从项目中被移除,该用户将不再具备访问该项目中任何资源的权限。

  • 命令格式
    remove user ALIYUN$<account_name>;
  • 注意事项
    • 移除一个用户之前,如果该用户已被赋予某些角色,则需要先收回该用户的所有角色之后再执行移除操作。更多查看用户被赋予的角色信息,请参见查看权限信息。更多收回角色信息,请参见收回赋予用户的角色
    • 当一个用户被移除后,与该用户有关的授权仍然会被保留。一旦该用户以后被再次添加到该项目时,该用户的历史授权访问权限将被重新激活。如果需要彻底清除用户的权限信息,请参见彻底清除被删除用户遗留的权限信息
  • 参数说明
    参数名称 是否必填 说明
    account_name 指定阿里云账号的账号名称。例如odps_test_user@aliyun.com

    您可以通过MaxCompute客户端执行list users;命令获取账号信息。

  • 使用示例
    • 示例一:删除test_project_a项目中已添加的阿里云账号odps_test_user@aliyun.com,假设阿里云账号未被授予任何角色,命令示例如下。
      remove user ALIYUN$odps_test_user@aliyun.com;
    • 示例二:删除test_project_a项目中已添加的阿里云账号odps_test_user@aliyun.com,假设阿里云账号已被授予Worker角色,命令示例如下。
      --收回赋予用户的角色。
      revoke Worker from ALIYUN$odps_test_user@aliyun.com;
      --删除用户。
      remove user ALIYUN$odps_test_user@aliyun.com;

添加RAM用户(项目级别)

当项目的所有者需要对其他RAM用户授权时,需要先将该RAM用户添加到自己的项目中,只有添加到项目中的RAM用户才能够被授权。

  • 命令格式
    add user RAM$[<account_name>:]<RAM名称>;
  • 使用限制
    • MaxCompute只允许将阿里云账号自身的RAM用户加入到项目中,不允许添加其他云账号的RAM用户。如果需要将其他阿里云账号的RAM用户添加到项目中,需要先将RAM归属的阿里云账号添加至项目中,再由添加的阿里云账号进入MaxCompute项目后添加RAM用户。
    • 在MaxCompute项目中添加RAM用户时,需要MaxCompute项目支持RAM账号体系,您可以通过list accountproviders;命令查看MaxCompute项目是否支持RAM账号体系。如果查询结果中未出现RAM,可以执行add accountprovider ram;命令为MaxCompute项目添加RAM账号体系。
    • 当一个用户被移除后,与该用户有关的授权仍然会被保留。一旦该用户以后被再次添加到该项目时,该用户的历史授权访问权限将被重新激活。如果需要彻底清除用户的权限信息,请参见彻底清除被删除用户遗留的权限信息
  • 注意事项

    MaxCompute只能够识别RAM的账号体系,不能识别RAM的权限体系。即阿里云账号可以将自身的任意RAM用户加入MaxCompute的某一个项目中,但MaxCompute在对该RAM用户做权限验证时,并不会考虑RAM中的权限定义。

  • 参数说明
    参数名称 是否必填 说明
    account_name 指定RAM用户所属阿里云账号名称。例如odps_test_user@aliyun.com
    RAM名称 指定RAM用户的显示名称。

    您可以登录RAM控制台,在左侧导航栏选择身份管理 > 用户,即可在用户页面获取到显示名称。

  • 使用示例

    假设test_project_a项目中需要添加RAM用户RAM$odps_test_user@aliyun.com:ram_test,命令示例如下。

    add user RAM$ram_test;
    --等效于如下语句。
    add user RAM$odps_test_user@aliyun.com:ram_test;

删除RAM用户(项目级别)

当RAM用户离开MaxCompute项目团队时,需要将用户从项目中移除。用户一旦从项目中被移除,该用户将不再具备访问该项目中任何资源的权限。

  • 命令格式
    remove user RAM$[<account_name>:]<RAM名称>;
  • 注意事项
    • 对于已经被赋予角色的RAM用户,在删除RAM用户前,请先解除赋予的角色后再删除RAM用户。否则,项目中会残留RAM用户信息,查询用户时会显示为p4_xxxxxxxxxxxxxxxxxxxx且无法从项目中删除,但不影响项目正常使用。更多查看用户被赋予的角色信息,请参见查看权限信息。更多收回角色信息,请参见收回赋予用户的角色
    • 当一个用户被移除后,与该用户有关的授权仍然会被保留。一旦该用户以后被再次添加到该项目时,该用户的历史授权访问权限将被重新激活。如果需要彻底清除用户的权限信息,请参见彻底清除被删除用户遗留的权限信息
  • 参数说明
    参数名称 是否必填 说明
    account_name 指定RAM用户所属阿里云账号名称。例如odps_test_user@aliyun.com
    RAM名称 指定RAM用户的显示名称。

    您可以登录RAM控制台,在左侧导航栏选择身份管理 > 用户,即可在用户页面获取到显示名称。

  • 使用示例
    • 示例一:删除test_project_a项目中已添加的RAM用户RAM$odps_test_user@aliyun.com:ram_test,假设RAM用户未被授予任何角色。命令示例如下。
      remove user RAM$ram_test;
      --等效于如下语句。
      remove user RAM$odps_test_user@aliyun.com:ram_test;
    • 示例二:删除test_project_a项目中已添加的RAM用户RAM$odps_test_user@aliyun.com:ram_test,假设RAM用户已被授予Worker角色。命令示例如下。
      --收回赋予用户的角色。
      revoke Worker from RAM$odps_test_user@aliyun.com:ram_test;
      --删除用户。
      remove user RAM$ram_test;
      --等效于如下语句。
      remove user RAM$odps_test_user@aliyun.com:ram_test;
      --如果不再需要RAM用户,可删除RAM账号体系。
      remove accountprovider ram;

添加RAM角色(项目级别)

您可以通过RAM访问控制台创建RAM角色并修改RAM角色的权限策略,然后将RAM角色添加至MaxCompute项目。后续项目中的RAM用户可以扮演该RAM角色执行操作。

角色规划与管理不同的是,RAM角色为访问控制平台中的角色,非MaxCompute项目内的角色。更多使用RAM角色操作,请参见使用RAM角色

由于后续涉及到需要在DataWorks上操作,在修改RAM角色的权限策略时,您需要把RAM角色同时授权给DataWorks服务,以便在DataWorks上能够提交周期性调度作业至MaxCompute。RAM角色的权限策略配置如下。

{
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "dataworks.aliyuncs.com"
                ]
            }
        }
    ],
    "Version": "1"
}

更多创建RAM角色及配置RAM角色权限策略信息,请参见创建可信实体为阿里云账号的RAM角色创建可信实体为身份提供商的RAM角色创建可信实体为阿里云服务的RAM角色修改RAM角色的信任策略

  • 命令格式
    add user `RAM$<accout_name>:role/<RAM角色名称>`;
  • 注意事项

    命令中的`,不可缺失。

  • 参数说明
    参数名称 是否必填 说明
    account_name 指定RAM角色所属的阿里云账号。例如odps_test_user@aliyun.com
    RAM角色名称 指定RAM角色名称。

    您可以登录RAM控制台,在左侧导航栏选择身份管理 > 角色,即可在角色页面获取到RAM角色名称。

  • 使用示例

    假设test_project_a项目中需要添加RAM角色ram_role,命令示例如下。

    add user `RAM$odps_test_user@aliyun.com:role/ram_role`;

删除RAM角色(项目级别)

删除MaxCompute项目中已添加的RAM角色。

  • 命令格式
    remove user `RAM$<accout_name>:role/<RAM角色名称>`;
  • 注意事项

    命令中的`,不可缺失。

  • 参数说明
    参数名称 是否必填 说明
    account_name 指定RAM角色所属的阿里云账号。例如odps_test_user@aliyun.com
    RAM角色名称 指定RAM角色名称。

    您可以登录RAM控制台,在左侧导航栏选择身份管理 > 角色,即可在角色页面获取到RAM角色名称。

  • 使用示例

    假设test_project_a项目中需要删除RAM角色ram_role,命令示例如下。

    remove user `RAM$odps_test_user@aliyun.com:role/ram_role`;

查看用户列表(项目级别)

查看MaxCompute项目中已添加的用户列表。

  • 命令格式
    list users;
  • 使用示例
    查看MaxCompute项目中已添加的用户信息。命令示例如下。
    list users;
    返回结果如下。
    ALIYUN$odps_test_user@aliyun.com
    RAM$odps_test_user@aliyun.com:ram_test
    RAM$odps_test_user@aliyun.com:role/ram_role

后续指引

完成用户规划后,您可以根据实际业务需要执行授权操作:用户授权