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 | 是 | 指定被授予的物件類型,即客體。單次授權只能指定一個客體。 支援的客體取值如下:
|
object_name | 是 | 指定被授予的對象的名稱。擷取方式如下:
為角色授權時,授權對象支援以萬用字元星號(*)來表達。例如, |
subject_type | 是 | 指定被授權人的類型。
|
subject_name | 是 | 指定被授權的使用者帳號或角色名稱。單次授權只能指定一個使用者或角色。 您可以通過MaxCompute用戶端執行 |
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授權機制後,您可以根據實際業務需要執行授權相關操作: