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

MaxCompute指定的角色权限查看请参见查看角色的权限

DataWorks中成员角色类型对应的MaxCompute角色以及各角色的平台权限详情请参见成员及角色管理

创建角色

每一个项目空间在创建时,会自动创建一个Admin的角色,并且为该角色授予了默认的权限。默认的权限包含访问项目空间内的所有对象、管理用户或角色及其对应的权限。

Admin角色不能将Admin权限指派给用户、不能设定项目空间的安全配置、不能修改项目空间的鉴权模型、所对应的权限不能被修改。

  • 命令格式
    create role <role_name>;
  • 参数说明

    role_name:必填。待创建角色的名称。

  • 使用示例
    创建一个player角色。
    create role player;

给角色授权

给角色授权后,拥有该角色的所有用户拥有相同的权限。给角色授权的方法与给用户授权相似,命令格式、参数说明等详情请参见授权

参考示例

假设Jack是项目空间prj1的管理员,三个新加入的项目组成员为Alice、Bob和Charlie,这三个成员的角色是数据审查员。需要申请查看Table列表、提交作业和读取表userprofile的权限。项目空间管理员执行如下语句完成授权。
--进入空间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;

使用角色为用户授权

多个用户可以同时存在于一个角色下,一个用户也可以隶属于多个角色。

  • 命令格式
    grant <role_name> to <full_username>;
  • 参数说明
    • role_name:必填。角色名称。
    • full_username:必填。待授权的用户名称。
  • 使用示例
    将角色player授权给用户bob@aliyun.com。
    grant player to bob@aliyun.com;

收回授予用户的角色

  • 命令格式
    revoke <role_name> from <full_username>;
  • 参数说明
    • role_name:必填。角色名称。
    • full_username:必填。待收回角色的用户名称。
  • 使用示例
    将用户bob@aliyun.com的player角色收回。
    revoke player from bob@aliyun.com;

删除角色

  • 命令格式
    drop role <role_name>;
  • 参数说明

    role_name:待删除的角色名称。

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