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

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

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

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

创建角色

命令格式
CREATE ROLE <rolename>;

示例

执行如下命令创建一个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 <roleName> TO <full_username> ;

示例

执行如下命令将角色player授权给用户bob@aliyun.com。
grant player to bob@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会检查该角色内是否还存在其他用户。如果存在,则删除角色失败。只有在角色的所有用户都被撤销时,删除角色才会成功。