本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lake Formation 標籤型存取控制 (LF-TBAC) 是一種授權策略,可根據屬性定義許可。在 Lake Formation 中,這些屬性稱為 LF 標籤。您可以將 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=sales
或 classification=restricted
。金鑰可以有多個定義的值,例如 department=sales,marketing,engineering,finance
。
若要使用 LF-TBAC 方法,資料湖管理員和資料工程師會執行下列任務。
任務 | 任務詳細資訊 |
---|---|
1. 定義 LF 標籤的屬性和關係。 |
- |
2. 在 Lake Formation 中建立 LF-Tag 建立者。 |
新增 LF 標籤建立者 |
3. 在 Lake Formation 中建立 LF-Tag。 |
建立 LF 標籤 |
4. 將 LF 標籤指派給 Data Catalog 資源。 |
將 LF 標籤指派給 Data Catalog 資源 |
5. 將許可授予其他主體,以將 LF 標籤指派給資源,選擇性使用授予選項。 |
管理 LF-Tag 值許可 |
6. 將 LF-Tag 表達式授予委託人,選擇性使用授予選項。 |
使用 LF-TBAC 方法授予資料湖許可 |
7. (建議) 驗證主體是否可透過 LF-TBAC 方法存取正確的資源後,請撤銷使用具名資源方法授予的許可。 |
- |
請考慮您必須將許可授予三個資料庫和七個資料表上的三個主體的情況。

若要使用具名資源方法達成上圖中指定的許可,您必須進行 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
和可能的值 Sales
、 Orders
和 Customers
。範例 LF-Tag 如下所示:
module=Sales
圖表僅顯示 LF-Tag 值。

標記 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=Sales
LF-Tag 的委託人可以使用 LF-Tag module=Sales
存取 Data Catalog 資源 (例如,資料庫 A),具有 module=Customers
LF-Tag 的委託人可以使用 LF-Tag module=Customers
存取資源,以此類推。
上述授予命令不完整。這是因為雖然它們透過 LF 標記資料型錄資源表示主體具有許可,但它們不會確切指出主體在這些資源上擁有哪些 Lake Formation 許可 (例如 SELECT
、ALTER
)。因此,下列虛擬程式碼命令會更精確地呈現如何透過 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 |
|
委託人 2 |
|
委託人 3 |
|
底線
在此簡單範例中,使用五個指派操作和八個授予操作,資料湖管理員能夠指定 17 個許可。當有數十個資料庫和數百個資料表時,LF-TBAC 方法相對於具名資源方法的優勢會變得明確。在假設需要授予每位主體對每個資源的存取權的情況下,其中 n(P)
是主體數量,而 n(R)
是資源數量:
-
使用具名資源方法時,所需的授予數量為
n(P)
✕n(R)
。 -
透過 LF-TBAC 方法,使用單一 LF-Tag,授予委託人和指派資源的總數為
n(P)
+n(R)
。