全部產品
Search
文件中心

MaxCompute:REVOKE

更新時間:Jun 19, 2024

MaxCompute支援通過ACL(Access Control Lists)、Policy方式撤銷使用者或角色對指定對象執行指定操作的許可權。

前提條件

使用ACL、Policy許可權控制方案前,請您確認已記錄好如下資訊:

  • 被授權人的帳號或角色名稱,且帳號或角色已添加至MaxCompute專案。阿里雲帳號格式為ALIYUN$阿里雲帳號,RAM使用者帳號格式為RAM$歸屬阿里雲帳號:RAM使用者名稱

    您可以通過MaxCompute用戶端執行list users;list roles;命令擷取帳號或角色資訊。

    如果需要新增使用者或角色,請參見使用者規劃與管理角色規劃

  • 授權物件類型、對象名稱及操作。

    更多個物件類型及操作資訊,請參見MaxCompute許可權

使用限制

ACL許可權控制功能的使用限制如下:

  • ACL許可權控制只支援對已存在的對象、被授權人進行授權,可以避免刪除並重建同名對象所帶來的安全風險。

  • ACL許可權控制不支援通過[with grant option]子句授權。例如當使用者A授權使用者B可以訪問某個對象時,使用者B無法將許可權進一步授權給使用者C。

  • ACL授權為白名單(Allow)授權,不支援黑名單(Deny)授權。

  • Policy許可權控制只支援對已存在的角色進行授權。

注意事項

  • 使用ACL許可權控制功能的注意事項如下:

    • 如果刪除了對象,MaxCompute會自動撤銷與該對象關聯的所有ACL授權資訊。

    • 當一個使用者被移除後,與該使用者有關的授權仍然會被保留。一旦該使用者以後被再次添加到該專案時,該使用者的歷史授權存取權限將被重新啟用。如果需要徹底清除使用者的許可權資訊,請參見徹底清除被刪除使用者遺留的許可權資訊

  • 使用Policy許可權控制功能的注意事項如下:

    • Policy許可權控制允許對不存在的對象授權,當刪除對象時,與該對象關聯的Policy授權資訊不會被刪除,授權人需要注意刪除並重建同名對象所帶來的安全風險。

    • 當一個使用者被移除後,與該使用者有關的授權仍然會被保留。一旦該使用者以後被再次添加到該專案時,該使用者的歷史授權存取權限將被重新啟用。如果需要徹底清除使用者的許可權資訊,請參見徹底清除被刪除使用者遺留的許可權資訊

命令格式

  • 撤銷ACL授權

    revoke <actions> on <object_type> <object_name> 
    [(<column_list>)] from <subject_type> <subject_name>;
  • 撤銷Policy授權

    revoke <actions> on <object_type> <object_name> 
    from ROLE <role_name> 
    privilegeproperties ("policy" = "true", "allow"="{true|false}");

參數說明

參數名稱

是否必填

說明

actions

指定被授予的操作許可權名稱。單次授權可以指定單個或多個操作。

當有多個操作時,多個操作名稱之間使用英文逗號(,)分隔。操作取值請參見MaxCompute許可權

object_type

指定被授予的物件類型,即客體。單次授權只能指定一個客體。

客體取值請參見MaxCompute許可權

object_name

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

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

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

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

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

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

授權對象支援以萬用字元星號(*)來表達。例如,table taobao*表示所有以taobao開頭的表。

說明

授權給ROLE支援使用萬用字元星號(*);授權給USER不支援使用萬用字元。

column_list

僅當object_type為Table,且需要對錶進行列層級許可權控制時,需要配置該參數。單次授權可以指定單個或多個列名,列名之間使用英文逗號(,)分隔。

說明

該參數實現的是對指定表的指定列的Describe、Select、Alter、Update、Drop、ShowHistory、ALL許可權進行控制。如果表的列設定了敏感等級,可通過Label許可權控制功能,通過敏感等級標籤對訪問敏感性資料的許可權進行控制。

subject_type

指定被授權人的類型。取值範圍如下:

  • USER:阿里雲帳號或RAM使用者

  • ROLE:角色

subject_name

指定被授權的使用者帳號或角色名稱。單次授權只能指定一個使用者或角色。

您可以通過MaxCompute用戶端執行list users;list roles;命令擷取使用者帳號或角色名稱。

role_name

指定被授權的角色名稱。單次授權只能指定一個角色。

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

privilegeproperties

policy

固定取值為true。表示使用Policy許可權控制方案。

allow

白名單授權必填

指定白名單授權機制。取值範圍如下:

  • true:表示允許對指定對象執行指定操作。

  • false:表示不允許對指定對象執行指定操作,即黑名單。

執行環境

本文中的命令支援在如下工具平台執行:

樣本

