基於 Lake Formation 標籤的訪問控制 - AWS Lake Formation

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

基於 Lake Formation 標籤的訪問控制

基於 Lake Formation 標籤的訪問控制(LF-TBAC)是一種根據屬性定義權限的授權策略。在 Lake Formation,這些屬性被稱為 LF- 標籤。您可以將 LF 標籤附加至資料目錄資源,並授與使用這些 LF 標籤的這些資源上的 LLake Formation m 主體的權限。當主體的標籤值符合資源標籤值時,Lake Formation 允許對這些資源進行操作。LF-TBAC 在快速成長的環境中很有幫助,並有助於原則管理變得繁瑣的情況。

LF-TBAC 是當有大量資料目錄資源時,用來授予 Lake Formation 權限的建議方法。LF-TBAC 比指定的資源方法更具擴充性,而且需要較少的權限管理額外負荷。

注意

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

基於 Lake Formation 標籤的訪問控制如何工作

每個 LF 標籤都是一個鍵值對,例如或。department=sales classification=restricted一個鍵可以有多個定義的值,例如department=sales,marketing,engineering,finance

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

任務 任務詳情

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

-

2. 在 Lake Formation 中創建 LF 標籤創建者。

添加 LF 標籤創建者

3. 在 Lake Formation 中創建 LF 標籤。

創建 LF-標籤

4. 將 LF 標籤指定給資料目錄資源。

將 LF 標籤指定給資料目錄資源

5. 授與權限給其他主體,以便將 LF 標籤指派給資源,選擇性地使用授與選項。

授予、撤銷和列出 LF 標籤值權限

6. 選擇性地使用授與選項將 LF 標籤運算式授與主參與者。

使用 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和可能的值SalesOrders、和。Customers一個例子 LF 標籤看起來像這樣:

module=Sales

該圖僅顯示 LF 標籤值。

與前面的圖一樣,三個數字的用戶位於左側,垂直排列,右側是三個標記為 A,B 和 C 的數據庫,垂直排列。資料庫 A 有兩個標記為 A.1 和 A.2 的資料表,資料庫 B 有表格標籤 B.1 和 B.2,而資料庫 C 有三個標記為 C.1、C.2 和 C.3 的表格。有用戶和數據庫和表之間沒有箭頭。相反地,使用者旁邊標示為「旗標」,表示 user1 已被授與 LF 標籤銷售和客戶,使用者 2 已獲授予 LF 標籤訂單,而使用者 3 已被授予 LF 標籤客戶。資料庫和資料表旁邊的旗標表示下列指派給資料庫和資料表的 OFLF 標籤:資料庫 A:銷售。表格 A1:灰色旗標表示銷售是從資料庫 A 繼承而來。表格 A2:訂單,但灰色旗標表示銷售是從資料庫 A 繼承自資料庫 A 資料庫 B:訂單。表 B.1 和 B.2 繼承訂單,而表 B.2 有客戶。數據庫 C 有客戶和表 C.1,C.2 和 C.3 繼承客戶。C 表沒有任何其他任務。
資料目錄資源和繼承的標籤指派

表從數據庫和列繼承 LF 標籤從表繼承 LF 標籤。繼承的值可以被覆蓋。在前面的圖表中,會繼承灰色的 LF 標籤。

由於繼承,資料湖管理員只需要對資源 (以虛擬程式碼為單位) 進行以下五個 LF 標籤指派。

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 標籤指派給資料庫和資料表之後,資料湖管理員必須僅向主體授與四個 LF 標籤,如下所示 (以虛擬程式碼表示)。

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

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

前面的授予命令不完整。這是因為雖然它們透過 LF 標籤指示主體具有權限的資料目錄資源,但它們並不確切地指出主體對這些資源具有哪些 Lake Formation 權限 (例如 SELECTALTER)。因此,下列虛擬程式碼命令會更精確地表示如何透過 LF-tag 在資料目錄資源上授與 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, INSERT 在桌子 A.1 上

  • SELECT, INSERT 在桌子 B.2 上

  • CREATE_TABLE在數據庫 C

  • SELECT, INSERT 在桌子 C.1 上

  • SELECTINSERT在桌子 C.2 上

  • SELECTINSERT在桌子 C.3 上

主要項目 2
  • SELECT, INSERT 在桌子 A.2 上

  • CREATE_TABLE在資料庫 B 上

  • SELECT, INSERT 在表 B.1 上

  • SELECT, INSERT 在桌子 B.2 上

主要項目 3
  • SELECT, INSERT 在桌子 B.2 上

  • CREATE_TABLE在數據庫 C

  • SELECT, INSERT 在桌子 C.1 上

  • SELECTINSERT在桌子 C.2 上

  • SELECTINSERT在桌子 C.3 上

底線

在這個簡單的範例中,使用五個指派作業和八個授與作業,資料湖管理員能夠指定 17 個權限。當有數十個資料庫和數百個資料表時,LF-TBAC 方法超過指定的資源方法的優點就會變得清楚。在需要授予每個資源的每個主體訪問權限的假設情況下,其中n(P)是主體的數量,n(R)是資源的數量:

  • 使用指定的資源方法,所需的授權數量為 n(P)n(R)

  • 使用 LF-TBAC 方法時,使用單一 LF 標籤,主參與者和資源指派的授權總數為 +。n(P) n(R)