全部產品
Search
文件中心

:Download許可權控制

更新時間:Jun 19, 2024

MaxCompute支援通過Download許可權控制方案,對角色或使用者使用Tunnel下載表和執行個體的行為進行管控,提升專案資料安全性,避免出現資料泄露情況。本文為您介紹MaxCompute支援的Download授權命令,並提供授權樣本供參考。

背景資訊

在MaxCompute專案中,您可以通過Tunnel下載表和執行個體,但由於下載操作存在資料泄露安全風險,需要對該操作許可權進行限制。

建立MaxCompute專案後,Download許可權控制功能開關預設為關閉狀態,表示不使用Download許可權控制功能,即專案中的所有使用者或角色對所有表或執行個體都有Download許可權。專案所有者(Project owner)或具備Super_Administrator角色的使用者可以在MaxCompute專案的Project層級,執行setproject odps.security.enabledownloadprivilege=true|false;命令,開啟或關閉Download許可權控制功能。

Download許可權控制適用於如下情境。

情境

說明

授權人

授權操作入口

為使用者授權

為單個使用者授予允許下載指定表資料或執行個體的許可權。

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

基於角色為使用者授權

為單個角色,授予允許下載指定表資料或執行個體的許可權,然後將角色綁定至多個使用者,使用者即可具備角色的許可權。

前提條件

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

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

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

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

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

    您可以通過MaxCompute用戶端執行show tables;list resources;list functions;show instances;命令擷取表或視圖名稱及執行個體名稱。

使用限制

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

  • 只支援對已存在的對象、被授權人進行授權。

  • 只支援將具體對象的Download許可權授予使用者,不支援通過萬用字元為使用者授權。如果需要使用萬用字元,可以通過角色進行授權。

注意事項

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

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

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

命令格式

Download許可權控制命令格式如下:

  • Download授權

    grant Download on <object_type> <object_name> to <subject_type> <subject_name>;
  • 撤銷Download授權

    revoke Download on <object_type> <object_name> from <subject_type> <subject_name>;

參數說明如下。

參數名稱

是否必填

說明

object_type

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

支援的客體取值如下:

  • Table:表

  • Instance:執行個體

object_name

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

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

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

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

subject_type

指定被授權人的類型。

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

  • ROLE:角色

subject_name

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

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

Download許可權控制樣本

假設username@example.com是test_project_a的專案所有者,Allen、Tom、Alice是隸屬於username@example.com的RAM使用者。test_project_a專案開啟了Download許可權控制功能。以MaxCompute用戶端操作為例,授權樣本如下:

  • 樣本一:為使用者授予Download許可權

    將使用者Allen添加至test_project_a專案,並授予下載sale_detail表資料許可權。命令樣本如下。

    --Bob進入專案test_project_a。
    use test_project_a; 
    --將使用者Allen添加為專案成員。
    add user RAM$username@example.com:Allen;
    --支援使用者Allen下載專案test_project_a中表sale_detail的資料。
    grant Download on table sale_detail to USER RAM$username@example.com:Allen;
    --查看使用者Allen的授權結果。
    show grants for RAM$username@example.com:Allen; 
    --授權結果如下。表明使用者Allen已經具備Download許可權。
    Authorization Type: ACL
    [user/RAM$username@example.com:Allen]
    A       projects/test_project_a/tables/sale_detail: Download
  • 樣本二:為使用者撤銷Download授權

    基於樣本一,撤銷對使用者Allen的授權。

    --Bob進入專案test_project_a。
    use test_project_a; 
    --撤銷使用者Allen授權。
    revoke Download on table sale_detail from USER RAM$username@example.com:Allen;
    --查看使用者Allen的撤銷授權結果。許可權列表無Download資訊。
    show grants for RAM$username@example.com:Allen;  
  • 樣本三:基於角色為多個使用者授予Download許可權

    為Alice、Tom授予在專案test_project_a中下載以tb_開頭的表資料許可權。命令樣本如下。

    --Bob進入專案test_project_a。
    use test_project_a; 
    --將使用者Alice、Tom添加為專案成員。
    add user RAM$username@example.com:Alice;
    add user RAM$username@example.com:Tom;
    --建立角色Worker。
    create role Worker; 
    --為使用者綁定角色Worker。
    grant Worker TO RAM$username@example.com:Alice; 
    grant Worker TO RAM$username@example.com:Tom; 
    --支援角色Worker下載專案test_project_a中以tb_開頭的表資料。
    grant Download on table tb_* to ROLE Worker;
    --查看使用者Alice的授權結果。
    describe role Worker;
    --授權結果如下。A表示允許執行Download操作。
    Authorization Type: Policy
    [role/worker]
    A       projects/test_project_a/tables/tb_*: Download
  • 樣本四:為多個使用者撤銷基於角色授予的Download許可權

    基於樣本三,撤銷對使用者Alice、Tom的授權。

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

後續指引

瞭解Download授權機制後,您可以根據實際業務需要執行授權相關操作: