角色(Role)是一组访问权限的集合,当需要对一组用户赋予相同的权限时,可以使用角色来授权。基于角色的授权可以大大简化授权流程,降低授权管理成本。当需要对用户授权时,应当优先考虑是否应该使用角色来完成。

每一个项目空间在创建时,会自动创建一个Admin的角色,并且为该角色授予了确定的权限:可以访问项目空间内的所有对象、对用户或角色进行管理、对用户或角色进行授权。与项目空间Owner相比,Admin角色不能将Admin权限指派给用户,不能设定项目空间的安全配置,不能修改项目空间的鉴权模型,Admin角色所对应的权限不能被修改。

角色管理相关命令如下:
  • 创建角色。
    create role <rolename>;
  • 删除角色。
    drop role <rolename>;
  • 给用户指派某种角色。
    grant <rolename> to <username>;
  • 撤销角色指派。
    revoke <rolename> from <username>;
说明
  • 多个用户可以同时存在于一个角色下,一个用户也可以隶属于多个角色。
  • DataWorks中成员角色类型对应的MaxCompute角色以及各角色的平台权限详情,请参见项目管理中的成员管理

创建角色

命令格式
CREATE ROLE <rolename>;

示例

假设要创建一个player角色,需在客户端输入如下命令。
create role player;
说明 您创建的角色权限可以通过权限查看查看指定的用户权限。

添加用户到角色

命令格式
GRANT <roleName> TO <full_username> ;

示例

假设要将用户bob@aliyun.com加入player角色中,需在客户端执行如下命令。
grant player to bob@aliyun.com;

给角色授权

给角色授权的语句与给用户授权相似,更多详情请参见用户授权
说明 给角色授权后,该角色下的所有用户拥有相同的权限。

示例

假设Jack是项目空间prj1的管理员,有三个新加入的项目组成员:Alice,Bob和Charlie,这三个成员的角色是数据审查员。需要要申请如下权限:查看Table列表,提交作业和读取表userprofile。

对于这个场景的授权,项目空间管理员可以使用基于对象的ACL授权机制来完成。执行如下语句完成。
--进入空间prj1。
use prj1;
--添加用户。
add user aliyun$alice@aliyun.com; 
add user aliyun$bob@aliyun.com;
add user aliyun$charlie@aliyun.com;
--创建角色。
create role tableviewer;
--对角色赋权。 
grant List, CreateInstance on project prj1 to role tableviewer; 
grant Describe, Select on table userprofile to role tableviewer;
--对用户赋予角色tableviewer。
grant tableviewer to aliyun$alice@aliyun.com; 
grant tableviewer to aliyun$bob@aliyun.com;
grant tableviewer to aliyun$charlie@aliyun.com;

删除角色中的用户

命令格式
REVOKE <roleName> FROM <full_username>;

示例

执行如下命令将用户bob@aliyun.com从player角色中删除。
revoke player from bob@aliyun.com;

删除角色

命令格式
DROP ROLE <roleName>;

示例

执行如下命令删除player角色。
drop role player;
说明 删除一个角色时,MaxCompute会检查该角色内是否还存在其他用户。若存在,则删除该角色失败。只有在该角色的所有用户都被撤销时,删除角色才会成功。