假設Bob@aliyun.com是test_project_a的專案所有者,Allen、Alice、Tom是隸屬於Bob@aliyun.com的RAM使用者。以MaxCompute用戶端操作為例,授權樣本如下:

  • 樣本一:為使用者撤銷授權

    基於樣本一、二,撤銷對使用者Allen、Alice的授權。命令樣本如下。

    --Bob進入專案test_project_a。
    use test_project_a; 
    --撤銷Allen授權。
    revoke Describe, Select on table sale_detail (shop_name, customer_id) from USER RAM$Bob@aliyun.com:Allen;
    --撤銷Alice授權。
    revoke All on table sale_detail (shop_name, customer_id) from USER RAM$Bob@aliyun.com:Alice;
    --查看使用者Allen的撤銷授權結果。許可權列表無Describe, Select許可權資訊。
    show grants for RAM$Bob@aliyun.com:Allen; 
    --查看使用者Alice的撤銷授權結果。許可權列表無All許可權資訊。
    show grants for RAM$Bob@aliyun.com:Alice; 
  • 樣本二:為多個使用者撤銷基於角色授予的相同許可權

    撤銷對使用者Alice、Tom、Lily@aliyun.com的授權。命令樣本如下。

    --Bob進入專案test_project_a。
    use test_project_a; 
    --收回使用者Alice、Tom、Lily@aliyun.com綁定的角色Worker。
    revoke Worker from RAM$Bob@aliyun.com:Alice;
    revoke Worker from RAM$Bob@aliyun.com:Tom;
    revoke Worker from ALIYUN$Lily@aliyun.com;
    --查看使用者Lily的撤銷授權結果。許可權列表無Worker資訊。
    show grants for ALIYUN$Lily@aliyun.com; 

撤銷為使用者或角色授予的訪問Package的許可權

在安裝Package的MaxCompute專案中撤銷為使用者或角色授予的訪問Package的許可權。

  • 命令格式

    revoke <actions> on package <project_name>.<package_name> from {USER|ROLE} <name>;
  • 參數說明

    參數名稱

    是否必填

    說明

    actions

    指定對資源的操作許可權。固定取值為Read。

    project_name

    指定Package所屬MaxCompute專案名稱。

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

    package_name

    指定Package的名稱。

    您可以通過MaxCompute用戶端執行show packages;命令擷取已建立的Package資訊。

    name

    指定待撤銷授權的使用者帳號或角色名稱。單次撤銷授權只能指定一個使用者或角色。

    您可以通過MaxCompute用戶端執行list users;list roles;命令擷取使用者帳號或角色名稱。

  • 使用樣本

    撤銷為Bella授予的Package存取權限。命令樣本如下。

     --撤銷允許Bella訪問Package的許可權。
    revoke Read on package test_project_a.datashare from user RAM$Amy@aliyun.com:Bella;

撤銷Label顯式授權

由Project Owner或具備Admin角色的使用者撤銷Label顯式授權。

  • 命令格式

    revoke Label on table <table_name> [(<column_list>)] from {USER|ROLE} <name>;
  • 注意事項

    • 撤銷顯式授予使用者的表的Label許可權,會同時撤銷顯式授予使用者的表列的Label許可權。

    • 撤銷顯式Label授權資訊,不會影響為使用者佈建的訪問許可等級標籤。例如使用者的訪問許可等級為2,為使用者顯式授予訪問某張表敏感等級不超過3的資料,撤銷授權後,使用者仍然可以訪問表中敏感等級小於等於2的資料。

  • 參數說明

    參數名稱

    是否必填

    說明

    table_name

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

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

    column_list

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

    name

    指定使用者或角色的名稱。

    您可以通過MaxCompute用戶端執行list users;list roles;命令擷取使用者帳號或角色名稱。

  • 使用樣本

    假設專案test_project_a中存在一張表sale_detail,shop_name、customer_id和total_price為表的列。Bob@aliyun.com是test_project_a的專案所有者。Allen為隸屬於Bob的RAM使用者,已被添加至專案test_project_a中。

    撤銷為Allen授予的訪問高敏感級資料許可權,命令樣本如下。

    --撤銷Allen訪問sale_detail表的shop_name、customer_id和total_price列中敏感度不超過3級的資料許可權。
    revoke Label on table sale_detail(shop_name, customer_id, total_price) from USER RAM$Bob@aliyun.com:Allen;
    --查看Allen的撤銷授權結果。
    show label grants on table sale_detail for USER RAM$Bob@aliyun.com:Allen;
    --返回結果如下。
    User Label: 1
    +-------------+--------------+--------------------------+
    | Column      | GrantedLabel | Expires                  |
    +-------------+--------------+--------------------------+
    | total_price | 3            | 2021-12-31T19:56:18+0800 |
    +-------------+--------------+--------------------------+
    --撤銷Allen訪問sale_detail表中敏感性資料的許可權。
    revoke Label on table sale_detail from USER RAM$Bob@aliyun.com:Allen; 
    --查看Allen的撤銷授權結果。
    show label grants on table sale_detail for USER RAM$Bob@aliyun.com:Allen;
    --返回結果如下。
    User Label: 1

刪除角色中的使用者

刪除指定角色內的使用者。

  • 命令格式

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

    • role_name:必填。待刪除使用者所屬的角色名稱。

    • user_name:必填。待刪除阿里雲使用者或RAM使用者的帳號資訊。阿里雲帳號格式為ALIYUN$****@aliyun.com;,RAM使用者帳號格式為RAM$****

  • 使用樣本

    --刪除角色player中的阿里雲使用者alice@aliyun.com。
    revoke player from ALIYUN$alice@aliyun.com;

相關命令

  • CREATE PACKAGE:建立Package。

  • CREATE ROLE:在MaxCompute專案空間中建立角色。

  • SET LABEL:MaxCompute支援在專案層級為使用者佈建訪問許可等級標籤,為表或表的列設定敏感等級標籤(Label)。

  • GRANT:MaxCompute支援通過ACL(Access Control Lists)方式授予使用者或角色對指定對象執行指定操作的許可權。