本文主要介紹資料湖構建(DLF)的許可權體系說明,介紹如何為子帳號授予合適的許可權,以便其可以正確使用和訪問DLF的功能。
資料湖構建(DLF)產品的許可權體系主要分為RAM許可權以及DLF資料許可權控制兩大類,如果您要訪問DLF的頁面或資料,一般都需要通過這兩層許可權校正,才可以正確的訪問到資料資源。
RAM 許可權:主要控制DLF所有OpenAPI的存取權限,決定RAM使用者是否可以訪問某些DLF OpenAPI或頁面。
DLF資料許可權:主要控制DLF內部資源的訪問和使用許可權,包括資料庫、資料表、資料列、函數、資料目錄等,以及資料許可權的操作許可權。
第一層:RAM OpenAPI 許可權
主要控制DLF所有OpenAPI的存取權限,決定RAM使用者是否可以訪問某些DLF OpenAPI或頁面。在RAM控制台內建了以下兩種授權策略:
AliyunDLFFullAccess:表示具備所有DLF OpenAPI的調用許可權。
AliyunDLFReadOnlyAccess:表示具備所有DLF唯讀OpenAPI(例如List/Get類的API)的調用許可權。但不具備如Create/Delete等OpenAPI調用許可權。
您也可以根據自己的許可權控制需求,自訂RAM授權策略,滿足更細粒度的OpenAPI層面的許可權控制。
第二層:DLF細粒度資料許可權
主要控制DLF內部資源的訪問和使用許可權,包括資料庫、資料表、資料列、函數、資料目錄等,以及角色/使用者/新增授權等操作許可權。
在第二層主要進行資料許可權控制,分為細粒度和粗粒度兩類,“DLF細粒度資料許可權”與“RAM DLF-DSS粗粒度資料許可權”兩者之間是或者的關係,只要兩者之間有一個通過資料許可權校正,那麼該使用者就具備該資料許可權。反之,必須兩者都不通過資料校正,該使用者才不具備該資料許可權。
只有在開啟Catalog使用權限設定開關後,針對資料資源類的許可權,如資料庫、資料表、資料列、函數、資料目錄的資料許可權校正才會生效。而角色/使用者/新增授權等操作許可權無論Catalog許可權是否開啟,都會受到細粒度資料許可權校正。
為了方便管理員整體進行資料許可權管理,DLF提供了內建的資料許可權管理員角色,您可以在“資料許可權-角色”菜單下找到這兩個角色,並將某些使用者加到該角色下:
admin(資料湖管理員):擁有資料湖構建中,所有的資料許可權及授權許可權。
super_administrator(超級管理員):擁有資料湖構建中,所有的資料許可權及授權許可權,可以對admin的使用者進行修改。
更加細粒度的許可權配置,請參考資料許可權概述。
第二層:RAM DLF-DSS粗粒度資料許可權
主要控制DLF內部資源的訪問和使用許可權,包括資料庫、資料表、資料列、函數、資料目錄等,以及角色/使用者/新增授權等操作許可權。在RAM控制台內建了以下兩種授權策略:
AliyunDLFDSSFullAccess:表示具備所有DLF細粒度資源的存取權限。
AliyunDLFDSSReadOnlyAccess:表示具備所有DLF細粒度資源的唯讀存取權限,包括List/Get/Select/Execute等。
“RAM DLF-DSS粗粒度資料許可權”目前適用情境不多,主要用於阿里雲內部產品間快速互信使用,建議您使用“DLF細粒度資料許可權”進行細粒度的資料許可權控制。
只有在開啟Catalog使用權限設定開關後,針對資料資源類的許可權,如資料庫、資料表、資料列、函數、資料目錄的資料許可權校正才會生效。而角色/使用者/新增授權等操作許可權無論Catalog許可權是否開啟,都會受到DLF-DSS粗粒度資料許可權校正。
如果子帳號被授予RAM AdministratorAccess,則該使用者將具備DLF-DSS所有許可權,等同於AliyunDLFDSSFullAccess。
常見情境說明
僅使用DLF中繼資料,不需要進行資料許可權控制,但期望子帳號具備中繼資料查詢等許可權。
為子帳號授予“第一層:RAM OpenAPI 許可權”,根據需求授予AliyunDLFFullAccess 或 AliyunDLFReadOnlyAccess內建授權策略即可。
需要使用DLF資料許可權控制,做細粒度的資料授權管理。
第一步,為子帳號授予“第一層:RAM OpenAPI 許可權”,根據需求授予AliyunDLFFullAccess 或 AliyunDLFReadOnlyAccess內建授權策略即可。
第二步,先開啟Catalog的使用權限設定。
第三步(可選),如你使用EMR等產品進行查詢和修改資料,則需要在EMR叢集同樣開啟DLF-Auth許可權開關。
第四步,授予子帳號相應資料許可權,有以下幾種常見方式:
許可權常見問題
問題一:訪問時提示無RAM DLF API相關許可權。
具體表現為:頁面提示需要RAM進行授權dlf:xxx許可權,需要在RAM上授予AliyunDLF相關OpenAPI層許可權,DLF在RAM上已內建AliyunDLFFullAccess及AliyunDLFReadOnlyAccess許可權,使用者可參考進行授予。
問題二:授權時提示無資源許可權。
具體表現為:進行許可權授予時提示沒有dlf permission許可權。
問題三:調用控制類API無許可權(例如許可權相關listPermissions等,角色相關listRoles等)。
具體表現為調用控制類API出錯,例如進行許可權查詢,角色管理時提示對應操作沒有許可權,錯誤碼為NoPermission。有以下途徑可以解決問題:
授予使用者資料湖admin/super_administrator角色。參考角色管理。
授予使用者dlf-dss許可權,DLF在RAM上已內建AliyunDLFDSSFullAccess及AliyunDLFDSSReadOnlyAccess許可權,例如:
dlf-dss:ListRoles表示該使用者可以查看所有DLF中的角色。
dlf-dss:ListPermissions表示該使用者可以查看所有DLF中已授與權限。