全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
MaxCompute

用户管理

更新时间:2017-11-01 10:44:59

任意非项目空间 Owner 用户必须被加入 MaxCompute 项目空间中,并被授予相对应权限,方能操作 MaxCompute 中的数据、作业、资源及函数。本文将介绍项目空间 Owner 如何将其他用户(包括 RAM 子账号)加入和移出 MaxCompute,如何给用户授权。

如果您是项目空间 Owner,建议您仔细阅读本文;如果您是普通用户,建议您向 Owner 提出申请,被加入对应的项目空间后再阅读后续章节。

本文的操作均在客户端运行,Linux 系统下运行 ./bin/odpscmd,Windows 下运行 ./bin/odpscmd.bat。

添加用户

当项目空间的 Owner Alice 决定对另一个用户授权时,Alice 需要先将该用户添加到自己的项目空间中来,只有添加到项目空间中的用户才能够被授权

添加用户的命令如下:

  1. add user <username> --在项目空间中添加用户

云账号的<username>既可以是在 www.aliyun.com 上注册过的有效邮箱地址,也可以是执行此命令的云账号的某个 RAM 子账号,示例如下:

  1. add user ALIYUN$odps_test_user@aliyun.com;
  2. add user RAM$ram_test_user;

假设 Alice 的云账号为 alice@aliyun.com,那么当 Alice 执行上述两条语句后,通过 list users;命令即可看到如下结果:

  1. RAM$alice@aliyun.com:ram_test_user
  2. ALIYUN$odps_test_user@aliyun.com

这表明云账号 odps_test_user@aliyun.com 以及 Alice 通过 RAM 创建的子账号 ram_test_user 已经被加入到了该项目空间中。

添加 RAM 子账号

添加 RAM 子账号有以下两种方式:

  • 通过大数据开发套件进行操作,详情请参见 如何添加成员及授权

  • 通过 MaxCompute 客户端常用命令进行操作,详情如下:

注意:

  • MaxCompute 只允许主账号将自身的 RAM 子账号加入到项目空间中,不允许加入其它云账号的 RAM 子账号,因此在add user时,无需在 RAM 子账号前指定主账号名称,MaxCompute 默认判定命令的执行者即是子账号对应的主账号。

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

默认情况下,MaxCompute 项目只能够识别阿里云账号系统,用户可以通过list accountproviders;命令查看该项目所支持的账号系统,通常情况下仅会看到 ALIYUN 账号,例如下所示:

  1. odps@ ****>list accountproviders;
  2. ALIYUN

注意:

只有项目空间的owner有权限进行accountproviders的相关操作。

由上可见,只能看到ALIYUN账号体系,如果想添加对 RAM 账号的支持,可以执行add accountprovider ram;如下所示:

  1. odps@ odps_pd_inter>add accountprovider ram;
  2. OK

添加用户成功后,此用户仍不能操作 MaxCompute,需要对用户授予一定权限,用户才能在所拥有的权限范围内操作 MaxCompute。关于授权的更多操作,请参见 授权

用户授权

添加用户后,项目空间 Owner 或者项目空间管理员需要给该用户进行授权,只有用户获得权限后,才能执行操作。

MaxCompute 提供了 ACL 授权,跨项目空间数据分享及项目空间数据保护等多种策略。下面列举两个常见场景,更多详情请参见 ACL 授权

场景一

假设 Jack 是项目空间 prj1 的管理员,一个新加入的项目组成员 Alice(已拥有云账号:alice@aliyun.com)申请加入项目空间 prj1,并申请查看 Table 列表,提交作业和创建表的权限。

项目空间的 admin role 或者该项目空间 owner 在客户端执行如下命令:

  1. use prj1; --进入项目空间 prj1
  2. add user aliyun$alice@aliyun.com; --添加用户
  3. grant List, CreateTable, CreateInstance on project prj1 to user aliyun$alice@aliyun.com; --使用grant语句对用户授权

