全部產品
Search
文件中心

MaxCompute:專案層級角色授權

更新時間:Oct 29, 2025

當需要為MaxCompute專案中的多個使用者授予相同許可權時,您可以在MaxCompute專案中建立角色並為角色授權,然後將角色綁定至使用者,使用者會同時具備角色相應的許可權。本文介紹專案層級角色授權文法並提供參考樣本。

角色授權情境

MaxCompute支援的角色授權情境如下。為角色授權後,即可將角色賦予使用者。當使用者不再需要角色相應的許可權時,可收回賦予使用者的角色

角色授權情境

授權方式

授權人

授權操作入口

為角色授予對象的操作許可權

請參見許可權一覽表的支援的授權人列。

撤銷為角色授予的對象的操作許可權

為角色授予Download許可權

Download許可權控制

撤銷為角色授予的Download許可權

為角色授予訪問高敏感等級資料的許可權

Label許可權控制

撤銷為角色授予的訪問高敏感等級資料的許可權

為角色授予對象的操作許可權

為角色授予專案、表、模型、資源、函數或執行個體的操作許可權。

  • 命令格式

    • 為角色授予專案的操作許可權

      • ACL授權

        GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
              ON project <project_name> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • 通過ACL文法實現Policy授權

        GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
              ON project <project_name> 
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • 為角色授予的操作許可權

      • ACL授權

        GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All 
              ON TABLE <table_name> [(<column_list>)] 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • 通過ACL文法實現Policy授權

        GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All 
              ON TABLE <table_name> [(<column_list>)] 
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • 為角色授予模型的操作許可權

      • ACL授權

        GRANT Describe|Execute|Alter|Drop|All 
              ON MODEL <model_name> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • 通過ACL文法實現Policy授權

        GRANT Describe|Execute|Alter|Drop|All 
              ON MODEL <model_name> 
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • 為角色授予資源的操作許可權

      • ACL授權

        GRANT Read|Write|Delete|All 
              ON resource <resource_name> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • 通過ACL文法實現Policy授權

        GRANT Read|Write|Delete|All 
              ON resource <resource_name> 
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • 為角色授予函數的操作許可權

      • ACL授權

        GRANT Read|Write|Delete|Execute|All 
              ON FUNCTION <function_name> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • 通過ACL文法實現Policy授權

        GRANT Read|Write|Delete|Execute|All 
              ON FUNCTION <function_name>  
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
    • 為角色授予執行個體的操作許可權

      • ACL授權

        GRANT Read|Write|All 
              ON instance <instance_id> 
              TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
      • 通過ACL文法實現Policy授權

        GRANT Read|Write|All  
              ON instance <instance_id>   
              TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
  • 參數說明

    詳細參數解釋,請參見ACL許可權控制Policy許可權控制

  • 使用樣本

    假設Bob@aliyun.com是test_project_a的專案所有者,test_project_a專案已建立了角色Worker,現需要對角色進行授權。命令樣本如下。

    • 樣本一:為角色授予在專案中建立表、函數、執行個體、查看專案所有類型的對象列表的許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --ACL授權。
      GRANT CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker;
      --通過ACL文法實現Policy授權。
      GRANT CreateTable, CreateFunction, CreateInstance, List 
            ON project test_project_a  
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本二:為角色授予讀取的元資訊和表資料的許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --ACL授權。
      GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker;
      --通過ACL文法實現Policy授權。
      GRANT Describe, Select  
            ON TABLE sale_detail   
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本三:為角色授予模型的所有許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --ACL授權。
      GRANT All ON MODEL my_model TO ROLE Worker;
      --通過ACL文法實現Policy授權。
      GRANT All  
            ON MODEL my_model  
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本四:為角色授予讀取、更新資源的許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --ACL授權。
      GRANT Read, Write ON resource udtf.jar TO ROLE Worker;
      --通過ACL文法實現Policy授權。
      GRANT Read, Write   
            ON resource udtf.jar  
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本五:為角色授予讀取、更新函數的許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --ACL授權。
      GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker;
      --通過ACL文法實現Policy授權。
      GRANT Read, Write   
            ON FUNCTION udf_test  
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本六:為角色授予執行個體的所有操作許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --ACL授權。
      GRANT All ON instance 202112300224**** TO ROLE Worker;
      --通過ACL文法實現Policy授權。
      GRANT All    
            ON instance 202112300224****   
            TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

撤銷為角色授予的對象的操作許可權

