本文為您介紹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,主要對 |
|
專案及專案內對象許可權一覽表
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角色的使用者
Label
不涉及
讀取列級敏感性資料。
專案所有者(Project Owner)
具備Admin角色的使用者
Package
Read
將專案中的對象及允許的操作許可權進行打包,產生Package,實現跨專案授權。
專案所有者(Project Owner)
具備Admin角色的使用者
專案管理類許可權一覽表
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資源
authorization/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中支援
StringIntersectSetEmpty(IgnoreCase)/StringIntersectSetNotEmpty(IgnoreCase)/StringSubSet(IgnoreCase)/StringNotSubSet(IgnoreCase)
字串集合類運算。可以在Policy中使用上述運算子對Actions集合進行約束(使用acs:Privileges
條件關鍵字)。例如以下Policy拒絕o
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