本文为您介绍MaxCompute的用户与权限管理,以及MaxCompute与DataWorks用户权限管理的区别。

更多用户与权限管理的详情请参见用户与权限管理配置

用户管理

操作类型 MaxCompute用户管理 DataWorks用户管理
操作描述 准确添加和管理用户,删除或锁定无属主、闲置以及离职人员的账号权限。
说明 通过DataWorks新增的用户会被授权默认的角色。
准确添加和管理用户,删除或锁定无属主、闲置以及离职人员的账号权限,严控管理员、运维权限。
操作角色 项目的所有者(Project Owner)、Super_Administrator角色或Admin角色。 项目管理员。
现状查看
  • 查看项目下的用户: list users;
  • 查看指定用户拥有的权限:show grants for <username>;
在DataWorks工作管理空间成员管理中查看现有成员及角色,并确认各个成员权限的合理性。
赋权操作

成员仅加入MaxCompute项目,不在DataWorks项目成员中体现,且无任何权限。 需要结合对象操作role权限label权限才能使用,所以应关注成员是否拥有对象操作role权限label权限,并对相应授权进行清理。此外,可以添加云账号和RAM子账号。

在项目中添加用户:add user <username>;

在DataWorks工作管理空间成员管理中添加成员和分配角色。
说明
  • 只能添加该项目负责人账号下的RAM子账号为项目成员。
  • 添加一个成员,并分配角色,可能会在MaxCompute赋予默认的角色权限。
回退操作 在项目中移除用户:remove user <username>; 清理成员或对应角色权限。删除后,会自动清除MaxCompute内对应的用户和默认角色。

角色管理

操作类型 MaxCompute角色管理 DataWorks角色管理
操作描述

准确地创建角色并配置角色权限,及时清理离职或转岗人员的账号,清理角色中不必要开放的资源和权限。

MaxCompute项目创建成功后除了默认有Admin角色外,DataWorks还创建了其他角色,详情请参见MaxCompute和DataWorks权限关系

准确地分配角色。成员工作性质发生改变时需要及时改变角色,严格控制项目管理员和运维角色的分配。
操作角色 项目所有者(Project Owner)、Super_Administrator角色或Admin角色。 项目管理员。
现状查看
  • 查看当前项目所有角色:list roles;
  • 查看角色中的权限:describe role <role_name>;
  • 查看某用户拥有的角色:show grants for <username>;

目前暂不支持查看角色被指派给哪些用户。

在DataWorks工作管理空间成员管理中单击每个角色查看该角色下的成员。
赋权操作
MaxCompute除了默认的角色,还可以自定义角色,通过命令自定义角色权限并将角色授权给用户。方法如下:
  1. 创建角色:create role <role_name>;
  2. 为角色授权:grant actions on object to <role_name>;
  3. 为用户授予角色:GRANT <role_name> TO <full_username> ;
说明

在DataWorks工作空间管理MaxCompute高级配置- > 自定义用户角色页面可以通过图形化界面创建MaxCompute自定义角色、对角色进行授权、将角色授权给成员。

通过命令行创建的角色不会在这个界面显示。

DataWorks角色是固定的,不允许自定义角色。成员添加到DataWorks项目时勾选角色分配给成员,该成员即可拥有该角色包含的权限。
回退操作
  1. 删除角色中的用户:REVOKE <roleName> FROM <full_username>;
  2. 撤销对角色的授权:revoke <privList> on <objType> <objName> from role <rolename>;
  3. 删除角色:DROP ROLE <roleName>;
说明 如果是通过DataWorks工作空间管理MaxCompute高级配置- > 自定义用户角色页面创建的角色,也可以通过此页面执行回退操作。
DataWorks的角色不能删除,只能将某个成员的角色去掉。

ACL授权管理

操作类型 说明
操作描述 回收非必须的对象操作授权,操作权限涉及多种操作对象和类型,应逐一确认。
操作角色 项目所有者(Project Owner)、Super_Administrator角色或Admin角色。
现状查看
  • 查看指定用户的权限: show grants for <username>;
  • 查看当前用户的权限:show grants;
  • 查看指定对象的授权列表:show acl for <objectName> [on type <objectType>];
  • 查看某Package赋权情况案例:show acl for alipaydw.alipaydw_for_alisec_app on type package;
赋权操作

进行某对象的操作赋权:grant actions on object to subject;

操作(actions)、主体(object)、客体(subject)类型的表达式如下:
  • 操作类型:action_item1, action_item2, ...
  • 主体类型:project project_name,table schema_name ,instance inst_name ,function func_name ,resource res_name
  • 客体类型:user full_username ,role role_name
回退操作 回收某对象的操作权限: revoke actions on object from subject;

Package授权管理