场景二

假设用户云账号为 bob@aliyun.com,已经被添加到某个项目空间($user_project_name),需要给它授予建表、获取表信息和执行的权限。

项目空间的 admin role或者该项目空间 owner 在客户端可以执行如下命令:

  1. grant CreateTable on PROJECT $user_project_name to USER ALIYUN$bob@aliyun.com;
  2. -- bob@aliyun.com 授予名为 $user_project_name project CreateTable(创建表)权限
  3. grant Describe on Table $user_table_name to USER ALIYUN$bob@aliyun.com;
  4. -- bob@aliyun.com 授予名为 $user_table_name Table Describe(获取表信息)权限
  5. grant Execute on Function $user_function_name to USER ALIYUN$bob@aliyun.com;
  6. -- bob@aliyun.com 授予名为 "$user_function_name" Function Execute(执行)权限

给 RAM 子账号授权

通过list accountproviders;来查看账号支持情况,如下所示:

  1. odps@ ****>list accountproviders;
  2. ALIYUN, RAM

由上可见,这个项目空间已经能够支持RAM账号体系,即可以向这个项目空间添加 RAM 子账号并授予某张表的Describe权限,如下所示:

  1. odps@ ****>add user ram$bob@aliyun.com:Alice;
  2. OK: DisplayName=RAM$bob@aliyun.com:Alice
  3. odps@ ****>grant Describe on table src to user ram$bob@aliyun.com:Alice;
  4. OK

此时,bob@aliyun.com的 RAM 子账号Alice就可以通过自己的AccessKeyIDAccessKeySecret登录 MaxCompute 并对表src进行desc操作。

注意

  • 获取 RAM 子账号AccessKeyIDAccessKeySecret的相关操作请参见 RAM 介绍

  • 更多 MaxCompute 添加/删除用户的操作请参见本文相关内容。

  • 更多有关授权的操作请参见 授权

删除用户

当一个用户离开此项目团队时,Alice 需要将该用户从项目空间中移除。用户一旦从项目空间中被移除,该用户将不再拥有任何访问项目空间资源的权限。

移除用户的命令,如下所示:

  1. remove user <username> --在项目空间中移除用户

注意

  • 当一个用户被移除后,该用户不再拥有访问该项目空间资源的任何权限。

  • 移除一个用户之前,如果该用户已被赋予某些角色,则需要先撤销该用户的所有角色。关于角色的介绍请参考 角色管理

  • 当一个用户被移除后,与该用户有关的 ACL 授权 仍然会被保留。一旦该用户以后被再添加到该项目空间时,该用户的历史的 ACL 授权访问权限将被重新激活。

  • MaxCompute 目前不支持在项目空间中彻底移除一个用户及其所有权限数据。

Alice 执行下述两条命令,即可移除相关用户:

  1. remove user ALIYUN$odps_test_user@aliyun.com;
  2. remove user RAM$ram_test_user;

查看用户是否移除,命令如下:

  1. LIST USERS;

查看结果将不会看到这两个账号。此时,表明这两个账号已经被移出项目空间。

删除 RAM 子账号

同样,您也可以通过remove user命令删除自身的 RAM 子账号。示例如下:

  1. odps@ ****>revoke describe on table src from user ram$bob@aliyun.com:Alice;
  2. OK
  3. -- 回收子账号 Alice 权限
  4. odps@ ****>remove user ram$bob@aliyun.com:Alice;
  5. Confirm to "remove user ram$bob@aliyun.com:Alice;" (yes/no)? yes
  6. OK
  7. -- 删除子账号

如果您是项目空间的 owner,也可以通过remove accountprovidr将 RAM 账号系统从当前项目中删除,如下所示:

  1. odps@ ****>remove accountprovider ram;
  2. Confirm to "remove accountprovider ram;" (yes/no)? yes
  3. OK
  4. odps@ ****>list accountproviders;
  5. ALIYUN
本文导读目录