全部產品
Search
文件中心

:通過命令系統管理使用者許可權

更新時間:Jun 19, 2024

在MaxCompute專案中添加使用者後,需要給該使用者授權,只有使用者獲得相應的許可權後,才能在專案內執行操作。MaxCompute支援通過角色為使用者授權,也支援直接為使用者授權。本文為您介紹使用者授權命令文法並提供樣本供參考。

通過繫結項目級角色為使用者授權

MaxCompute推薦將專案層級自訂的角色或內建管理角色賦予使用者,使使用者具備與角色一樣的許可權,方便批量使用者的許可權變更與回收。

說明

將MaxCompute專案級角色賦予使用者

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

  • 命令格式

    grant <role_name> to <user_name>;
  • 注意事項

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

  • 參數說明

    參數名稱

    是否必填

    說明

    role_name

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

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

    user_name

    指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

  • 使用樣本

    將專案級角色Worker綁定至已添加到MaxCompute專案的阿里雲使用者ALIYUN$5527xxxxxxxx5788、RAM使用者RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649及RAM角色RAM$5527xxxxxxxx5788:role/ram_role

    --進入test_project_a專案。
    use test_project_a;
    --將角色賦予阿里雲帳號。
    grant Worker to ALIYUN$5527xxxxxxxx5788;
    --將角色賦予RAM使用者。
    grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --將角色賦予RAM角色。
    grant Worker to `RAM$5527xxxxxxxx5788:role/ram_role`;

收回賦予使用者的MaxCompute專案級角色

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

  • 命令格式

    revoke <role_name> from <user_name>;
  • 參數說明

    參數名稱

    是否必填

    說明

    role_name

    指定待收回的角色名稱。

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

    user_name

    指定待收回角色相應的使用者名稱稱,格式如下:

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

  • 使用樣本

    收回賦予使用者ALIYUN$5527xxxxxxxx5788RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649及RAM$5527xxxxxxxx5788:role/ram_role的角色Worker。

    --進入test_project_a專案。
    use test_project_a;
    --收回賦予阿里雲帳號的角色。
    revoke Worker from ALIYUN$5527xxxxxxxx5788;
    --收回賦予RAM使用者的角色。
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --收回賦予RAM角色的角色。
    revoke Worker from `RAM$5527xxxxxxxx5788:role/ram_role`;

常見的授權情境及文法樣本

使用者授權情境

授權方式

授權人

授權操作入口

通過角色為使用者授予對象的操作許可權

先通過ACL許可權控制Policy許可權控制為角色授權,再將角色賦予使用者。

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

撤銷通過角色為使用者授予的對象的操作許可權

通過角色為使用者授予Download許可權

先通過Download許可權控制為角色授權,再將角色賦予使用者。

撤銷通過角色為使用者授予的Download許可權

通過角色為使用者授予訪問相同高敏感等級資料的許可權

先通過Label許可權控制為角色授權,再將角色賦予使用者。

撤銷通過角色為使用者授予的訪問相同高敏感等級資料的許可權

通過角色為使用者授予對象的操作許可權

通過ACL授權機制或Policy授權機製為角色授權,然後將角色賦予多個使用者。

更多為角色授權資訊,請參見為角色授予對象的操作許可權

假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。現需要為三個RAM使用者授予建立表、函數、執行個體、查看專案所有類型的對象列表的許可權。命令樣本如下。

--進入test_project_a專案。
use test_project_a;
--將Allen、Alice、Tom添加至test_project_a專案。
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
--建立角色Worker。
create role Worker;
--為角色Worker授權。
   --方式一:ACL授權。
grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker;
   --方式二:Policy授權。
grant CreateTable, CreateFunction, CreateInstance, List 
      on project test_project_a  
      to ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
--將角色Worker賦予使用者。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;

撤銷通過角色為使用者授予的對象的操作許可權

您可以通過如下方式撤銷授權:

  • 撤銷授予角色的許可權

    原本被賦予角色的所有使用者都不再具備角色相應的許可權。

  • 收回賦予使用者的角色

    只有被收回角色的使用者不再具備角色相應的許可權。其他使用者的許可權不受影響。

