全部產品
Search
文件中心

:MaxCompute許可權

更新時間:Jun 19, 2024

本文為您介紹MaxCompute支援的許可權資訊。

背景資訊

MaxCompute細化了專案(Project)、Quota、Networklink對象以及專案內的表(Table)、函數(Function)、資源(Resource)及執行個體(Instance)對象的操作,同時還支援對Tunnel下載、敏感性資料訪問及跨專案訪問行為進行管控。在專案實際運行過程中,可以根據人員操作範疇進行精細化授權,為各對象安全提供可靠保障。

執行許可權授權操作時,需要包含如下三個要素。

許可權要素

說明

主體(Subject)

被授予許可權的使用者或角色,即被授權人。

需要注意的是:

  • 被授權人必須已添加至MaxCompute專案中。

  • 使用阿里雲帳號執行授權操作時,支援為當前帳號下的RAM使用者和其他阿里雲帳號授權。

  • 使用RAM使用者帳號執行授權操作時,僅支援為隸屬同一個阿里雲帳號的其他RAM使用者授權,不支援為其他帳號授權。

說明

授權人為執行授權操作的使用者。授權人需要具備為目標客體和目標操作授權的能力,才可以執行授權操作。

客體(Object)

MaxCompute租戶內的對象。

MaxCompute專案中的對象或行為。

  • 對象

    • 專案(Project):MaxCompute專案。

    • 表(Table):MaxCompute專案中的表或視圖。

      在MaxCompute專案中,視圖(View)是虛擬表,許可權操作與表相同(若視圖Owner缺失視圖參考資料表的SELECT許可權,則視圖不可用)。

    • 函數(Function):MaxCompute專案中使用者自訂的函數(MaxCompute UDF)。

    • 資源(Resource):MaxCompute專案中上傳的資源,例如JAR包、ZIP包。

    • 執行個體(Instance):MaxCompute作業運行時產生的執行個體。

  • 行為

    • Tunnel下載:下載表、函數、資源或執行個體。

    • 列層級敏感性資料:訪問表或表的列級敏感性資料。

    • Package:跨專案訪問資源。

    • 管理類許可權管控:對許可權資源(Resource)執行某種操作(Action)。

操作(Action)

操作與客體類型有關,不同客體類型所支援的操作不相同。例如表的讀、寫、查操作。

租戶內對象許可權一覽表

MaxCompute租戶內對象的許可權關係表如下。

客體(Object)

操作(Action)

說明

支援的授權人

支援的授權方案

Networklink

List

查看網路連接所有類型的對象列表。

  • 專案所有者(Project Owner)

  • 具備Super_Administrator或Admin角色的使用者

為角色授權:Policy許可權控制

CreateNetworklink

在租戶建立網路連接對象(Networklink)。

Describe

讀取網路連接對象的元資訊。

Drop

刪除網路連接對象。

All

具備上述網路連接對象的所有許可權。

Quota

Usage

使用Quota,主要對use quota功能進行鑒權。

  • 專案所有者(Project Owner)

  • 具備Super_Administrator或Admin角色的使用者

專案及專案內對象許可權一覽表

MaxCompute專案及專案內對象支援的許可權列表如下:

  • 對象

    MaxCompute專案及專案內對象的許可權關係表如下。

    客體(Object)

    操作(Action)

    說明

    支援的授權人

    支援的授權方案

    Project

    Read

    查看專案自身(不包括專案中的任何對象)的資訊。

    專案所有者(Project Owner)

    暫未開放授權能力

    Write

    更新專案自身(不包括專案中的任何對象)的資訊。

    List

    查看專案所有類型的對象列表。例如show tables;show functions;等。

    • 專案所有者(Project Owner)

    • 具備Super_Administrator或Admin角色的使用者

    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資源

    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_1resource_relative_idtables/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拒絕odpsxxxx@aliyun.comprj1中所有表包含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_idprojects/<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