操作类型 说明
操作描述 如果开启ProjectProtection的项目没有在同一个互信项目组(TrustedProject Group),则必须使用Package方式赋权。同时,请确保Package合理打包和赋权,无闲置Package赋权。
操作角色 项目的所有者(Project Owner)或Super_Administrator角色。
现状查看
  • 了解本项目Package创建及赋权情况:
    • 查看已创建和已安装的Package列表:show packages;
    • 查看Package详细信息: describe package <pkgname>;
  • 查看本项目安装的Package,对用户的授权情况:show acl for <project_name.package_name> on type package;
赋权操作 Package创建者:
  1. 创建Package:create package <pkgname>;
  2. 将分享的资源添加到Package:add project_object to package package_name [with privileges privileges];。project_object表达式:table table_name ,instance inst_name ,function func_name ,resource res_name
  3. 许可其它项目使用Package: allow project <prjname> to install package <pkgname> [using label<number>];
Package使用者:
  1. 安装Package:install package <pkgname>;
  2. 将Package授权给用户、角色(项目Owner、Super_Administrator角色或Admin角色都可以执行授权命令):grant actions on package <pkgName> to user <username>;grant actions on package <pkgName> to role <role_name>;
    说明 Pckage授权给具体用户时,不能指定Label。

关于可操作权限类型的说明,请参见授权。通常,将Package的Read权限赋给对象,即可满足对象访问Package中资源的需求。完成授权后,访问Package中的表时,表名的写法为表所属Project名称.表名

回退操作
  1. 撤销其他项目使用Package的许可:disallow project <prjname> to install package <pkgname>;
  2. 删除Package:delete package <pkgname>;
  3. 将分享的资源移出Package:remove project_object from package package_name;

    project_object表达式: table table_name ,instance inst_name ,function func_name ,resource res_name

  4. 撤销Package的用户、角色的权限:revoke actions on package <pkgName> from user <username>;revoke actions on package <pkgName> from role <role_name>;

Label授权管理

操作类型 说明
操作描述 Maxcompute的字段、表、Package敏感度分为0~4个等级,应根据用户实际需要,赋予对应的Label权限。
操作角色 项目的所有者、Super_Administrator角色。
现状查看
  • 查看用户可以访问的敏感数据集:SHOW LABEL [<level>] GRANTS [FOR USER <username>];
    • 省略[FOR USER <username>]时,可以查看当前用户能访问的敏感数据集。
    • 省略<level>时,将显示所有Label等级的授权。
    • 如果指定<level>,则只显示指定等级的授权。
  • 查看可以访问敏感数据表的用户:SHOW LABEL [<level>] GRANTS ON TABLE <tablename>;。 执行结果将显示指定表上的Label授权。
  • 查看一个用户对一个数据表的所有列级别的Label权限:SHOW LABEL [<level>] GRANTS ON TABLE <tablename> FOR USER <username>;。 执行结果将显示指定用户对指定表上列级别的Label 授权
赋权操作
  • 为用户赋予单个表或字段的安全许可标签:GRANT LABEL <number> ON TABLE <tablename> [(column_list)] TO [USER|ROLE] <name> [WITH EXP <days>]; 。 默认180天后标签过期。示例如下:
    • 显式授权alice访问t1表中敏感度不超过2级的数据,授权有效期为1天:GRANT LABEL 2 ON TABLE t1 TO USER alice WITH EXP 1;
    • 显式授权alice访问t1(col1, col2)中敏感度不超过3级的数据,授权有效期为1天: GRANT LABEL 3 ON TABLE t1(col1, col2) TO USER alice WITH EXP 1;
  • 给用户授权整个项目的安全许可标签:SET LABEL <number> TO USER <username>;
  • 控制Package安装者对Package中敏感资源的许可访问级别:ALLOW PROJECT <prjName> TO INSTALL PACKAGE <pkgName> [USING LABEL <number>];。 由Package创建者授权,授予Package安装者对Package中敏感资源的许可访问级别。
  • 将Package赋权给用户、角色,Package赋权给具体用户时,不能指定Label:grant actions on package <pkgName> to user <username>;grant actions on package <pkgName> to role <role_name>;
回退操作
  • 撤销用户单个表或字段的安全许可标签:
    • 撤销授权: REVOKE LABEL ON TABLE <tablename>[(column_list)] FROM [USER|ROLE] <name>;

      撤销alice对t1表的敏感数据访问:REVOKE LABEL ON TABLE t1 FROM USER alice;

    • 清理过期的授权: CLEAR EXPIRED GRANTS;
  • 更改用户授权整个项目的安全许可标签,默认等级为0:SET LABEL <number> TO [USER|ROLE] <name>;
  • 更改Package安装者对Package中敏感资源的许可访问级别,调整为其它级别,默认为0:ALLOW PROJECT <prjName> TO INSTALL PACKAGE <pkgName> [USING LABEL <number>];
  • 撤销Package的用户、角色的权限:revoke actions on package <pkgName> from user <username>;revoke actions on package <pkgName> from role <role_name>;