天天看點

MaxCompute建立僅有查詢權限的自定義角色MaxCompute建立隻有查詢權限的自定義角色需求場景前置條件MaxCompute項目的内建角色介紹建立僅查詢資料的MaxCompute自定義角色

MaxCompute建立隻有查詢權限的自定義角色

需求場景

在很多的資料開發場景下,MaxCompute項目管理者需要能夠提供給某些角色或團隊(如開發人員、運維人員)對項目内所有表具備特定權限。例如,某些客戶可能需要在生産項目中,給ETL開發團隊賦予所有表(或者所有ods開頭的表)隻讀權限,當項目内建立了新表後,對應角色人員可以自動擷取到新表的權限,友善開發人員能夠快速處理線上資料問題排查。

MaxCompute原有的權限模型提供的ACL授權方式,需要明确指定授權對象才能授權,ACL方式不支援通配符方式對新增表做授權。本文通過一個自定義角色的場景,介紹使用MaxCompute新更新的權限模型,利用ACL實作對特定規則的表進行授權。

前置條件

您的MaxCompute項目需要支援MaxCompute新權限模型。截止目前(2020/1/6),MaxCompute新權限模型正在陸續灰階釋出,如果您在參考本文檔操作時不能正确執行,很可能您的項目還沒有開放新權限模型,您可以主動通過工單進行"權限模型2.0"功能申請。如何申請,請參考

這裡的說明

MaxCompute項目的内建角色介紹

通過Dataworks的控制台建立的MaxCompute項目,在MaxCompute Project中預置了以下内建角色(Predefined roles,

文檔連結

):

MaxCompute建立僅有查詢權限的自定義角色MaxCompute建立隻有查詢權限的自定義角色需求場景前置條件MaxCompute項目的内建角色介紹建立僅查詢資料的MaxCompute自定義角色

以上内建角色,沒有提供對項目内所有表隻讀的角色,不滿足文前的需求場景。需要建立一個自定義角色來配置可以滿足的角色。

建立僅查詢資料的MaxCompute自定義角色

在MaxCompute項目中建立自定義角色可以通過MaxCompute指令行方式(MaxCompute用戶端工具)和Dataworks的Web Console來建立并授權。

在指令行工具操作

使用MaxCompute指令行工具(

odpscmd

),通路需要做授權管理的MaxCompute項目。具體操作如下:

建立角色并賦權

1.在目标項目(本demo的項目名稱為your_project_name)中建立一個自定義角色_

create role select_only_role;

2.為自定義角色select_only_role對項目内所有表(包括未來項目内建立的表)賦予Describe,Select權限_

_1) 項目下的所有表_

GRANT Describe,SELECT ON table TO Role select_only_role privilegeproperties("policy" = "true");

2)_項目下的所有符合特定規則的表_

GRANT Describe,SELECT ON table orders TO Role select_only_role privilegeproperties("policy" = "true");

3.給select_only_role角色賦予在your_project_name項目内運作作業(CreateInstance,如送出SQL作業)、檢視項目内的資料對象(List,如show tables,list resources等)_

GRANT CreateInstance,List ON project your_project_name TO Role select_only_role ;

_4.給使用者賦予自定義角色權限(也可以在Dataworks的自定義角色web-ui界面裡,添加某個成員到該自定義角色下)_

grant role select_only_role to RAM$account@company_name.com:ram_account01;**

驗證測試

上面剛剛建立了自定義角色select_only_role(這裡假設這個角色授權僅能通路orders開頭的表),同時将這個角色授權給了子賬号ram_account01。

在項目中找到一張在ram_account01在獲得select_only_role角色前,不能通路的表orders_test。通過指令,可以檢視到表orders_test目前對于角色select_only_role提供了Describe和Select權限。

odps@ your_project_name>show grants on table orders_test;

`Authorization Type: Implicit

<br />

AG project_owner/ALIYUN$account@company_name.com: All

<br />

AG object_creator/ALIYUN$account@company_name.com: All`

Authorization Type: Policy

`

A role/role_project_admin: *

<br />

A role/role_project_dev: *

<br />

A role/role_project_pe: Describe | Read

<br />

A role/role_project_scheduler: *

<br />

A role/select_only_role: Describe | Select`

同時,ram_account01通路MaxCompute項目,可以檢視orders_test表的表結構和資料。

odps@ your_project_name>select * from orders_test limit 10;

在Dataworks中操作

1.在dataworks的項目管理中建立自定義角色select_only_role

MaxCompute建立僅有查詢權限的自定義角色MaxCompute建立隻有查詢權限的自定義角色需求場景前置條件MaxCompute項目的内建角色介紹建立僅查詢資料的MaxCompute自定義角色

2.點選角色右側的"權限管理"按鈕,勾選添加List和CreateInstance權限

MaxCompute建立僅有查詢權限的自定義角色MaxCompute建立隻有查詢權限的自定義角色需求場景前置條件MaxCompute項目的内建角色介紹建立僅查詢資料的MaxCompute自定義角色

3.在dataworks的臨時查詢視窗,通過ACL指令為建立角色授權。

MaxCompute建立僅有查詢權限的自定義角色MaxCompute建立隻有查詢權限的自定義角色需求場景前置條件MaxCompute項目的内建角色介紹建立僅查詢資料的MaxCompute自定義角色

4.向某個子賬号授予select_only_role角色的權限。

在自定義使用者角色功能頁面中,選擇自定義角色的成員管理,将某個子賬号添加至該角色下,完成角色授權。

MaxCompute建立僅有查詢權限的自定義角色MaxCompute建立隻有查詢權限的自定義角色需求場景前置條件MaxCompute項目的内建角色介紹建立僅查詢資料的MaxCompute自定義角色

5.查詢被授權的表,驗證是否獲得權限

MaxCompute建立僅有查詢權限的自定義角色MaxCompute建立隻有查詢權限的自定義角色需求場景前置條件MaxCompute項目的内建角色介紹建立僅查詢資料的MaxCompute自定義角色

除此之外,還可以繼續測試是否可以寫入、删除該表,進一步驗證擷取的權限是否符合預期。

結束語

MaxCompute新的權限模型,支援在ACL授權中使用通配符,在原先必須明确指明已經存在的授權對象基礎上,可以通過通配符指定所有表或者特定規則表,在角色上實作更靈活的授權管理需求。更多安全管理的介紹,請檢視

産品官方文檔