MaxCompute studio與許可權那些事兒
背景知識
MaxCompute擁有一套強大的安全體系,來保護專案空間裡的資料安全。使用者在使用MaxCompute時,應理解許可權的一些基本概念:
-
- 許可權可分解為三要素,即主體(使用者賬號或角色),客體(表/資源/函式等),以及操作(與特定客體型別相關),詳細參考 https://help.aliyun.com/document_detail/27935.html 。
-
- 授權有兩種方式:ACL(基於物件,grant語句)和Policy(基於策略,policy file)。
-
- 跨專案授權使用package: https://help.aliyun.com/document_detail/34602.html 。
-
- 可通過列標籤實現表中列不同的訪問控制: https://help.aliyun.com/document_detail/34604.html 。
為了方便使用者更好的理解與使用MaxCompute許可權,studio實現了以下功能:
許可權檢視
使用者在project下有哪些許可權,可通過show grants語句獲得。studio編輯器已整合許可權相關的語句( https://help.aliyun.com/document_detail/27936.html) 通過快捷鍵(Windows: Ctrl + J , MAC: Command + J )喚出live template,然後搜尋即可:

另外,studio對此也提供了圖形化的方式顯示使用者的許可權。如下圖,點選工具欄上的show privileges按鈕,彈出Show user privileges對話方塊,點選search button, 下方就會顯示使用者在該project下的許可權:

json標籤頁是所有許可權的彙總,點選table標籤頁,則顯示使用者在table上的許可權。滑鼠懸停在table標籤頁上,則提示table的許可權說明:

許可權異常診斷
當因缺少許可權導致任務報鑑權失敗異常時,可通過studio的許可權異常診斷,快速尋找解決方案。如下圖,點選工具欄上的許可權異常診斷按鈕,彈出許可權異常診斷對話方塊,在上方文字框中輸入完整的鑑權異常資訊,然後點選ok按鈕,則下方文字框會顯示可能的解決方案:

許可權語句編寫
MaxCompute提供了一系列的許可權語句,studio SQL編輯器已整合這些語句,使用者可以利用studio來執行這些語句以完成相應的許可權操作。具體的,通過快捷鍵(Windows: Ctrl + J , MAC: Command + J )喚出live template,然後搜尋:

另外,在編寫授權語句過程中,也支援相應的程式碼智慧提示:

授權語句生成
除了手寫授權語句,studio也支援圖形化給使用者授權,點選工具欄上的show privileges按鈕,彈出Show user privileges對話方塊,點選Grant privilege標籤頁,選擇好授權物件,下方的SQL窗格就會同步顯示其對應的授權語句,然後點選execute grant command,等待後臺完成即可。

studio中的許可權
-
- 新增MaxCompute project時,studio會嘗試列舉project下的所有客體到本機,即使用者必須有project的list許可權。
-
- 顯示錶詳情時,使用者必須具備table的describe許可權;顯示自定義函式,則必須具備function的read許可權。在編輯器中編寫SQL,用到的table或function,則也必須有上述讀許可權。
-
- 在編輯器中執行某條SQL,則必須具備SQL中表的select許可權,同時還必須有project的CreateInstance許可權以能提交SQL任務。
-
- 開發好了UDF,要想釋出,則必須有function的write許可權。
許可權好文
官方文件 https://help.aliyun.com/document_detail/27926.html
MaxCompute安全管理指南 https://yq.aliyun.com/articles/686800