假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。已為三個RAM使用者通過角色Worker授予建立表、函數、執行個體、查看專案所有類型的對象列表的許可權。現需要撤銷對象的操作許可權,命令樣本如下。

  • 方式一:撤銷授予角色Worker的許可權。

    --進入test_project_a專案。
    use test_project_a;
    --為角色Worker撤銷授權。此時Allen、Alice、Tom都不再具備CreateTable, CreateFunction, CreateInstance, List許可權。
       --撤銷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。

    --進入test_project_a專案。
    use test_project_a;
    --收回賦予使用者的角色Worker。此時僅Allen不具備CreateTable, CreateFunction, CreateInstance, List許可權。
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;

通過角色為使用者授予Download許可權

通過Download授權機製為角色授權,然後將角色賦予使用者。

更多為角色授權資訊,請參見為角色授予Download許可權

假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。現需要為三個RAM使用者授予下載指定表資料的許可權。命令樣本如下。

--Bob進入test_project_a專案。
use test_project_a;
--Bob將Allen、Alice、Tom添加至test_project_a專案。
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
--Bob建立角色Worker。
create role Worker;
--Bob為角色Worker授權。
grant download on table sale_detail to ROLE Worker;
--將角色Worker賦予使用者。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;

撤銷通過角色為使用者授予的Download許可權

您可以通過如下方式撤銷授權:

  • 撤銷授予角色的許可權

    原本被賦予角色的所有使用者都不再具備角色相應的許可權。

  • 收回賦予使用者的角色

    只有被收回角色的使用者不再具備角色相應的許可權。其他使用者的許可權不受影響。

假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。已為三個RAM使用者通過角色Worker授予下載所有表資料的許可權。現需要撤銷授予使用者的下載許可權,命令樣本如下。

  • 方式一:撤銷授予角色Worker的許可權。

    --進入test_project_a專案。
    use test_project_a;
    --為角色Worker撤銷授權。此時Allen、Alice、Tom都不再具備Download許可權。
    revoke Download on table sale_detail from ROLE Worker;
  • 方式二:收回賦予使用者的角色Worker。

    --進入test_project_a專案。
    use test_project_a;
    --收回賦予使用者的角色Worker。此時僅Allen不再具備Download許可權。
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;

通過角色為使用者授予訪問相同高敏感等級資料的許可權

通過Label授權機制或Policy授權機製為角色授權,然後將角色賦予多個使用者。

更多為角色授權資訊,請參見為角色授予訪問高敏感等級資料的許可權

假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。三個RAM使用者的許可訪問標籤等級為2,現需要授予訪問專案中目標表的敏感等級為4的資料許可權。命令樣本如下。

--進入test_project_a專案。
use test_project_a;
--建立角色Worker。
create role Worker;
--為角色Worker授權。
grant Label 4 on table <table_name> to ROLE Worker;  --table_name為目標表的表名稱
--將角色Worker賦予使用者。
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
grant Worker to RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;

撤銷通過角色為使用者授予的訪問相同高敏感等級資料的許可權

您可以通過如下方式撤銷授權:

  • 撤銷授予角色的許可權

    原本被賦予角色的所有使用者都不再具備角色相應的許可權。

  • 收回賦予使用者的角色

    只有被收回角色的使用者不再具備角色相應的許可權。其他使用者的許可權不受影響。

假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。已為三個RAM使用者授予訪問專案中目標表的敏感等級為4的資料許可權。現需要撤銷使用者的訪問高敏感等級資料許可權,命令樣本如下。

  • 方式一:撤銷授予角色Worker的許可權。

    --進入test_project_a專案。
    use test_project_a;
    --為角色Worker撤銷授權。此時Allen、Alice、Tom僅能訪問最高敏感等級為2的資料。
    revoke Label on table <table_name> from ROLE Worker;     --table_name為目標表的表名稱
  • 方式二:收回賦予使用者的角色Worker。

    --進入test_project_a專案。
    use test_project_a;
    --收回賦予使用者的角色Worker。此時Allen僅能訪問最高敏感等級為2的資料,Alice、Tom仍然可以訪問最高敏感等級為4的資料。
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;

直接為使用者授權

MaxCompute支援直接為使用者授權,常見的授權情境及文法樣本如下。

說明

使用者授權情境

授權方式

授權人

授權操作入口

為使用者授予對象的操作許可權

ACL許可權控制

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

撤銷為使用者授予的對象的操作許可權

為使用者授予Download許可權

Download許可權控制

撤銷為使用者授予的Download許可權

為使用者授予訪問高敏感等級資料的許可權

Label許可權控制

撤銷為使用者授予的訪問高敏感等級資料的許可權

為使用者授予對象的操作許可權

