本文为您介绍MaxCompute支持的权限信息。
背景信息
MaxCompute细化了项目(Project)、Quota、Networklink对象以及项目内的表(Table)、函数(Function)、资源(Resource)及实例(Instance)对象的操作,同时还支持对Tunnel下载、敏感数据访问及跨项目访问行为进行管控。在项目实际运行过程中,可以根据人员操作范畴进行精细化授权,为各对象安全提供可靠保障。
执行权限授权操作时,需要包含如下三个要素。
权限要素 | 说明 |
---|---|
主体(Subject) | 被授予权限的用户或角色,即被授权人。 需要注意的是:
说明 授权人为执行授权操作的用户。授权人需要具备为目标客体和目标操作授权的能力,才可以执行授权操作。 |
客体(Object) | MaxCompute项目中的对象或行为。
|
操作(Action) | 操作与客体类型有关,不同客体类型所支持的操作不相同。例如表的读、写、查操作。 |
租户内对象权限一览表
MaxCompute租户内对象的权限关系表如下。
客体(Object) | 操作(Action) | 说明 | 支持的授权人 | 支持的授权方案 |
---|---|---|---|---|
Networklink | List | 查看网络连接所有类型的对象列表。 |
| 为角色授权:Policy权限控制。 |
CreateNetworklink | 在租户创建网络连接对象(Networklink)。 | |||
Describe | 读取网络连接对象的元信息。 | |||
Drop | 删除网络连接对象。 | |||
All | 具备上述网络连接对象的所有权限。 | |||
Quota | Usage | 使用Quota,主要对use quota 功能进行鉴权。 |
|
项目及项目内对象权限一览表
MaxCompute项目及项目内对象支持的权限列表如下:
- 对象
MaxCompute项目及项目内对象的权限关系表如下。
客体(Object) 操作(Action) 说明 支持的授权人 支持的授权方案 Project Read 查看项目自身(不包括项目中的任何对象)的信息。 项目所有者(Project Owner) 暂未开放授权能力 Write 更新项目自身(不包括项目中的任何对象)的信息。 List 查看项目所有类型的对象列表。例如 show tables;
、show functions;
等。- 项目所有者(Project Owner)
- 具备Super_Administrator或Admin角色的用户
- 为用户或角色授权:ACL权限控制
- 为角色授权:Policy权限控制
CreateTable 在项目中创建表(Table)。例如 create table <table_name>...;
。CreateInstance 在项目中创建实例(Instance),即运行作业。 CreateFunction 在项目中创建自定义函数(Function)。例如 create function <function_name> ...;
。CreateResource 在项目中添加资源(Resource)。例如 add file|archive|py|jar <local_file>... ;
、add table <table_name> ...;
。All 具备上述Project的所有权限。 Table Describe 读取表的元数据信息,包含表结构、创建时间、修改时间、表数据大小等。例如 desc <table_name>;
。- 表所有者
- 项目所有者(Project Owner)
- 具备Super_Administrator角色的用户
- 具备Admin角色的用户(不支持修改表所有人)
Select 查看表的数据。例如 select * from <table_name>;
。Alter 修改表的元数据信息,包含修改表所有人、修改表名称、修改列名、添加或删除分区等。例如 alter table <table_name> add if not exists partition ...;
。Update 更新表数据。例如 insert into|overwrite table <table_name> ...;
、update <table_name> set ...;
、delete from <table_name> where ...;
。Drop 删除表。例如 drop table <table_name>;
。ShowHistory 查看表的备份数据信息。例如 show history for table <table_name>;
。All 具备上述Table的所有权限。 Function Read 读取自定义函数(MaxCompute UDF)的程序文件。 - 函数所有者
- 项目所有者(Project Owner)
- 具备Super_Administrator或Admin角色的用户
Write 更新自定义函数。 Delete 删除自定义函数。例如 drop function <function_name>;
。Execute 调用自定义函数。例如 select <function_name> from ...;
。All 具备上述Function的所有权限。 Resource Read 读取资源。 - 资源所有者
- 项目所有者(Project Owner)
- 具备Super_Administrator或Admin角色的用户
Write 更新资源。 Delete 删除资源。例如 drop resource <resource_name>;
。All 具备上述Resource的所有权限。 External Volume CreateVolume 创建External Volume。 - External Volume所有者
- 项目所有者(Project Owner)
- 具备Super_Administrator或Admin角色的用户
Read 读取External Volume。 Write 更新External Volume。 Delete 删除External Volume。例如 vfs -rm -r <volume_path>;
。All 具备上述External Volume的所有权限。 Instance Read 读取实例。 - 项目所有者(Project Owner)
- 具备Super_Administrator或Admin角色的用户
Write 更新实例。 All 具备上述Instance的所有权限。 说明 Project的CreateTable操作,Table的Select、Alter、Update和Drop操作需要与Project的CreateInstance操作权限配合使用。如果您单独使用Table的上述几种权限,且没有CreateInstance权限,则无法完成对应操作。例如,当您通过项目A查询项目B的表时,需要具备项目A的CreateInstance权限和项目B的表Select权限。
- 行为
MaxCompute项目内对象的行为权限关系表如下。
客体(Object) 操作(Action) 说明 支持的授权人 支持的授权方案 Table、Function、Resource、Instance Download 使用Tunnel下载表数据、资源、函数或实例。 - 项目所有者(Project Owner)
- 具备Super_Administrator角色的用户
Download权限控制 Label 不涉及 读取列级敏感数据。 - 项目所有者(Project Owner)
- 具备Admin角色的用户
Label权限控制 Package Read 将项目中的对象及允许的操作权限进行打包,生成Package,实现跨项目授权。 - 项目所有者(Project Owner)
- 具备Admin角色的用户
基于Package跨项目访问资源
项目管理类权限一览表
- MaxComopute管理类权限Action列表如下。
权限类别 Action列表 说明 Project安全配置 SetSecurityConfiguration 设置Project安全配置。 GetSecurityConfiguration 查看Project安全配置。 SetProperty 设置Project IP白名单。 Policy管理 PutPolicy 更新Policy。 GetPolicy 查看Policy。 AddPolicyStatments 添加PolicyStatments。 RemovePolicyStatments 移除PolicyStatments。 Account Provider管理 AddAccountProviders 添加Account Provider。 RemoveAccountProviders 移除Account Provider。 ListAccountProviders 列出Account Provider。 Trusted Projects管理 AddTrustedProjects 添加Trusted Projects。 RemoveTrustedProjects 移除Trusted Projects。 ListTrustedProjects 列出Trusted Projects。 Principal管理 AddUser 添加User。 RemoveUser 移除User。 ListUsers 列出User。 ListUserRoles 列出User的角色列表。 角色管理 CreateRole 创建角色。 DescribeRole 查看角色。 AlterRole 修改角色属性。 DropRole 删除角色。 ListRoles 列出角色。 角色授权 GrantRole 授予用户角色。 RevokeRole 移除用户角色。 ListRolePrincipals 查看角色用户列表。 Package管理 CreatePackage 创建Package。 DescribePackage 查看Package。 DropPackage 删除Package。 ShowPackages 列出Package。 InstallPackage 安装Package。 UninstallPackage 卸载Package。 AllowInstallPackage 许可其他Projects使用Package。 DisallowInstallPackage 撤销许可其他Projects使用Package。 AddPackageResource 向Package添加资源。 RemovePackageResource 向Package移除资源。 Label授权管控 GrantLabel Label授权。 RevokeLabel 撤销Label授权。 ShowLabelGrants 查看Label授权。 SetDataLabel 设置用户、角色Label。 ACL授权管控 GrantPrivs ACL授权。 RevokePrivs 撤销ACL授权。 ShowAclGrants 查看ACL授权。 清理过期权限 ClearExpiredGrants 清理过期权限。 - 管理类权限Resource分类:说明 以下Resouce URI中省略
acs:odps:*:projects/<project_name>/
部分,只书写<project_name>/
后面的部分。
使用说明:权限对象类别 Resouce URI 说明 Project安全配置 authorization/configurations/security_configuration project security_configuration authorization/configurations/policy project policy authorization/configurations/security_policy project security_policy authorization/configurations/protected_exception project protected_exception Project authorization 项目空间的Account Provider、Trusted Projects等管理类。 Project Principal authorization/users project用户。 Project 角色 authorization/roles/resource/<role_name> project资源类角色。 authorization/roles/administrator/<role_name> project管理类角色。 authorization/roles/super_administrator/super_administrator project内置super_administrator角色。 Project 资源 authorization/objecttype/objectname Table、Volume、Job等资源。 Package管理 authorization/packages/<projectname>.<packagename> package类权限。 Package资源 uthorization/packageresources/projectname.packagename/objecttype/objectname package中资源。 - 对于用户,因为涉及到用户名,URI只支持指定到其类别,不支持指定到具体用户。
- 对于角色,URI支持指定到具体某一角色。
- 为区分所有Package和所有Package中资源语意区别,前者URI中使用
packages/projectname.packagename
表达,后者使用packageresources/projectname.packagename/objecttype/objectname
表达。如此以来packages/*
表示所有Package,packageresources/*
表示Package中所有资源。
- 管理类权限点列表如下。
权限类别 权限点 Action Resource Project安全配置权限 设置安全配置。 SetSecurityConfiguration
projects/<project_name>/authorization/configurations/security_configuration
查看安全配置。 GetSecurityConfiguration
设置Policy。 PutPolicy
projects/<project_name>/authorization/configurations/policy
查看Policy。 GetPolicy
设置protected_exception。 PutPolicy
projects/<project_name>/authorization/configurations/protected_exception
查看protected_exception。 GetPolicy
设置security_policy。 PutPolicy
projects/<project_name>/authorization/configurations/security_policy
查看security_policy。 GetPolicy
Project Account Provider管理 添加Account Provider。 AddAccountProvider
projects/<project_name>/authorization
删除Account Provider。 RemoveAccountProvider
列出Account Provider。 ListAccountProviders
Project Trusted Projects管理 添加Trusted Projects。 AddTrustedProjects
projects/<project_name>/authorization
删除Trusted Projects。 RemoveTrustedProjects
列出Trusted Projects。 ListTrustedProjects
Project Principal管理 添加用户。 AddUser
projects/<project_name>/authorization/users
删除用户。 RemoveUser
列出用户。 ListUsers
列出用户角色。 ListUserRoles
Project角色管理 添加资源类角色。 CreateRole
projects/<project_name>/authorization/roles/resource
查看资源类角色。 DescribeRole
projects/<project_name>/authorization/roles/resource/<role_name>
删除资源类角色。 DropRole
添加管理类角色。 不涉及 说明 只有Project Owner或者Super_Administrator可以创建管理类角色并对其进行赋权。删除管理类角色。 查看管理类角色。 DescribeRole
projects/<project_name>/authorization/roles/administrator/<role_name>
列出角色。 ListRoles
projects/<project_name>/authorization/roles
Project角色Policy管理 设置资源类角色Policy。 PutPolicy
projects/<project_name>/authorization/roles/resource/<role_name>
查看资源类角色Policy。 GetPolicy
增加资源类角色PolicyStatments。 AddPolicyStatments
projects/<project_name>/authorization/roles/resource/<role_name>
移除资源类角色PolicyStatments。 RemovePolicyStatments
设置管理类角色Policy。 不涉及 说明 只有Project Owner或者Super_Administrator可以创建管理类角色并对其进行赋权。查看管理类角色Policy。 GetPolicy
projects/<project_name>/authorization/roles/administrator/<role_name>
增加管理类角色PolicyStatments。 不涉及 说明 只有Project Owner或者Super_Administrator可以创建管理类角色并对其进行赋权。移除管理类角色PolicyStatments。 角色授权及查看 授予用户资源类角色。 GrantRole
projects/<project_name>/authorization/roles/resource/<role_name>
移除用户资源类角色。 RevokeRole
授予用户管理类角色。 GrantRole
projects/<project_name>/authorization/roles/administrator/<role_name>
移除用户管理类角色。 RevokeRole
授予用户Super_Administrator角色。 不涉及 说明 只有Project Owner或者Super_Administrator可以授予或移除用户Super_Administrator角色。移除用户Super_Administrator角色。 查看资源类角色用户列表。 ListRolePrincipals
projects/<project_name>/authorization/roles/resource/<role_name>
查看管理类角色用户列表。 ListRolePrincipals
projects/<project_name>/authorization/roles/administrator/<role_name>
查看Super_Administrator角色用户列表。 ListRolePrincipals
projects/<project_name>/authorization/roles/super_administrator/super_administrator
查看用户的角色列表。 ListPrincipalRoles
projects/<project_name>/authorization/principals/users
Package管理 创建Package。 CreatePackage
projects/<project_name>/authorization/packages
列出Packages。 ShowPackages
查看Package。 DescribePackage
projects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>
删除Package。 DropPackage
安装Package。 InstallPackage
projects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>
卸载Package。 UninstallPackage
许可其他Projects使用Package。 AllowInstallPackage
projects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>
撤销许可其他Projects使用Package。 DisallowInstallPackage
向Package添加资源。 AddPackageResource
projects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>
移除Package中资源。 RemovePackageResource
Label权限管控 Project内资源Label授权。 GrantLabel
projects/<project_name>/authorization/label/<resource_relative_id>
说明resource_relative_id
表示Project内资源路径,例如名称为table_1
的resource_relative_id
为tables/table_1
。- 支持资源通配符。例如
tables/*
表示Project内所有表。
Project内资源Label权限撤销。 RevokeLabel
Project内资源Label权限查看。 ShowLabelGrants
Package资源Label授权。 GrantLabel
projects/<project_name>/authorization/packageresources/<package_creater_project_name>.<package_name>/<resource_relative_id>
Package内资源Label权限撤销。 RevokeLabel
Package内资源Label权限查看。 ShowLabelGrants
查看用户Label授权。 ShowLabelGrants
projects/<project_name>/authorization/users
查看角色Label授权。 ShowLabelGrants
projects/<project_name>/authorization/roles/resource/<role_name>
说明 不支持对管理类角色进行Label授权、设置或者查看。设置用户、角色Label 设置用户Label。 SetDataLabel
projects/<project_name>/authorization/users
设置角色Label。 SetDataLabel
projects/<project_name>/authorization/roles/resource/<role_name>
ACL权限管控 Project内资源ACL授权。 GrantPrivs
projects/<project_name>/authorization/<resource_relative_id>
说明- 支持对ACL授权的
actions
进行管控。Policy中支持
例如以下Policy拒绝oStringIntersectSetEmpty(IgnoreCase)/StringIntersectSetNotEmpty(IgnoreCase)/StringSubSet(IgnoreCase)/StringNotSubSet(IgnoreCase)
字符串集合类运算。可以在Policy中使用上述运算符对Actions集合进行约束(使用acs:Privileges
条件关键字)。dpsxxxx@aliyun.com
对prj1
中所有表包含Download
或者Select
权限的ACL授权操作:{ "Action":[ "odps:GrantPrivs" ], "Effect":"Deny", "Principal":"aliyun$odpsxxxx@aliyun.com", "Resource":"acs:odps::projects/prj1/authorization/acl/tables/*", "Condition":{ "IntersectionSetNotNull":{ "acs:Privileges":["Download","Select"] } } }
- Project自身的
resource_relative_id
为projects/<project_name>
。
撤销Project内资源ACL授权。 RevokePrivs
查看Project内资源ACL授权。 ShowAclGrants
Package资源ACL授权。 GrantPrivs
projects/<project_name>/authorization/packageresources/<package_creater_project_name>.<package_name>/<resource_relative_id>
撤销Package资源ACL授权。 RevokePrivs
查看Package资源ACL授权。 ShowAclGrants
查看用户ACL授权。 ShowAclGrants
projects/<project_name>/authorization/users
查看资源类角色ACL授权。 ShowAclGrants
projects/<project_name>/authorization/roles/resource/<role_name>
清理过期权限 清理过期权限。 ClearExpiredGrants
projects/<project_name>/authorization