本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lake Formation 標籤型存取控制
Lake Formation 標籤型存取控制 (LF-TBAC) 是一種授權策略,可根據屬性定義許可。在 Lake Formation 中,這些屬性稱為 LF 標籤。您可以將 LF-Tags 連接至 Data Catalog 資源,並使用這些 LF-Tags 將這些資源的許可授予 Lake Formation 主體。當委託人已授予符合資源標籤值的標籤值的存取權時,Lake Formation 允許對這些資源進行操作。
LF-TBAC 有助於快速成長的環境,並有助於處理政策管理變得繁瑣的情況。
當有大量 Data Catalog 物件,包括聯合目錄、資料庫、資料表和檢視時,建議使用 LF-TBAC 來授予 Lake Formation 許可。Lake Formation 支援 Amazon S3 資料表、 Amazon Redshift 資料倉儲和聯合資料來源的聯合目錄的標籤型存取控制 Amazon DynamoDB,例如 SQL Server 和 Snowflake。
注意
IAM 標籤與 LF 標籤不同。這些標籤不可互換。LF 標籤用於授予 Lake Formation 許可,而 IAM 標籤用於定義 IAM 政策。
Lake Formation 標籤型存取控制的運作方式
每個 LF-Tag 都是金鑰值對,例如 department=sales或 classification=restricted。金鑰可以有多個定義的值,例如 department=sales,marketing,engineering,finance。
若要使用 LF-TBAC 方法,資料湖管理員和資料工程師會執行下列任務。
| 任務 | 任務詳細資訊 |
|---|---|
|
1. 定義 LF-Tags 的屬性和關係。 |
- |
|
2. 在 Lake Formation 中建立 LF 標籤建立者。 |
新增 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 標籤指派。
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
現在,具有 module=SalesLF-Tag 的委託人可以使用 LF-Tag module=Sales 存取 Data Catalog 資源 (例如,資料庫 A),具有 module=Customers LF-Tag 的委託人可以使用 LF-Tag module=Customers 存取資源,以此類推。
上述授予命令不完整。這是因為雖然它們透過 LF 標記資料目錄資源表示委託人具有許可,但它們不會確切指出委託人在這些資源上擁有哪些 Lake Formation 許可 (例如 SELECT、ALTER)。因此,下列虛擬程式碼命令會更精確地表示如何透過 LF 標籤在 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)。