通過ACL授權機製為使用者授予專案、表、資源、函數或執行個體的操作許可權。

  • 為使用者授予專案的操作許可權

    • 命令格式

      grant Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
            on project <project_name> 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 參數說明

      參數名稱

      是否必填

      說明

      project_name

      專案名稱:您可以登入MaxCompute控制台,左上方切換地區後,即可在專案管理頁簽擷取具體的MaxCompute專案名稱。

      user_name

      指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 為使用者授予表的操作許可權

    • 命令格式

      grant Describe|Select|Alter|Update|Drop|ShowHistory|All 
            on table <table_name> [(<column_list>)] 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 參數說明

      參數名稱

      是否必填

      說明

      table_name

      表名稱:您可以通過MaxCompute用戶端執行show tables;命令擷取表或視圖名稱。

      user_name

      指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 為使用者授予資源的操作許可權

    • 命令格式

      grant Read|Write|Delete|All 
            on resource <resource_name> 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 參數說明

      參數名稱

      是否必填

      說明

      resource_name

      資源名稱:您可以通過MaxCompute用戶端執行list resources;命令擷取資源名稱。

      user_name

      指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 為使用者授予函數的操作許可權

    • 命令格式

      grant Read|Write|Delete|Execute|All 
            on function <function_name> 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 參數說明

      參數名稱

      是否必填

      說明

      function_name

      函數名稱:您可以通過MaxCompute用戶端執行list functions;命令擷取函數名稱。

      user_name

      指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 為使用者授予執行個體的操作許可權

    • 命令格式

      grant Read|Write|All 
            on instance <instance_id> 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 參數說明

      參數名稱

      是否必填

      說明

      instance_id

      執行個體ID:您可以通過MaxCompute用戶端執行show instances;命令擷取執行個體ID。

      user_name

      指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 使用樣本

    假設ALIYUN$5527xxxxxxxx5789是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於ALIYUN$5527xxxxxxxx5789的RAM使用者。RAM$5527xxxxxxxx5789:role/ram_role是隸屬於ALIYUN$5527xxxxxxxx5789的RAM角色。ALIYUN$5527xxxxxxxx5788是其他阿里雲帳號,待加入test_project_a專案。

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

      --ALIYUN$5527xxxxxxxx5789進入test_project_a專案。
      use test_project_a;
      --將ALIYUN$5527xxxxxxxx5788加入MaxCompute專案。
      add user ALIYUN$5527xxxxxxxx5788;
      --ALIYUN$5527xxxxxxxx5789為ALIYUN$5527xxxxxxxx5788授權。
      grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to user ALIYUN$5527xxxxxxxx5788;
    • 樣本二:為RAM使用者Allen、RAM角色授予在專案中建立表、查看專案所有類型、讀取的元資訊和表資料的許可權。

      --進入test_project_a專案。
      use test_project_a;
      --將Allen添加至test_project_a專案。
      add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
      --將RAM角色添加至test_project_a專案。
      add user `RAM$5527xxxxxxxx5789:role/ram_role`;
      --為RAM使用者Allen授權。
      grant CreateTable, List on project test_project_a to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
      grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1649;
      --為RAM角色授權。
      grant CreateTable, List on project test_project_a to USER `RAM$5527xxxxxxxx5789:role/ram_role`;
      grant Describe, Select on table sale_detail to USER `RAM$5527xxxxxxxx5789:role/ram_role`;
    • 樣本三:為RAM使用者Alice授予讀取、更新資源的許可權。

      --進入test_project_a專案。
      use test_project_a;
      --將Alice添加至test_project_a專案。
      add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1650;
      --為Alice授權。
      grant Read, Write on resource udtf.jar to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1650;
    • 樣本四:為RAM使用者Tom授予讀取、更新函數的許可權。

      --進入test_project_a專案。
      use test_project_a;
      --將Tom添加至test_project_a專案。
      add user RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;
      --為Tom授權。
      grant Read, Write on function udf_test to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;
    • 樣本五:為RAM使用者Tom授予執行個體的所有操作許可權。

      --進入test_project_a專案。
      use test_project_a;
      --將Tom添加至test_project_a專案。
      add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
      --為Tom授權。
      grant All on instance 202112300224**** to USER RAM$5527xxxxxxxx5789:2763xxxxxxxxxx1651;

撤銷為使用者授予的對象的操作許可權

