天天看點

MaxCompute/DataWorks權限問題排查建議

MaxCompute/DataWorks權限問題排查建議

__前提:__MaxCompute與DataWorks為兩個産品,在權限體系上既有交集又要一定的差别。在權限問題之前需了解兩個産品獨特的權限體系。

MaxCompute:計算引擎

MaxCompute底層計算引擎有自己的安全權限體系,包括ACL、Policy授權體系。具體可以了解:https://help.aliyun.com/document_detail/27924.html

DataWorks:資料工場

DataWorks為MaxCompute上層的雲數倉開發工具,擁有自身的權限模型外還支援底層MaxCompute底層資料授權體系。具體詳見:https://help.aliyun.com/document_detail/92594.html

檢視MaxCompute上的角色

通過MaxCompute Console指令list roles;可以看到角色體系,role_開頭都為DataWorks基于MaxCompute封裝的角色及權限體系。介紹如下:

rolename 對應産品及權限名稱
admin MaxCompute底層引擎預設admin角色
role_project_admin DataWorks項目管理者
role_project_deploy DataWorks部署角色
role_project_dev DataWorks開發角色
role_project_guest DataWorks訪客角色
role_project_pe DataWorks運維角色
role_project_scheduler DataWorks生産代持賬号
role_project_security DataWorks安全管理者
  • __admin:__MaxCompute計算引擎的預設admin角色,可以通路項目空間内的所有對象、對使用者或角色進行管理、對使用者或角色進行授權。與項目空間 Owner 相比,admin 角色不能将 admin 權限指派給使用者,不能設定項目空間的安全配置,不能修改項目空間的鑒權模型,admin 角色所對應的權限不能被修改。一般情況下,如未修改過權限,一般情況下admin角色使用者隻有一個為project owner賬号。
odps@ clouder_bi>describe role admin;
[users]
ALIYUN$***@aliyun-test.com
Authorization Type: Admin           
MaxCompute project owner可以将admin角色授予其他子賬号,用于進行MaxCompute底層的權限模型管理。
  • role_開頭的角色也可以通過describe role 方式檢視其角色所具備的權限點及角色裡的使用者清單。以開發者角色為例:
odps@ clouder_bi>describe role role_project_dev;

[users]
[email protected]:yangyitest

Authorization Type: Policy
A    projects/clouder_bi: *
A    projects/clouder_bi/instances/*: *
A    projects/clouder_bi/jobs/*: *
A    projects/clouder_bi/offlinemodels/*: *
A    projects/clouder_bi/packages/*: *
A    projects/clouder_bi/registration/functions/*: *
A    projects/clouder_bi/resources/*: *
A    projects/clouder_bi/tables/*: *
A    projects/clouder_bi/volumes/*: *           

排查問題建議:

在普及完兩個産品的權限體系之外,更多的使用者會遇到各種權限的疑問或者問題。通常可以通過如下方式來排查:

  • 首先,檢視目前使用者或指定使用者所擁有的權限。
show grants; --檢視目前使用者自己的通路權限
show grants for <username>; --檢視指定使用者的通路權限,僅由ProjectOwner和Admin才能有執行權限 。
show grants for RAM$主帳号:子帳号;           
可以看到使用者所具有的角色及相關權限點。
  • 檢視指定對象的授權清單,一般擷取表到人。
show acl for <objectName> [on type <objectType>];--檢視指定對象上的使用者和角色授權清單
支援的objecTtype: PROJECT, TABLE, JOB, VOLUME, INSTANCE, RESOURCE, FUNCTION,PACKAGE,TOPOLOGY,MATRIX,XFLOW,OFFLINEMODEL,STREAMJOB           
  • 檢視ACL是否生效(常常發生在授權之後傳回OK,但是權限校驗還是失敗)
show SecurityConfiguration;--檢視項目空間的安全配置           

除了通過指令行方式,也可以通過__++DataWorks>項目管理>MaxCompute進階配置++__裡的ACL開關來确認是否打開。

Policy授權的查詢

policy授權一般常見有兩種,一個是項目級别的,一個是role級别的。

get policy;--擷取項目級别的policy配置;
get policy on role <rolename>;--擷取指定的role policy設定。           

原文連結

本文為雲栖社群原創内容,未經允許不得轉載。

繼續閱讀