Lake Formation 標籤型存取控制 - AWS Lake Formation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Lake Formation 標籤型存取控制

Lake Formation 標籤型存取控制 (LF-TBAC) 是一種根據屬性定義許可的授權策略。在 Lake Formation 中,這些屬性稱為 LF-Tags 。您可以將 LF-Tags 連接至 Data Catalog 資源,並使用這些 LF-Tags 將許可授予這些資源的 Lake Formation 主體。Lake Formation 允許在主體的標籤值與資源標籤值相符時對這些資源進行操作。LF-TBAC 有助於快速成長的環境,並有助於處理政策管理變得繁瑣的情況。

LF-TBAC 是建議在有大量 Data Catalog 資源時用來授予 Lake Formation 許可的方法。LF-TBAC 比命名的資源方法更具可擴展性,並且需要更少的許可管理開銷。

注意

IAM 標籤與 LF 標籤不同。這些標籤不可互換。LF 標籤用於授予 Lake Formation 許可,IAM標籤用於定義IAM政策。

Lake Formation 標籤型存取控制的運作方式

每個 LF 標籤都是索引鍵值對,例如 department=salesclassification=restricted。金鑰可以具有多個定義的值,例如 department=sales,marketing,engineering,finance

若要使用 LF-TBAC 方法,資料湖管理員和資料工程師會執行下列任務。

任務 任務詳細資訊

1. 定義 LF 標籤的屬性和關係。

-

2. 在 Lake Formation 中建立 LF-Tag 建立器。

新增 LF-Tag 建立者

3. 在 Lake Formation 中建立 LF-Tag。

建立 LF 標籤

4. 將 LF 標籤指派給 Data Catalog 資源。

將 LF 標籤指派給 Data Catalog 資源

5. 將許可授予其他主體,以將 LF-Tags 指派給資源,也可以使用授予選項。

管理 LF-Tag 值許可

6. 將 LF-Tag 表達式授予委託人,選擇性地使用授予選項。

使用 LF-TBAC 方法授予資料湖許可

7. (建議) 驗證主體是否可透過 LF-TBAC 方法存取正確的資源後,請撤銷使用具名資源方法授予的許可。

-

考慮您必須將許可授予三個資料庫和七個資料表上的三個主體的情況。

三個使用者圖形位於左側,垂直排列。右側有三個資料庫,分別標記為 A、B 和 C,並垂直排列。資料庫 A 有兩個標記為 A.1 和 A.2 的資料表,資料庫 B 具有標記為 B.1 和 B.2 的資料表,而資料庫 C 具有三個標記為 C.1、C.2 和 C.3 的資料表。十七個箭頭將使用者連接到資料庫和資料表,表示資料庫和資料表上授予使用者。

若要使用具名資源方法達成上圖中指示的許可,您必須進行 17 次授予,如下所示 (以虛擬程式碼表示)。

GRANT CREATE_TABLE ON Database A TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.1 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table B.2 TO PRINCIPAL 1 ... GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 2 GRANT CREATE_TABLE ON Database B TO PRINCIPAL 2 ... GRANT SELECT, INSERT ON Table C.3 TO PRINCIPAL 3

現在,請考慮如何使用 LF- 授予許可TBAC。下圖表示您已將 LF 標籤指派給資料庫和資料表,並已將 LF 標籤的許可授予委託人。

在此範例中,LF 標籤代表資料湖的區域,其中包含企業資源規劃 (ERP) 應用程式套件不同模組的分析。您可以控制對各種模組分析資料的存取。所有 LF 標籤都有索引鍵module和可能的值 SalesOrdersCustomers。範例 LF-Tag 如下所示:

module=Sales

圖表僅顯示 LF-Tag 值。