撤銷為使用者授予的專案、表、資源、函數或執行個體的操作許可權。

  • 撤銷為使用者授予的專案的操作許可權

    • 命令格式

      revoke Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
            on project <project_name> 
            from USER <user_name>;
    • 參數說明

      參數名稱

      是否必填

      說明

      project_name

      專案名稱:您可以登入MaxCompute控制台,左上方切換地區後,即可在專案管理頁簽擷取具體的MaxCompute專案名稱。

      user_name

      指定待收回角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 撤銷為使用者授予的表的操作許可權

    • 命令格式

      revoke Describe|Select|Alter|Update|Drop|ShowHistory|All 
            on table <table_name> [(<column_list>)] 
            from USER <user_name>;
    • 參數說明

      參數名稱

      是否必填

      說明

      table_name

      表名稱:您可以通過MaxCompute用戶端執行show tables;命令擷取表或視圖名稱。

      user_name

      指定待收回角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 撤銷為使用者授予的資源的操作許可權

    • 命令格式

      revoke Read|Write|Delete|All 
            on resource <resource_name> 
            from USER <user_name>;
    • 參數說明

      參數名稱

      是否必填

      說明

      resource_name

      資源名稱:您可以通過MaxCompute用戶端執行list resources;命令擷取資源名稱。

      user_name

      指定待收回角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 撤銷為使用者授予的函數的操作許可權

    • 命令格式

      revoke Read|Write|Delete|Execute|All 
            on function <function_name> 
            from USER <user_name>;
    • 參數說明

      參數名稱

      是否必填

      說明

      function_name

      函數名稱:您可以通過MaxCompute用戶端執行list functions;命令擷取函數名稱。

      user_name

      指定待收回角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 撤銷為使用者授予的執行個體的操作許可權

    • 命令格式

      revoke Read|Write|All 
            on instance <instance_id> 
            from USER <user_name>;
    • 參數說明

      參數名稱

      是否必填

      說明

      instance_id

      執行個體ID:您可以通過MaxCompute用戶端執行show instances;命令擷取執行個體ID。

      user_name

      指定待收回角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      privilegeproperties

      conditions

      從請求訊息來源及訪問方式等維度進行許可權控制。格式為"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支援的var_nameOperation列表,請參見Conditions

      days

      指定許可權到期時間,單位為天。未指定該參數時,許可權預設長期有效。指定該參數時,許可權到期後,MaxCompute會自動清除許可權資訊。

  • 使用樣本

    撤銷為阿里雲使用者RAM使用者授予的對象的操作許可權。命令樣本如下。

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

      --進入test_project_a專案。
      use test_project_a;
      --為阿里雲使用者撤銷授權。
      revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from user ALIYUN$5527xxxxxxxx5788;
    • 樣本二:撤銷為RAM使用者Allen授予的讀取的元資訊和表資料的許可權。

      --進入test_project_a專案。
      use test_project_a;
      --為Allen撤銷授權。
      revoke Describe, Select on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    • 樣本三:撤銷為RAM使用者Alice授予的讀取、更新資源的許可權。

      --進入test_project_a專案。
      use test_project_a;
      --為Alice撤銷授權。
      revoke Read, Write on resource udtf.jar from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1650;
    • 樣本四:撤銷為RAM使用者Tom授予的讀取、更新函數的許可權。

      --進入test_project_a專案。
      use test_project_a;
      --為Tom撤銷授權。
      revoke Read, Write on function udf_test from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
    • 樣本五:撤銷為RAM使用者Tom授予的執行個體的所有操作許可權。

      --進入test_project_a專案。
      use test_project_a;
      --為Tom撤銷授權。
      revoke All on instance 202112300224**** from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1651;
  • 為使用者授予Download許可權

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

    • 命令格式

      grant Download on {Table|Resource|Function|Instance} <object_name> to USER <user_name>;
    • 參數說明

      參數名稱

      是否必填

      說明

      object_name

      指定被授予的對象的名稱。擷取方式如下:

      • 表名稱:您可以通過MaxCompute用戶端執行show tables;命令擷取表或視圖名稱。

      • 資源名稱:您可以通過MaxCompute用戶端執行list resources;命令擷取資源名稱。

      • 函數名稱:您可以通過MaxCompute用戶端執行list functions;命令擷取函數名稱。

      • 執行個體名稱:您可以通過MaxCompute用戶端執行show instances;命令擷取執行個體ID。

      user_name

      指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

    • 使用樣本

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

      --進入test_project_a專案。
      use test_project_a;
      --為Allen授權。
      grant Download on table sale_detail to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
  • 撤銷為使用者授予的Download許可權

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

    • 命令格式

      revoke Download on {Table|Resource|Function|Instance} <object_name> from USER <user_name>;
    • 參數說明

      參數名稱

      是否必填

      說明

      object_name

      指定待回收許可權的對象的名稱。擷取方式如下:

      • 表名稱:您可以通過MaxCompute用戶端執行show tables;命令擷取表或視圖名稱。

      • 資源名稱:您可以通過MaxCompute用戶端執行list resources;命令擷取資源名稱。

      • 函數名稱:您可以通過MaxCompute用戶端執行list functions;命令擷取函數名稱。

      • 執行個體名稱:您可以通過MaxCompute用戶端執行show instances;命令擷取執行個體ID。

      user_name

      指定待收回角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

    • 使用樣本

      撤銷為使用者Allen授予的下載指定表資料的許可權。命令樣本如下。

      --進入test_project_a專案。
      use test_project_a;
      --為Allen撤銷授權。
      revoke Download on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
  • 為使用者授予訪問高敏感等級資料的許可權

    通過Label授權機製為使用者授予訪問高敏感等級資料的許可權。

    • 命令格式

      grant Label <number> on table <table_name> [(<column_list>)] to USER <user_name> [with exp <days>];
    • 參數說明

      參數名稱

      是否必填

      說明

      number

      指定使用者或角色可訪問的最高資料敏感等級。

      取值範圍為0~9,與資料敏感等級標籤相對應。

      table_name

      指定目標表或視圖的名稱。

      您可以通過MaxCompute用戶端執行show tables;命令擷取表或視圖名稱。

      column_list

      當需要授予目標表或視圖中指定列的存取權限時,需要配置該參數。單次授權可以指定多個列名,列名之間用英文逗號(,)分隔。

      user_name

      指定待綁定角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

      days

      指定許可權到期時間,單位為天。取值範圍為:0~263-1。不指定該參數時,預設到期時間為180天。

    • 使用樣本

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

      --進入test_project_a專案。
      use test_project_a;
      --為使用者Allen授權。
      grant Label 4 on table sale_detail to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
  • 撤銷為使用者授予的訪問高敏感等級資料的許可權

    • 命令格式

      revoke Label <number> on table <table_name> [(<column_list>)] from USER <user_name>;
    • 參數說明

      參數名稱

      是否必填

      說明

      number

      指定使用者或角色待回收存取權限的最高資料敏感等級。

      取值範圍為0~9,與資料敏感等級標籤相對應。

      table_name

      指定待回收存取權限的目標表或視圖的名稱。

      您可以通過MaxCompute用戶端執行show tables;命令擷取表或視圖名稱。

      column_list

      當需要撤銷目標表或視圖中指定列的存取權限時,需要配置該參數。單次授權可以指定多個列名,列名之間用英文逗號(,)分隔。

      user_name

      指定待收回角色的已加入MaxCompute專案的使用者名稱稱,格式如下:

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

    • 使用樣本

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

      --進入test_project_a專案。
      use test_project_a;
      --為使用者Allen撤銷授權。
      revoke Label 4 on table sale_detail from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;

徹底清除被刪除使用者遺留的許可權資訊

使用者被移出專案後,ACL、Policy、Label等許可權資料還留存在專案中。當移出的使用者又再次進入該專案時,將會擁有原來的ACL、Policy、Label等許可權,即使用者如果被誤刪,被重新加回專案時可以直接使用原先保留的許可權。但是,如果使用者以不同的身份被加回原專案時,會有潛在的資料安全風險。

基於如上背景,MaxCompute提供清空使用者權限的功能,如果使用者已經不在專案中,但有ACL、Policy、Label等許可權的,專案所有者或擁有Admin、Super_Administrator角色的使用者可以執行如下命令清除遺留的許可權資訊。

  • 命令格式

purge privs from user <user_name>;
  • 參數說明

    參數名稱

    是否必填

    說明

    user_name

    指定待清除遺留許可權資訊的已移出MaxCompute專案的使用者名稱稱,格式如下:

說明

如果未將使用者移出專案,執行該命令會返回"Principal <username> still exist in the project"報錯。因此需要先使用remove user <user_name>命令將使用者移出專案。

後續指引

完成使用者授權後,您可以查詢使用者授權資訊,請參見查詢使用者權限資訊