閱讀823 返回首頁    go 技術社區[雲棲]


MaxCompute和DataIDE權限體係介紹

產品關係

MaxCompute是阿裏雲自主研發的大數據計算引擎。通過MaxCompute,可以使用SQL、MapReduce和Graph的計算模型處理海量數據。產品還提供了機器學習的功能,並包裝成機器學習這個產品對外提供服務。用戶使用MaxCompute,不需要關心底層的分布式計算細節,就可以輕鬆地處理海量數據。

但是直接用MaxCompute也有一些不方便之處,比如需要更方便地進行開發代碼的管理、進行數據的導入導出、設置任務的定時調度以及上下遊依賴、管理任務的運行情況並做好異常報警、需要有簡單方便的元數據的管理以及我們這次要講的更方便的數據權限設置。為此誕生了大數據開發套件(Data IDE)這個產品。Data IDE在MaxComput外麵又包了一層。用戶不需要直接去操作MaxComupt,隻需要在Data IDE上做操作就可以了,大大簡化了數據倉庫搭建的過程。有時候,我們甚至會稱Data IDE是MaxCompte的開發工具。

MaxCompte作為計算引擎,本身就有一套健全的安全規則和權限體係。這些權限設置,足夠讓用戶隻能訪問到他被授權的那些數據。在此基礎上,Data IDE提供了一套自己的權限體係,包含Data IDE上的模塊的授權和MaxCompte上的授權。通過在Data IDE上做配置,就能很方便的給賬號授予對應的MaxCompte權限。以下我們分別對這兩個產品做一些說明。

MaxCompute 權限設置

MaxCompute在添加一個用戶後,可以對用戶通過ACL直接授權、基於角色的ACL授權、Policy授權、Package授權,使其獲得對應的權限。其中ACL直接授權、基於角色的ACL授權是目前對外提供的權限控製方法。Policy授權、Package授權這兩個功能,目前還是在內部測試階段,公共雲上的MaxCompute的文檔裏暫時還沒有提供,但不排除以後會提供的可能。

添加用戶

MaxCompute需要把某個具體的雲賬號添加到項目裏後才能對這個賬號進行授權。MaxComupte本身支持對具體的某個雲賬號,或者本主賬號下的其他子賬號進行授權。不過後麵的大數據開發套件就隻支持本賬號下的子賬號。

添加的方式為

  • 主賬號:add user aliyun$alice@aliyun.com;
  • 子賬號:add user ram$alice@aliyun.com:ram_name;

ACL授權

直接的ACL授權,其實就是一個簡單的,把XX權限授權給YY,或者把YY上的XX權限解除授權的一個過程。在add user之後,通過grant和revoke語法來進行授權或者解除授權,具體的語法是

grant actions on object to subject 
revoke actions on object from subject

舉個實際的例子,要給一個賬號授權查詢某張表的權限,然後又解除授權,步驟是

grant List, CreateTable, CreateInstance on project prj1 to user aliyun$alice@aliyun.com; --使用grant語句對用戶授權
grant Describe, Select on table wc_in to user aliyun$alice@aliyun.com;
revoke Describe, Select on table wc_in from user aliyun$alice@aliyun.com;
revoke List, CreateTable, CreateInstance on project prj1 from user aliyun$alice@aliyun.com; --使用revoke解除授權

而基於角色的ACL授權就是先定義一個角色(或者說是一個權限包),比如說創建一個叫開發者的角色,然後把各種前麵提到的權限先授權給這個角色。後麵來了個研發人員需要這樣的權限,直接把開發者這個角色授權給他就可以了,不需要全部重新授權一遍。可以看下授權的命令

add user aliyun$alice@aliyun.com; --添加用戶
create role dev; --創建角色
grant List, CreateInstance on project prj1 to role dev; --對角色賦權
grant Describe, Select on table userprofile to role dev;
grant dev to aliyun$alice@aliyun.com; --對用戶賦予角色dev

其他

如前麵提到,Policy授權、Package授權兩個功能,目前公共雲的MaxcCompute上還沒有提供,所以本文也不再做詳細介紹。不過可以可以大致說明一下:

Policy是通過設置json格式的配置來授權,使用起來比較複雜,功能上也比較全。

Package是先把資源添加到資源包裏,然後授予對方安裝資源包的方式來實現資源的跨項目授權

DataIDE權限設置

DataIDE的權限主要分IDE本身的一些功能權限和底層計算引擎的權限。IDE裏,在添加用戶後,可以給其授予部署、訪客 、項目管理員、開發、運維的角色,在IDE裏配置了角色後,對應的賬號可以獲得IDE上對應的角色所擁有的IDE上的對應模塊的操作權限外,還獲得了底層的計算引擎MaxCompute上的對應權限,如圖
image
比如我給chuanxue這個子賬號授權了“開發”的角色後
image
可以看到。在子賬號授予權限後,除了DataIDE上的相關模塊的權限外,還給了這個MaxCompute項目的一些開發需要用到的項目權限(CreateTable、CreateInstance、List、Read、Write;可以看到是通過ACL實現的)以及用Policy實現其他的一些權限。

在實際的工作中,需要先根據子賬號用戶的實際需要的IDE的權限,授予他對應的項目成員管理裏的角色。一般情況下,這樣授權就已經足夠了。但是如果有一些MaxCompute的權限需要調整的,可以再通過MaxCompute的授權命令進行調整。

除了這個之外,DataIDE的數據管理模塊裏還支持對表進行權限申請,申請通過後,會自動通過ACL的方式獲得對應的表的Describe和Select權限。

典型案例

以上說明後可能需要一些實際的例子來說明會更加清楚。之前有過這樣的一個案例,有個用戶在項目內授予了開發權限,但是查詢的時候一直沒有提示沒有這張表的查詢權限。照道理說,有了開發權限後,就已經有這個項目下的所有的表的查詢權限了。從錯誤上看,我們認為目前的權限異常是出在計算引擎上的,所以需要檢查MaxCompute上的權限設置。

首先到https://workbench.data.aliyun.com/console? ,看看項目名稱對應的顯示名,從而得到真實的項目名稱。其實這個是個非常簡單但是容易犯錯的情況,很多開發工程師並非是項目的創建者,看到的別名就誤以為是項目名稱,導致授權檢查的時候查錯項目。
image
比如咱們這個截圖裏,項目的名稱是aliyun2014,但是顯示名是aliyun。所以出現問題的時候,要排查的也是看aliyun2014這個項目下的權限對不對。

然後我們可以在大數據開發套件裏,創建一個SQL腳本,執行whoami;來看看當前的執行賬號是否確實是預期中的那個賬號,如圖
image
看看項目名稱能不能對上,對上後看看Name是否和自己的預期是能對上的。

確定了項目名稱和登錄賬號後,可以用項目管理員的賬號,打開MaxCompute的客戶端,使用Show grants for xxx;查看這個賬號的所有的權限(前文就有一個這樣show grants的截圖)。通過這個辦法可以看到這個賬號的目前計算引擎上的實際權限。如果發現這裏的權限不對的話,那說明可能是被人從計算引擎層麵上誤刪除了對應的權限,可以再通過命令補上,當然更加方便的方法是在DataIDE上取消其開發角色後再重新加上,這樣在加上的時候會重新進行MaxComupte的權限的授權。

最後更新:2017-08-13 22:51:22

  上一篇:go  景安專項網安扶持項目啟動 為河南企業保駕護航
  下一篇:go  kubernetes集群問題排查