撤銷為角色授予的專案、表、模型、資源、函數或執行個體的操作許可權。

  • 命令格式

    • 撤銷為角色授予的專案的操作許可權

      • 撤銷ACL授權

        REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
              ON project <project_name> 
              FROM ROLE <role_name>;
      • 撤銷Policy授權

        REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
              ON project <project_name> 
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • 撤銷為角色授予的的操作許可權

      • 撤銷ACL授權

        REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All 
              ON TABLE <table_name> [(<column_list>)] 
              FROM ROLE <role_name>;
      • 撤銷Policy授權

        REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All 
              ON TABLE <table_name> [(<column_list>)] 
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • 撤銷為角色授予的模型的操作許可權

      • 撤銷ACL授權

        REVOKE Describe|Execute|Alter|Drop|All 
              ON MODEL <model_name>
              FROM ROLE <role_name>;
      • 撤銷Policy授權

        REVOKE Describe|Execute|Alter|Drop|All 
              ON MODEL <model_name> 
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • 撤銷為角色授予的資源的操作許可權

      • 撤銷ACL授權

        REVOKE Read|Write|Delete|All 
              ON resource <resource_name> 
              FROM ROLE <role_name>;
      • 撤銷Policy授權

        REVOKE Read|Write|Delete|All 
              ON resource <resource_name> 
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • 撤銷為角色授予的函數的操作許可權

      • 撤銷ACL授權

        REVOKE Read|Write|Delete|Execute|All 
              ON FUNCTION <function_name> 
              FROM ROLE <role_name>;
      • 撤銷Policy授權

        REVOKE Read|Write|Delete|Execute|All 
              ON FUNCTION <function_name>  
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
    • 撤銷為角色授予的執行個體的操作許可權

      • 撤銷ACL授權

        REVOKE Read|Write|All 
              ON instance <instance_id> 
              FROM ROLE <role_name>;
      • 撤銷Policy授權

        REVOKE Read|Write|All  
              ON instance <instance_id>   
              FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
  • 參數說明

    詳細參數解釋,請參見ACL許可權控制Policy許可權控制

  • 使用樣本

    撤銷為角色Worker授與權限。命令樣本如下。

    • 樣本一:撤銷為角色Worker授予的在專案中建立表、函數、執行個體、查看專案所有類型的對象列表的許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --撤銷ACL授權。
      REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker;
      --撤銷Policy授權。
      REVOKE CreateTable, CreateFunction, CreateInstance, List 
            ON project test_project_a  
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本二:撤銷為角色Worker授予的讀取的元資訊和表資料的許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --撤銷ACL授權。
      REVOKE Describe, Select ON TABLE sale_detail TO ROLE Worker;
      --撤銷Policy授權。
      REVOKE Describe, Select  
            ON TABLE sale_detail   
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本三:撤銷為角色Worker授予的模型的所有許可權。

      --Bob進入test_project_a專案。
      use test_project_a;
      --撤銷ACL授權。
      REVOKE All ON MODEL my_model FROM ROLE Worker;
      --撤銷Policy授權。
      REVOKE All  
            ON MODEL my_model  
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本四:撤銷為角色Worker授予的讀取、更新資源的許可權。

      --Bob進入test_project_a專案。
      USE test_project_a;
      --撤銷ACL授權。
      REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker;
      --撤銷Policy授權。
      REVOKE Read, Write   
            ON resource udtf.jar  
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本五:撤銷為角色Worker授予的讀取、更新函數的許可權。

      --Bob進入test_project_a專案。
      USE test_project_a;
      --撤銷ACL授權。
      REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker;
      --撤銷Policy授權。
      REVOKE Read, Write   
            ON FUNCTION udf_test  
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
    • 樣本六:撤銷為角色Worker授予的執行個體的所有操作許可權。

      --Bob進入test_project_a專案。
      USE test_project_a;
      --撤銷ACL授權。
      REVOKE All ON instance 202112300224**** FROM ROLE Worker;
      --撤銷Policy授權。
      REVOKE All    
            ON instance 202112300224****   
            FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");

為角色授予Download許可權

為角色授予下載表資料、資源、函數或執行個體的許可權。

  • 命令格式

    GRANT Download ON {Table|Resource|Function|Instance} <object_name> TO ROLE <role_name>;
  • 參數說明

    詳細參數解釋,請參見Download許可權控制

  • 使用樣本

    假設test_project_a專案開啟了Download許可權管控,需要為角色Worker授予下載指定表資料的許可權。命令樣本如下。

    --Bob進入test_project_a專案。
    USE test_project_a;
    --Bob為角色Worker授權。
    GRANT Download ON TABLE sale_detail TO ROLE Worker;

