在不少的數據開發場景下,MaxCompute項目管理員須要可以提供給某些角色或團隊(如開發人員、運維人員)對項目內全部表具有特定權限。例如,某些客戶可能須要在生產項目中,給ETL開發團隊賦予全部表(或者全部ods開頭的表)只讀權限,當項目內建立了新表後,對應角色人員能夠自動獲取到新表的權限,方便開發人員可以快速處理線上數據問題排查。
MaxCompute原有的權限模型提供的ACL受權方式,須要明確指定受權對象才能受權,ACL方式不支持通配符方式對新增表作受權。本文經過一個自定義角色的場景,介紹使用MaxCompute新升級的權限模型,利用ACL實現對特定規則的表進行受權。html
您的MaxCompute項目須要支持MaxCompute新權限模型。截止目前(2020/1/6),MaxCompute新權限模型正在陸續灰度發佈,若是您在參考本文檔操做時不能正確執行,極可能您的項目尚未開放新權限模型,您能夠主動經過工單進行"權限模型2.0"功能申請。如何申請,請參考這裏的說明。web
經過Dataworks的控制檯建立的MaxCompute項目,在MaxCompute Project中預置瞭如下內建角色(Predefined roles,文檔連接):安全
以上內建角色,沒有提供對項目內全部表只讀的角色,不知足文前的需求場景。須要建立一個自定義角色來配置能夠知足的角色。運維
在MaxCompute項目中建立自定義角色能夠經過MaxCompute命令行方式(MaxCompute客戶端工具)和Dataworks的Web Console來建立並受權。工具
使用MaxCompute命令行工具(odpscmd),訪問須要作受權管理的MaxCompute項目。具體操做以下:測試
1.在目標項目(本demo的項目名稱爲your_project_name)中建立一個自定義角色_
create role select_only_role;ui
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");url
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 ;spa
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;
1.在dataworks的項目管理中新建自定義角色select_only_role
2.點擊角色右側的"權限管理"按鈕,勾選添加List和CreateInstance權限
3.在dataworks的臨時查詢窗口,經過ACL命令爲新建角色受權。
4.向某個子帳號授予select_only_role角色的權限。
在自定義用戶角色功能頁面中,選擇自定義角色的成員管理,將某個子帳號添加至該角色下,完成角色受權。
5.查詢被受權的表,驗證是否得到權限
除此以外,還能夠繼續測試是否能夠寫入、刪除該表,進一步驗證獲取的權限是否符合預期。
MaxCompute新的權限模型,支持在ACL受權中使用通配符,在原先必須明確指明已經存在的受權對象基礎上,能夠經過通配符指定全部表或者特定規則表,在角色上實現更靈活的受權管理需求。更多安全管理的介紹,請查看產品官方文檔。
本文爲阿里雲內容,未經容許不得轉載。