全部產品
Search
文件中心

Data Lake Formation:許可權說明

更新時間:Nov 08, 2024

本文主要介紹資料湖構建(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許可權開關。

    • 第四步,授予子帳號相應資料許可權,有以下幾種常見方式:

      • 授權資料管理員:可將admin/super_administrator等先由主帳號授予給RAM使用者,讓對應的RAM使用者進行授權管理,他將具備所有資料許可權及授權系統管理權限。參考角色管理

      • 授權普通資料庫管理員:可將某一個資料庫的所有許可權點,授權給該使用者。參考資料授權

      • 授權普通表/列存取權限:可將某一個表或列的相應許可權點,授權給該使用者。參考資料授權

許可權常見問題

  • 問題一:訪問時提示無RAM DLF API相關許可權。

    具體表現為:頁面提示需要RAM進行授權dlf:xxx許可權,需要在RAM上授予AliyunDLF相關OpenAPI層許可權,DLF在RAM上已內建AliyunDLFFullAccess及AliyunDLFReadOnlyAccess許可權,使用者可參考進行授予。

  • 問題二:授權時提示無資源許可權。

    具體表現為:進行許可權授予時提示沒有dlf permission許可權。

    • 授予使用者對應資源的授權許可權(也可通過授予角色獲得)。參考資料授權

    • 授予使用者資料湖admin/super_administrator角色。參考角色管理

    • 授予使用者dlf-dss許可權,例如:dlf-dss:BatchGrantPermissions + dlf-dss: SelectTable表示該使用者可以授予所有表的select許可權給其他使用者。

  • 問題三:調用控制類API無許可權(例如許可權相關listPermissions等,角色相關listRoles等)。

    具體表現為調用控制類API出錯,例如進行許可權查詢,角色管理時提示對應操作沒有許可權,錯誤碼為NoPermission。有以下途徑可以解決問題:

    • 授予使用者資料湖admin/super_administrator角色。參考角色管理

    • 授予使用者dlf-dss許可權,DLF在RAM上已內建AliyunDLFDSSFullAccess及AliyunDLFDSSReadOnlyAccess許可權,例如:

      • dlf-dss:ListRoles表示該使用者可以查看所有DLF中的角色。

      • dlf-dss:ListPermissions表示該使用者可以查看所有DLF中已授與權限。