MaxCompute/DataWorks許可權問題排查建議

許此一生發表於2018-12-27

MaxCompute/DataWorks許可權問題排查建議

__前提:__MaxCompute與DataWorks為兩個產品,在許可權體系上既有交集又要一定的差別。在許可權問題之前需瞭解兩個產品獨特的許可權體系。

MaxCompute:計算引擎

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

image.png | left | 542x231

DataWorks:資料工場

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

檢視MaxCompute上的角色

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

image.png | left | 232x168

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]
RAM$yangyi.pt@aliyun-test.com: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$主帳號:子帳號;

image.png | left | 544x614

可以看到使用者所具有的角色及相關許可權點。

  • 檢視指定物件的授權列表,一般獲取表到人。
show acl for <objectName> [on type <objectType>];--檢視指定物件上的使用者和角色授權列表
支援的objecTtype: PROJECT, TABLE, JOB, VOLUME, INSTANCE, RESOURCE, FUNCTION,PACKAGE,TOPOLOGY,MATRIX,XFLOW,OFFLINEMODEL,STREAMJOB

image.png | left | 451x209

  • 檢視ACL是否生效(常常發生在授權之後返回OK,但是許可權校驗還是失敗)
show SecurityConfiguration;--檢視專案空間的安全配置

image.png | left | 341x143

除了通過命令列方式,也可以通過__++DataWorks>專案管理>MaxCompute高階配置++__裡的ACL開關來確認是否開啟。

Policy授權的查詢

policy授權一般常見有兩種,一個是專案級別的,一個是role級別的。

get policy;--獲取專案級別的policy配置;
get policy on role <rolename>;--獲取指定的role policy設定。

image.png | left | 595x662


相關文章