全部產品
Search
文件中心

:專案層級角色授權

更新時間:Jun 19, 2024

當需要為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 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 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 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 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$Kate@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;

後續指引

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