撤銷為角色授予的Download許可權

撤銷為角色授予的下載表資料、資源、函數或執行個體的許可權。

  • 命令格式

    REVOKE Download ON {Table|Resource|Function|Instance} <object_name> FROM ROLE <role_name>;
  • 參數說明

    詳細參數解釋,請參見Download許可權控制

  • 使用樣本

    撤銷為角色Worker授予的下載指定表資料的許可權。命令樣本如下。

    --Bob進入test_project_a專案。
    USE test_project_a;
    --Bob為角色Worker撤銷授權。
    REVOKE Download ON TABLE sale_detail FROM ROLE Worker;

為角色授予訪問高敏感等級資料的許可權

為角色設定訪問許可等級標籤後,如果角色需要訪問更進階別的敏感性資料,需要進行授權。更多設定角色訪問許可等級標籤資訊,請參見為使用者或角色設定訪問許可等級標籤

  • 命令格式

    GRANT Label <number> ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [WITH exp <days>];
  • 參數說明

    詳細參數解釋,請參見Label顯式授權

  • 使用樣本

    假設test_project_a專案中,角色的許可訪問標籤等級為2,現需要為角色Worker授予訪問sale_detail表中最高敏感等級為4的資料許可權。命令樣本如下。

    --Bob進入test_project_a專案。
    USE test_project_a;
    --Bob為角色Worker授權。
    GRANT Label 4 ON TABLE sale_detail TO ROLE Worker;

撤銷為角色授予的訪問高敏感等級資料的許可權

撤銷為角色授予的訪問高敏感等級資料的許可權。角色自身的許可訪問等級不受影響。

  • 命令格式

    REVOKE Label ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>;
  • 參數說明

    詳細參數解釋,請參見撤銷Label顯式授權

  • 使用樣本

    撤銷為角色Worker授予的訪問sale_detail表中最高敏感等級為4的資料許可權。命令樣本如下。

    --Bob進入test_project_a專案。
    USE test_project_a;
    --Bob為角色Worker撤銷授權。
    REVOKE Label ON TABLE sale_detail FROM ROLE Worker;

將角色賦予使用者

將專案層級的內建角色或自訂角色綁定至使用者,使用者會同時具備角色相應的許可權。

  • 命令格式

    GRANT <role_name> TO <user_name>;
  • 注意事項

    多個使用者可以同時存在於一個角色下,一個使用者也可以隸屬於多個角色。

  • 參數說明

    參數名稱

    是否必填

    說明

    role_name

    指定待賦予使用者的角色名稱。

    您可以通過MaxCompute用戶端執行list roles;命令查看角色資訊。

    user_name

    指定待綁定角色的使用者名稱稱。

    您可以通過MaxCompute用戶端執行list users;命令查看使用者資訊。

  • 使用樣本

    將角色Worker綁定至已添加到MaxCompute專案的使用者Kate@aliyun.com及RAM$Bob@aliyun.com:Allen。

    --Bob進入test_project_a專案。
    USE test_project_a;
    --Bob將角色賦予使用者。
    GRANT Worker TO ALIYUN$Ka**@aliyun.com;
    GRANT Worker TO RAM$Bob@aliyun.com:Allen;

收回賦予使用者的角色

解除綁定賦予使用者的角色,使用者將不再具備角色相應的許可權。

  • 命令格式

    REVOKE <role_name> FROM <user_name>;
  • 參數說明

    參數名稱

    是否必填

    說明

    role_name

    指定待收回的角色名稱。

    您可以通過MaxCompute用戶端執行list roles;命令擷取角色名稱。

    user_name

    指定待收回角色相應的使用者名稱稱。

    您可以通過MaxCompute用戶端執行list users;命令擷取使用者名稱稱。

  • 使用樣本

    收回賦予使用者Kate@aliyun.com及RAM$Bob@aliyun.com:Allen的角色Worker。

    --Bob進入test_project_a專案。
    USE test_project_a;
    --Bob收回賦予使用者的角色。
    REVOKE Worker FROM ALIYUN$Kate@aliyun.com;
    REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;

後續指引

完成角色授權後,您可以根據實際業務需要執行如下操作: