当需要对一组用户赋予相同的权限时,可以使用角色来授权。角色(Role)是权限的集合,基于角色的授权可以简化授权流程,降低授权管理成本。对多个用户执行相同授权操作时,应优先考虑使用角色授权。本文为您介绍MaxCompute支持的角色类型及角色管理操作。
角色类型
MaxCompute角色类型包括管理类型(Admin)角色和资源类型(Resource)角色。
管理类型(Admin)角色:可以通过Policy授予管理类型权限,不支持对管理类角色授予资源权限,不支持对管理类角色通过ACL方式进行管理类权限授权。
资源类型(Resource)角色:可以通过Policy或ACL方式进行资源类型权限授权,不支持对其进行管理类型权限授权。
内置角色
MaxCompute在项目级别(Project)内置了两个管理角色Super_Administrator和Admin;在租户级别(tenant)内置了两个管理角色Super_Administrator和Admin。
角色类别 | 角色名称 | 角色类型 | 角色说明 |
项目级别(Project) | Super_Administrator | Admin | MaxCompute内置的管理角色。拥有操作项目内所有资源的权限和管理类权限。权限详细信息,请参见项目级别管理角色权限说明。 项目所有者或具备Super_Administrator角色的用户可以将Super_Administrator角色赋予其他用户。 |
Admin | Admin | MaxCompute内置的管理角色。拥有操作项目内所有资源的权限和部分基础管理类权限。权限详细信息,请参见项目级别管理角色权限说明。 项目所有者可以将Admin角色赋予其他用户。Admin角色不能将Admin权限赋予其他用户、不能设定项目的安全配置、不能修改项目的鉴权模型、所对应的权限不能被修改。 | |
租户级别(tenant) | Super_Administrator | Admin | MaxCompute内置的管理角色。除了不能创建项目、删除项目、开通服务,其他在MaxCompute上的操作权限等同于阿里云账号。 |
Admin | Admin | MaxCompute内置的管理角色。用于管理所有对象及网络连接(Networklink)的权限。 |
在项目级别(Project),除角色外,ProjectOwner(项目所有者)作为项目的拥有者,拥有项目的所有权限。除项目所有者之外,任何人都无权访问此项目内的对象,除非有项目所有者的授权许可。
自定义角色
MaxCompute支持您根据实际业务情况自定义管理类型(Admin)角色和资源类型(Resource)角色,对用户进行分类管理。
角色类别 | 角色名称 | 角色类型 | 角色说明 |
项目级别(Project) | 自定义角色 | Admin、Resource | 非MaxCompute内置的角色,支持对Project管控操作权限定义(管理类角色),也支持对Project内对象资源的权限定义(资源类角色)。 |
租户级别(tenant) | 自定义角色 | Resource | 非MaxCompute内置角色,支持对Quota、Networklink、Project等对象资源定义权限(资源类角色)。 |
角色管理操作
MaxCompute支持的角色管理操作如下。
角色类型 | 操作 | 说明 | 操作人角色 | 操作入口 |
项目级别(Project) | 创建项目级别的新角色。 | 项目所有者(Project Owner)或具备项目级别的MaxCompute内置角色的用户。 | ||
查看项目中已创建的角色列表。 | ||||
删除项目中已存在的角色。 |
项目级别管理角色权限说明
项目级别管理角色拥有的管理类权限说明如下。
权限类别 | 客体 | 操作 | 说明 | 项目所有者 | Super_Administrator角色 | Admin角色 |
项目安全配置 | Project | SetSecurityConfiguration | 设置项目安全属性 | |||
Project | GetSecurityConfiguration | 查看项目安全配置 | ||||
受保护项目管理 | Project | AddTrustedProject | 添加受保护项目 | |||
Project | RemoveTrustedProject | 删除受保护项目 | ||||
Project | ListTrustedProjects | 列出受保护项目 | ||||
用户管理 | Project | AddUser | 添加用户 | |||
Project | RemoveUser | 删除用户 | ||||
Project | ListUsers | 查看用户列表 | ||||
Project | ListUserRoles | 查看用户拥有的角色 | ||||
角色管理 | Project | CreateRole | 创建角色 | |||
Project | DescribeRole | 查看角色权限 | ||||
Project | AlterRole | 修改角色属性 | ||||
Project | DropRole | 删除角色 | ||||
Project | ListRoles | 查看角色列表 | ||||
角色授权 | Role | GrantRole | 将角色赋予用户 | |||
Role | RevokeRole | 移除用户的角色 | ||||
Role | ListRolePrincipals | 查看角色赋予的用户列表 | ||||
包(package)管理 | Project | CreatePackage | 创建Package | |||
Project | ShowPackages | 查看Package列表 | ||||
Package | DescribePackage | 查看Package信息 | ||||
Package | DropPackage | 删除Package | ||||
Package | InstallPackage | 安装Package | ||||
Package | UninstallPackage | 卸载Package | ||||
Package | AllowInstallPackage | 许可其他项目使用Package | ||||
Package | DisallowInstallPackage | 撤销其他项目使用Package的许可 | ||||
Package | AddPackageResource | 向Package中添加资源 | ||||
Package | RemovePackageResource | 从Package中移除资源 | ||||
标签(Label)管理 | Table | GrantLabel | 标签授权 | |||
Table | RevokeLabel | 撤销标签授权 | ||||
Table | ShowLabelGrants | 查看标签授权信息 | ||||
Table | SetDataLabel | 设置用户、角色的标签 | ||||
清理过期权限 | Project | ClearExpiredGrants | 清理过期权限 |
表示有权限,表示无权限。
创建角色(项目级别)
在MaxCompute项目中创建新角色。
完成创建角色后,需将角色绑定至用户,用户会同时具备角色相应的权限,即通过角色为用户授予权限,操作详情请参见将角色赋予用户。
命令格式
create role <role_name> [privilegeproperties("type"="admin|resource")];
参数说明
参数名称
是否必填
说明
role_name
是
指定新建角色的名称,项目内唯一。命名需要满足如下要求:
以字母开头
只能包含字母或数字
长度不超过64个字符
您可以通过MaxCompute客户端执行
list roles;
命令查看已创建的角色信息。privilegeproperties
否
定义role角色类型:
"type"="admin"
:即创建管理类角色,这类角色授权只能通过Policy方式进行授权。"type"="resource"
:创建资源类角色,不指定时默认为此类型。支持ACL和Policy方式授权。
使用示例
创建一个Worker资源类角色,命令示例如下。
create role Worker;
创建一个sale_admin管理类角色,命令示例如下。
create role sale_admin privilegeproperties("type"="admin");
查看角色列表(项目级别)
查看MaxCompute项目中已创建的角色列表。
命令格式
list roles;
使用示例
查看MaxCompute项目中已创建的角色信息。命令示例如下。
list roles;
返回结果如下。
admin super_administrator worker
删除角色(项目级别)
在MaxCompute项目中删除已创建的角色。
命令格式
drop role <role_name>;
注意事项
删除一个角色时,MaxCompute会检查该角色是否绑定了用户。如果存在用户,则删除角色会失败。只有当角色中的所有用户都被撤销时,才能成功删除角色。解绑用户信息,请参见收回赋予用户的角色。
参数说明
参数名称
是否必填
说明
role_name
是
指定待删除角色的名称。
您可以通过MaxCompute客户端执行
list roles;
命令获取已创建的角色信息。使用示例
删除Worker角色。
drop role Worker;
清除权限信息
当角色在MaxCompute项目中被删除后,与该角色相关的ACL、Policy、Label等权限数据并不会随之删除,仍然会保留在项目中。若之后在同一项目内创建了同名的新角色,则这个新角色将继承原来的角色权限。为避免这种情况,MaxCompute提供了清除角色权限的功能。若已删除的角色仍有ACL、Policy、Label等权限信息残留,项目的所有者或者具备Admin、Super_Administrator角色的用户可以执行以下命令,清除权限信息。
命令格式
purge privs from role <role_name>;
参数说明
参数名称
是否必填
说明
role_name
是
指定待删除角色的名称。
您可以通过MaxCompute客户端执行
list roles;
命令获取已创建的角色信息。说明在清除角色权限信息时,请确认此角色已被删除,如果未删除角色,执行该命令会返回
"Principal <role_name> still exist in the project"
报错。