與上圖一樣,三個使用者圖形位於左側,垂直排列,右側三個資料庫標記為 A、B 和 C,垂直排列。資料庫 A 有兩個標記為 A.1 和 A.2 的資料表,資料庫 B 具有標記為 B.1 和 B.2 的資料表,而資料庫 C 具有三個標記為 C.1、C.2 和 C.3 的資料表。使用者與資料庫和資料表之間沒有箭頭。相反地,使用者旁邊的標記「標記」表示使用者 1 已獲得 LF-Tags 銷售和客戶許可、使用者 2 已獲得 LF-Tag 訂單許可,而使用者 3 已獲得 LF-Tag 客戶許可。資料庫和資料表旁的旗標會指出下列資料庫和資料表ofLF標籤指派:資料庫 A:銷售。表 A1:灰色旗標表示銷售是從資料庫 A 繼承。表 A2:訂單,但灰色旗標表示銷售是從資料庫 A 繼承。資料庫 B:訂單。表 B.1 和 B.2 繼承順序,而表 B.2 有客戶。資料庫 C 具有客戶,而資料表 C.1、C.2 和 C.3 會繼承客戶。C 資料表沒有任何其他指派。
標記 Data Catalog 資源和繼承的指派

資料表從資料庫繼承 LF 標籤,資料欄從資料表繼承 LF 標籤。可覆寫繼承的值。在上圖中,灰色的 LF 標籤會繼承。

由於繼承,資料湖管理員只需要將下列五個 LF-Tag 指派至資源 (以虛擬程式碼表示)。

ASSIGN TAGS module=Sales TO database A ASSIGN TAGS module=Orders TO table A.2 ASSIGN TAGS module=Orders TO database B ASSIGN TAGS module=Customers TO table B.2 ASSIGN TAGS module=Customers TO database C
標記授予委託人

將 LF-Tag 指派給資料庫和資料表之後,資料湖管理員只能將四個 LF-Tag 授予主體,如下所示 (以虛擬程式碼表示)。

GRANT TAGS module=Sales TO Principal 1 GRANT TAGS module=Customers TO Principal 1 GRANT TAGS module=Orders TO Principal 2 GRANT TAGS module=Customers TO Principal 3

現在,具有 module=SalesLF-Tag 的主體可以使用 LF-Tag module=Sales 存取資料目錄資源 (例如資料庫 A),具有 LF-Tag module=Customers 的主體可以使用 LF-Tag module=Customers 存取資源,以此類推。

上述授予命令不完整。這是因為雖然它們透過 LF 標籤指示主體擁有許可的資料型錄資源,但它們不會確切指出主體在這些資源上擁有哪些 Lake Formation 許可 (例如 SELECTALTER)。因此,下列虛擬程式碼命令會更準確地表示如何透過 LF-Tags 在 Data Catalog 資源上授予 Lake Formation 許可。

GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Sales TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Sales TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Orders TO Principal 2 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Orders TO Principal 2 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 3 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 3
將其整合在一起 - 導致資源的許可

鑑於指派給上圖中資料庫和資料表的 LF 標籤,以及授予圖表中主體的 LF 標籤,下表列出主體在資料庫和資料表上擁有的 Lake Formation 許可。

Principal 透過 LF 標籤授予的許可
主體 1
  • CREATE_TABLE 在資料庫 A 上

  • SELECT,在資料表 A.1 INSERT

  • SELECT,在資料表 B.2 INSERT

  • CREATE_TABLE 在資料庫 C 上

  • SELECT,在資料表 C.1 INSERT

  • SELECT,在資料表 C.2 INSERT

  • SELECT,在資料表 C.3 INSERT

主體 2
  • SELECT,在資料表 A.2 INSERT

  • CREATE_TABLE 在資料庫 B 上

  • SELECT,在資料表 B.1 INSERT

主體 3
  • SELECT,在資料表 B.2 INSERT

  • CREATE_TABLE 在資料庫 C 上

  • SELECT,在資料表 C.1 INSERT

  • SELECT,在資料表 C.2 INSERT

  • SELECT,在資料表 C.3 INSERT

底線

在此簡單的範例中,使用五個指派操作和八個授予操作,資料湖管理員能夠指定 17 個許可。當有數十個資料庫和數百個資料表時,LF-TBAC 方法對具名資源方法的優勢會變得明確。在假設需要授予每位主體對每個資源的存取權的情況下,其中 n(P) 是主體數目, n(R)是資源數目:

  • 使用具名資源方法時,所需的授予數量為 n(P)n(R)

  • 使用單一 LF 標籤的 LF-TBAC 方法,授予委託人和指派資源的總數為 n(P) + n(R)