本文為您介紹MaxCompute支援的許可權資訊。
背景資訊
MaxCompute細化了專案(Project)、Quota、Networklink對象以及專案內的表(Table)、模型(Model)、函數(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)
暫未開放授權能力
acs:odps:*:projects/<project_name>
Write
更新專案自身(不包括專案中的任何對象)的資訊。
List
查看專案所有類型的對象列表。例如
SHOW TABLES;、SHOW FUNCTIONS;、SHOW MODELS;等。專案所有者(Project Owner)
具備Super_Administrator或Admin角色的使用者
為使用者或角色授權:ACL許可權控制
為角色授權:Policy許可權控制
CreateTable
在專案中建立表(Table)。例如
CREATE TABLE <table_name>...;。CreateModel
在專案中建立模型(Model),例如
CREATE Model <model_name>...;。CreateInstance
在專案中建立執行個體(Instance),即運行作業。
CreateFunction
在專案中建立自訂函數(Function)。例如
CREATE FUNCTION <function_name> ...;。CreateResource
在專案中添加資源(Resource)。例如
add file|archive|py|jar <local_file>... ;、add table <table_name> ...;。All
具備上述Project的所有許可權。
Schema
Describe
讀取Schema本身的中繼資料資訊,包含Schema建立時間、修改時間、所有者等。例如
DESC SCHEMA <schema_name>;。說明不包含Schema中的Table、Resource、Function的中繼資料資訊。
專案的所有者(Project Owner)
Schema所有者(Schema Owner)
具備Super_Adminstrator或Admin角色的使用者
acs:odps:*:projects/<project_name>/schemas/<schema_name>
Alter
修改Schema的中繼資料資訊,包含修改Schema的所有人、注釋。例如
ALTER Schema <schema_name> CHANGEOWNER TO <new_owner>;、ALTER Schema <schema_name> SET COMMENT '<new_comment>';。說明不包含修改Schema中的Table、Resource、Function的中繼資料資訊。
Drop
刪除Schema。例如
DROP SCHEMA <schema_name>;。List
查看Schema中所有類型的對象列表。例如
SHOW TABLES;、SHOW FUNCTIONS;、SHOW MODELS;等。CreateTable
在Schema中建立表(Table)。例如
CREATE TABLE <table_name>...;。CreateModel
在Schema中建立模型(Model),例如
CREATE Model <model_name>...;。CreateFunction
在Schema中建立自訂函數(Function)。例如
CREATE FUNCTION <function_name>...;。CreateResource
在Schema中添加資源(Resource)。例如
add file|archive|py|jar <local_file>...;、add table <table_name> ...;。All
具備上述Schema的所有許可權。
Table
Describe
讀取表的中繼資料資訊,包含表結構、建立時間、修改時間、表資料大小等。例如
DESC <table_name>;。表所有者
專案所有者(Project Owner)
Schema所有者(Schema Owner)
具備Super_Administrator角色的使用者
具備Admin角色的使用者(不支援修改表所有人)
開啟三層模型前:
acs:odps:*:projects/<project_name>/tables/<table_name>
開啟三層模型後:
acs:odps:*:projects/<project_name>/schemas/<schema_name>/tables/<table_name>
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的所有許可權。
Model
Describe
讀模數型中繼資料資訊,包含模型及模型版本類型、描述、建立時間等。例如
DESC <model_name>...;模型所有者
專案所有者(Project Owner)
Schema所有者(Schema Owner)
具備Super_Administrator角色的使用者
具備Admin角色的使用者(不支援修改模型所有人)
開啟三層模型前:acs:odps:*:projects/<project_name>/models/<model_name>
開啟三層模型後:acs:odps:*:projects/<project_name>/schemas/<schema_name>/models/<model_name>
Execute
調用模型,包含在AI Function中指定模型進行推理。
Alter
修改模型的中繼資料資訊,包含新增模型版本或修改模型預設版本等。例如
ALTER Model <model_name>...;。Drop
刪除模型。例如
DROP MODEL <table_name>;。All
具備上述model的所有許可權。
Function
Read
讀取自訂函數(MaxCompute UDF)的程式檔案。
函數所有者
專案所有者(Project Owner)
Schema所有者(Schema Owner)
具備Super_Administrator或Admin角色的使用者
開啟三層模型前:acs:odps:*:projects/<project_name>/registration/functions/<functions_name>
開啟三層模型後:acs:odps:*:projects/<project_name>/schemas/<schema_name>/registration/functions/<functions_name>
Write
更新自訂函數。
Delete
刪除自訂函數。例如
DROP FUNCTION <function_name>;。Execute
調用自訂函數。例如
SELECT <function_name> FROM ...;。All
具備上述Function的所有許可權。
Resource
Read
讀取資源。
資源所有者
專案所有者(Project Owner)
具備Super_Administrator或Admin角色的使用者
開啟三層模型前:acs:odps:*:projects/<project_name>/resources/<resources_name>
開啟三層模型後:acs:odps:*:projects/<project_name>/schemas/<schema_name>/resources/<resources_name>
Write
更新資源。
Delete
刪除資源。例如
DROP RESOURCE <resource_name>;。All
具備上述Resource的所有許可權。
External Volume
CreateVolume
建立External Volume。
External Volume所有者
專案所有者(Project Owner)
具備Super_Administrator或Admin角色的使用者
acs:odps:*:projects/<project_name>/volumes/<volume_name>
Read
讀取External Volume。
Write
更新External Volume。
Delete
刪除External Volume。例如
vfs -rm -r <volume_path>;。All
具備上述External Volume的所有許可權。
Instance
Read
讀取執行個體。
專案所有者(Project Owner)
具備Super_Administrator或Admin角色的使用者
acs:odps:*:projects/<project_name>/instances/*
Write
更新執行個體。
All
具備上述Instance的所有許可權。
說明Project的CreateTable操作,Table的Select、Alter、Update和Drop操作需要與Project的CreateInstance操作許可權配合使用。
如果您單獨使用Table的上述幾種許可權,且沒有CreateInstance許可權,則無法完成對應操作。例如,當您通過專案A查詢專案B的表時,需要具備專案A的CreateInstance許可權和專案B的表Select許可權。
為Project開啟三層模型後,Table、Function、Resource的資源描述會增加Schema層級,原資源描述寫法
acs:odps:*:projects/<project_name>/tables/<table_name>只代表defaultSchema的資源,等效寫法為acs:odps:*:projects/<project_name>/schemas/default/tables/<table_name>,建議您按需調整。
行為
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分類:
說明以下Resource URI中省略
acs:odps:*:projects/<project_name>/部分,只書寫<project_name>/後面的部分。權限物件類別
Resource 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安全配置許可權
設定安全配置。
SetSecurityConfigurationprojects/<project_name>/authorization/configurations/security_configuration查看安全配置。
GetSecurityConfiguration設定Policy。
PutPolicyprojects/<project_name>/authorization/configurations/policy查看Policy。
GetPolicy設定protected_exception。
PutPolicyprojects/<project_name>/authorization/configurations/protected_exception查看protected_exception。
GetPolicy設定security_policy。
PutPolicyprojects/<project_name>/authorization/configurations/security_policy查看security_policy。
GetPolicyProject Account Provider管理
添加Account Provider。
AddAccountProviderprojects/<project_name>/authorization刪除Account Provider。
RemoveAccountProvider列出Account Provider。
ListAccountProvidersProject Trusted Projects管理
添加Trusted Projects。
AddTrustedProjectsprojects/<project_name>/authorization刪除Trusted Projects。
RemoveTrustedProjects列出Trusted Projects。
ListTrustedProjectsProject Principal管理
添加使用者。
AddUserprojects/<project_name>/authorization/users刪除使用者。
RemoveUser列出使用者。
ListUsers列出使用者角色。
ListUserRolesProject角色管理
添加資源類角色。
CreateRoleprojects/<project_name>/authorization/roles/resource查看資源類角色。
DescribeRoleprojects/<project_name>/authorization/roles/resource/<role_name>刪除資源類角色。
DropRole添加管理類角色。
不涉及
說明只有Project Owner或者Super_Administrator可以建立管理類角色並對其進行賦權。
刪除管理類角色。
查看管理類角色。
DescribeRoleprojects/<project_name>/authorization/roles/administrator/<role_name>列出角色。
ListRolesprojects/<project_name>/authorization/rolesProject角色Policy管理
設定資源類角色Policy。
PutPolicyprojects/<project_name>/authorization/roles/resource/<role_name>查看資源類角色Policy。
GetPolicy增加資源類角色PolicyStatments。
AddPolicyStatmentsprojects/<project_name>/authorization/roles/resource/<role_name>移除資源類角色PolicyStatments。
RemovePolicyStatments設定管理類角色Policy。
不涉及
說明只有Project Owner或者Super_Administrator可以建立管理類角色並對其進行賦權。
查看管理類角色Policy。
GetPolicyprojects/<project_name>/authorization/roles/administrator/<role_name>增加管理類角色PolicyStatments。
不涉及
說明只有Project Owner或者Super_Administrator可以建立管理類角色並對其進行賦權。
移除管理類角色PolicyStatments。
角色授權及查看
授予使用者資源類角色。
GrantRoleprojects/<project_name>/authorization/roles/resource/<role_name>移除使用者資源類角色。
RevokeRole授予使用者管理類角色。
GrantRoleprojects/<project_name>/authorization/roles/administrator/<role_name>移除使用者管理類角色。
RevokeRole授予使用者Super_Administrator角色。
不涉及
說明只有Project Owner或者Super_Administrator可以授予或移除使用者Super_Administrator角色。
移除使用者Super_Administrator角色。
查看資源類角色使用者列表。
ListRolePrincipalsprojects/<project_name>/authorization/roles/resource/<role_name>查看管理類角色使用者列表。
ListRolePrincipalsprojects/<project_name>/authorization/roles/administrator/<role_name>查看Super_Administrator角色使用者列表。
ListRolePrincipalsprojects/<project_name>/authorization/roles/super_administrator/super_administrator查看使用者的角色列表。
ListPrincipalRolesprojects/<project_name>/authorization/principals/usersPackage管理
建立Package。
CreatePackageprojects/<project_name>/authorization/packages列出Packages。
ShowPackages查看Package。
DescribePackageprojects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>刪除Package。
DropPackage安裝Package。
InstallPackageprojects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>卸載Package。
UninstallPackage許可其他Projects使用Package。
AllowInstallPackageprojects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>撤銷許可其他Projects使用Package。
DisallowInstallPackage向Package添加資源。
AddPackageResourceprojects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>移除Package中資源。
RemovePackageResourceLabel許可權管控
Project內資源Label授權。
GrantLabelprojects/<project_name>/authorization/schemas/*/tables/*說明支援資源萬用字元。例如
tables/*表示Project內所有表。Project內資源Label許可權撤銷。
RevokeLabelProject內資源Label許可權查看。
ShowLabelGrantsPackage資源Label授權。
GrantLabelprojects/<project_name>/authorization/packageresources/<package_creater_project_name>.<package_name>/<resource_relative_id>Package內資源Label許可權撤銷。
RevokeLabelPackage內資源Label許可權查看。
ShowLabelGrants查看使用者Label授權。
ShowLabelGrantsprojects/<project_name>/authorization/users查看角色Label授權。
ShowLabelGrantsprojects/<project_name>/authorization/roles/resource/<role_name>說明不支援對管理類角色進行Label授權、設定或者查看。
設定使用者、角色Label
設定使用者Label。
SetDataLabelprojects/<project_name>/authorization/users設定角色Label。
SetDataLabelprojects/<project_name>/authorization/roles/resource/<role_name>ACL許可權管控
Project內資源ACL授權。
GrantPrivsprojects/<project_name>/authorization/<resource_relative_id>說明支援對ACL授權的
actions進行管控。Policy中支援
StringIntersectSetEmpty(IgnoreCase)/StringIntersectSetNotEmpty(IgnoreCase)/StringSubSet(IgnoreCase)/StringNotSubSet(IgnoreCase)字串集合類運算。可以在Policy中使用上述運算子對Actions集合進行約束(使用acs:Privileges條件關鍵字)。例如以下Policy拒絕
odpsxxxx@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授權。
ShowAclGrantsPackage資源ACL授權。
GrantPrivsprojects/<project_name>/authorization/packageresources/<package_creater_project_name>.<package_name>/<resource_relative_id>撤銷Package資源ACL授權。
RevokePrivs查看Package資源ACL授權。
ShowAclGrants查看使用者ACL授權。
ShowAclGrantsprojects/<project_name>/authorization/users查看資源類角色ACL授權。
ShowAclGrantsprojects/<project_name>/authorization/roles/resource/<role_name>清理到期許可權
清理到期許可權。
ClearExpiredGrantsprojects/<project_name>/authorization