

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

# Lake Formation 標籤型存取控制
<a name="tag-based-access-control"></a>

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 標籤型存取控制的運作方式
<a name="how-TBAC-works"></a>

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

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


| 任務 | 任務詳細資訊 | 
| --- | --- | 
|  1. 定義 LF 標籤的屬性和關係。  | - | 
|  2. 在 Lake Formation 中建立 LF 標籤建立者。  | [新增 LF 標籤建立者](TBAC-adding-tag-creator.md) | 
|  3. 在 Lake Formation 中建立 LF-Tag。  | [建立 LF 標籤](TBAC-creating-tags.md) | 
|  4. 將 LF 標籤指派給 Data Catalog 資源。  | [將 LF 標籤指派給 Data Catalog 資源](TBAC-assigning-tags.md) | 
|  5. 將許可授予其他委託人，以將 LF 標籤指派給資源，選擇性使用授予選項。  | [管理 LF-Tag 值許可](TBAC-granting-tags.md) | 
|  6. 將 LF-Tag 表達式授予委託人，選擇性使用授予選項。  | [使用 LF-TBAC 方法授予資料湖許可](granting-catalog-perms-TBAC.md) | 
|  7. （建議） 驗證主體是否可透過 LF-TBAC 方法存取正確的資源後，請撤銷使用具名資源方法授予的許可。  | - | 

假設您必須將許可授予三個資料庫和七個資料表上的三個主體。

![\[三個使用者圖形位於左側，垂直排列。右側有三個資料庫，分別標記為 A、B 和 C，並垂直排列。資料庫 A 有兩個標記為 A.1 和 A.2 的資料表，資料庫 B 具有標記為 B.1 和 B.2 的資料表，而資料庫 C 具有三個標記為 C.1、C.2 和 C.3 的資料表。十七個箭頭將使用者連接到資料庫和資料表，表示對資料庫和資料表授予使用者。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/TBAC_example_discreet.png)


若要使用具名資源方法達成上圖所示的許可，您必須進行 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 標籤值。

![\[如同上圖，三個圖形的使用者位於左側，垂直排列，右側為三個資料庫，分別標記為 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。資料庫 B：訂單。資料表 B.1 和 B.2 繼承訂單，而資料表 B.2 有客戶。資料庫 C 有客戶，資料表 C.1、C.2 和 C.3 繼承客戶。C 資料表沒有任何其他指派。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/TBAC_example_tags.png)


**標記 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=Sales`LF-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 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/tag-based-access-control.html)  | 
| 委託人 2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/tag-based-access-control.html)  | 
| 委託人 3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/tag-based-access-control.html)  | 

**底線**  
在此簡單範例中，使用五個指派操作和八個授予操作，資料湖管理員能夠指定 17 個許可。當有數十個資料庫和數百個資料表時，LF-TBAC 方法對具名資源方法的優勢會變得明確。在假設需要授予每個委託人對每個資源的存取權的情況下，其中 `n(P)`是委託人數目，而 `n(R)`是資源數目：
+ 使用具名資源方法時，所需的授予數量為 `n(P)` ✕ `n(R)`。
+ 透過 LF-TBAC 方法，使用單一 LF-Tag，授予委託人和指派資源的總數為 `n(P)` \$1 `n(R)`。

**另請參閱**  
[管理中繼資料存取控制的 LF 標籤](managing-tags.md)
[使用 LF-TBAC 方法授予資料湖許可](granting-catalog-perms-TBAC.md)

**Topics**
+ [Lake Formation 標籤型存取控制的運作方式](#how-TBAC-works)
+ [管理中繼資料存取控制的 LF 標籤](managing-tags.md)
+ [管理中繼資料存取控制的 LF-Tag 表達式](managing-tag-expressions.md)
+ [管理 LF-Tag 值許可](TBAC-granting-tags.md)

# 管理中繼資料存取控制的 LF 標籤
<a name="managing-tags"></a>

若要使用 Lake Formation 標籤型存取控制 (LF-TBAC) 方法保護 Data Catalog 物件，例如目錄、資料庫、資料表、檢視和資料欄，您可以建立 LF 標籤、將它們指派給資源，並將 LF 標籤許可授予委託人。

您必須先定義 LF 標籤，才能將 LF 標籤指派給 Data Catalog 物件或將許可授予委託人。只有具有 LF 標籤建立者許可的資料湖管理員或主體才能建立 LF 標籤。

**LF 標籤建立者**  
LF-Tag 建立者是非管理員主體，具有建立和管理 LF-Tags 的許可。資料湖管理員可以使用 Lake Formation 主控台或 CLI 新增 LF 標籤建立者。LF-Tag 建立者具有隱含 Lake Formation 許可來更新和刪除 LF-Tags、將 LF-Tags 指派給資源，以及將 LF-Tag 許可和 LF-Tag 值許可授予其他主體。

透過 LF 標籤建立者角色，資料湖管理員可以將標籤管理任務委派給非管理員主體，例如建立和更新標籤金鑰和值。資料湖管理員也可以授予 LF-Tag 建立者可授予的`Create LF-Tag`許可。然後，LF-Tag 建立者可以將建立 LF-Tag 的許可授予其他主體。

 您可以在 LF 標籤上授予兩種類型的許可：
+ LF 標籤許可 - `Alter`、 `Create LF-Tag`和 `Drop`。建立、更新和刪除 LF 標籤需要這些許可。

  資料湖管理員和 LF 標籤建立者會隱含地對其建立的 LF 標籤擁有這些許可，並可以明確將這些許可授予委託人，以管理資料湖中的標籤。
+ LF 標籤鍵/值對許可 - `Describe`、 `Assign`和 `Grant with LF-Tag expressions`。需要這些許可才能將 LF 標籤指派給 Data Catalog 物件，並使用 Lake Formation 標籤型存取控制將資源的許可授予委託人。LF-Tag 建立者在建立 LF-Tags 時隱含地接收這些許可。

收到`Create LF-Tag`許可並成功建立 LF 標籤後，LF 標籤建立者可以將 LF 標籤指派給資源，並將 LF 標籤許可 (`Create LF-Tag`、`Drop`、 `Alter`和 ) 授予其他非管理主體，以管理資料湖中的標籤。您可以使用 Lake Formation 主控台、API 或 AWS Command Line Interface () 來管理 LF 標籤AWS CLI。

**注意**  
 資料湖管理員具有隱含 Lake Formation 許可，可建立、更新和刪除 LF 標籤、將 LF 標籤指派給資源，以及將 LF 標籤許可授予委託人。

如需最佳實務和考量事項，請參閱 [Lake Formation 標籤型存取控制最佳實務和考量事項](lf-tag-considerations.md)

**Topics**
+ [新增 LF 標籤建立者](TBAC-adding-tag-creator.md)
+ [建立 LF 標籤](TBAC-creating-tags.md)
+ [更新 LF 標籤](TBAC-updating-tags.md)
+ [刪除 LF 標籤](TBAC-deleting-tags.md)
+ [列出 LF 標籤](TBAC-listing-tags.md)
+ [將 LF 標籤指派給 Data Catalog 資源](TBAC-assigning-tags.md)
+ [檢視指派給資源的 LF 標籤](TBAC-view-resource-tags.md)
+ [檢視 LF-Tag 指派給的資源](TBAC-view-tag-resources.md)
+ [LF 標籤的生命週期](#lf-tag-life-cycle)
+ [Lake Formation 標籤型存取控制與 IAM 屬性型存取控制的比較](#TBAC-comparison-ABAC)

**另請參閱**  
[管理 LF-Tag 值許可](TBAC-granting-tags.md)
[使用 LF-TBAC 方法授予資料湖許可](granting-catalog-perms-TBAC.md)
[Lake Formation 標籤型存取控制](tag-based-access-control.md)

# 新增 LF 標籤建立者
<a name="TBAC-adding-tag-creator"></a>

 根據預設，資料湖管理員可以建立、更新和刪除 LF 標籤、將標籤指派給 Data Catalog 物件，以及將標籤許可授予委託人。如果您想要將標籤建立和管理操作委派給非管理員主體，資料湖管理員可以建立 LF 標籤建立者角色，並將 Lake Formation `Create LF-Tag`許可授予角色。透過可授予的`Create LF-Tag`許可，LF-Tag 建立者可以將標籤建立和維護任務委派給其他非管理主體。

若要讓資料湖管理員將 LF-Tags 指派給 Data Catalog 資源，他們必須授予自己非由他們建立的 LF-Tags 的關聯許可。

**注意**  
跨帳戶許可授予只能包含 `Describe`和 `Associate`許可。您無法將 `Create LF-Tag`、`Alter`、 `Drop`和 `Grant with LFTag expressions`許可授予不同帳戶中的主體。

**Topics**
+ [建立 LF 標籤所需的 IAM 許可](#tag-creator-permissions)
+ [新增 LF 標籤建立者](#add-lf-tag-creator)

**另請參閱**  
[管理 LF-Tag 值許可](TBAC-granting-tags.md)
[使用 LF-TBAC 方法授予資料湖許可](granting-catalog-perms-TBAC.md)
[Lake Formation 標籤型存取控制](tag-based-access-control.md)

## 建立 LF 標籤所需的 IAM 許可
<a name="tag-creator-permissions"></a>

 您必須設定許可，以允許 Lake Formation 主體建立 LF 標籤。將下列陳述式新增至需要建立 LF 標籤的主體的許可政策。

**注意**  
雖然資料湖管理員具有隱含 Lake Formation 許可來建立、更新和刪除 LF 標籤、將 LF 標籤指派給資源，以及將 LF 標籤授予委託人，但資料湖管理員也需要下列 IAM 許可。

如需詳細資訊，請參閱[Lake Formation 角色和 IAM 許可參考](permissions-reference.md)。

```
{
"Sid": "Transformational",
"Effect": "Allow",
    "Action": [
        "lakeformation:AddLFTagsToResource",
        "lakeformation:RemoveLFTagsFromResource",
        "lakeformation:GetResourceLFTags",
        "lakeformation:ListLFTags",
        "lakeformation:CreateLFTag",
        "lakeformation:GetLFTag",
        "lakeformation:UpdateLFTag",
        "lakeformation:DeleteLFTag",
        "lakeformation:SearchTablesByLFTags",
        "lakeformation:SearchDatabasesByLFTags"
     ]
 }
```

將 LF-Tags 指派給資源並將 LF-Tags 授予委託人的委託人必須具有相同的許可，但 `CreateLFTag`、 `UpdateLFTag`和 `DeleteLFTag`許可除外。

## 新增 LF 標籤建立者
<a name="add-lf-tag-creator"></a>

LF-Tag 建立者可以建立 LF 標籤、更新標籤索引鍵和值、刪除標籤、將標籤與 Data Catalog 資源建立關聯，以及使用 LF-TBAC 方法將 Data Catalog 資源的許可授予委託人。LF-Tag 建立者也可以將這些許可授予委託人。

您可以使用 AWS Lake Formation 主控台、 API 或 AWS Command Line Interface () 來建立 LF-Tag 建立者角色AWS CLI。

------
#### [ console ]

**新增 LF 標籤建立者**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以 Datalake 管理員身分登入。

1. 在導覽窗格**的許可**下，選擇 **LF 標籤和許可**。

   在 **LF 標籤和許可**頁面上，選擇 **LF 標籤建立者**區段，然後選擇**新增 LF 標籤建立者**。  
![\[LF-Tag creator details form with IAM 使用者 selection and permission options.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/add-lf-tag-creator.png)

1. 在**新增 LF 標籤建立者**頁面上，選擇具有建立 LF 標籤所需許可的 IAM 角色或使用者。

1. 啟用`Create LF-Tag`許可核取方塊。

1. （選用） 若要讓選取的委託人將`Create LF-Tag`許可授予委託人，請選擇可授予`Create LF-Tag`許可。

1. 選擇**新增**。

------
#### [ AWS CLI ]

```
aws lakeformation grant-permissions --cli-input-json file://grantCreate
{
    "Principal": {
        "DataLakePrincipalIdentifier": "arn:aws:iam::123456789012:user/tag-manager"
    },
    "Resource": {
        "Catalog": {}
    },
    "Permissions": [
        "CreateLFTag"
    ],
    "PermissionsWithGrantOption": [
        "CreateLFTag"
    ]
}
```

------

以下是 LF 標籤建立者角色可用的許可：


| 權限 | Description | 
| --- | --- | 
| Drop | 在 LF 標籤具有此許可的主體可以從資料湖刪除 LF 標籤。主體會取得 LF-Tag 資源所有標籤值的隱含Describe許可。 | 
| Alter | 在 LF 標籤具有此許可的委託人可以從 LF 標籤新增或移除標籤值。主體會取得 LF 標籤之所有標籤值的隱含Alter許可。 | 
| Describe | 在 LF-Tag 上具有此許可的委託人可以在將 LF-Tags 指派給資源或授予 LF-Tags 許可時，檢視 LF-Tag 及其值。您可以在Describe所有索引鍵值或特定值上授予 。 | 
| Associate | 在 LF-Tag 具有此許可的主體可以將 LF-Tag 指派給 Data Catalog 資源。Associate 隱含授予 Describe。 | 
| Grant with LF-Tag expression | 在 LF-Tag 具有此許可的主體可以使用 LF-Tag 金鑰和值授予資料目錄資源的許可。Grant with LF-Tag expression 隱含授予 Describe。 | 

這些許可是可授予的。已使用授予選項授予這些許可的委託人可以將其授予其他委託人。

# 建立 LF 標籤
<a name="TBAC-creating-tags"></a>

所有 LF 標籤都必須在 Lake Formation 中定義，才能使用。LF 標籤包含金鑰，以及金鑰的一或多個可能值。

 資料湖管理員為 LF-Tag 建立者角色設定必要的 IAM 許可和 Lake Formation 許可後，主體可以建立 LF-Tag。LF-Tag 建立者會取得隱含許可，以更新或移除 LF-Tag 中的任何標籤值，並刪除 LF-Tag。

您可以使用 AWS Lake Formation 主控台、 API 或 () 來建立 AWS Command Line Interface LF 標籤AWS CLI。

------
#### [ Console ]

**建立 LF 標籤**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   使用 LF-Tag 建立者許可以主體身分登入，或以資料湖管理員身分登入。

1. 在導覽窗格**的許可**、**LF 標籤和許可**下，選擇 **LF 標籤**。

   **LF-Tags** 頁面隨即出現。  
![\[此頁面具有 4 欄資料表，其中包含欄標題索引鍵、值、擁有者帳戶 ID 和 LF-Tag 許可。資料表有 2 個資料列。資料表上方是水平排列的 4 個按鈕：刪除 （調暗）、編輯 （調暗）、授予許可 （調暗） 和新增標籤。此頁面也有一個搜尋欄位，其中包含預留位置文字「尋找標籤」。搜尋欄位右側的頁面選擇器會顯示左右按鈕之間的「1」值，以及設定圖示。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/policy-tags-page-2.png)

1. 選擇**新增 LF 標籤**。

1. 在**新增 LF 標籤**對話方塊中，輸入金鑰和一或多個值。

   每個金鑰必須至少有一個值。若要輸入多個值，請輸入逗號分隔清單，然後按 **Enter**，或一次輸入一個值，然後在每個值之後選擇**新增**。允許的值數目上限為 1000。

1. 選擇 **Add tag (新增標籤)**。

------
#### [ AWS CLI ]

**建立 LF 標籤**
+ 輸入`create-lf-tag`命令。

  下列範例會建立具有索引鍵`module`和值 和 `Customers`的 LF 標籤`Orders`。

  ```
  aws lakeformation create-lf-tag --tag-key module --tag-values Customers Orders
  ```

------

 身為標籤建立者，委託人會取得此 LF-Tag 的`Alter`許可，並且可以從此 LF-Tag 更新或移除任何標籤值。LF-Tag 建立者主體也可以授予`Alter`許可給另一個主體，以更新和移除此 LF-Tag 上的標籤值。

# 更新 LF 標籤
<a name="TBAC-updating-tags"></a>

您可以透過新增或刪除允許的金鑰值來更新您擁有 `Alter`許可的 LF 標籤。您無法變更 LF-Tag 金鑰。若要變更金鑰，請刪除 LF 標籤，並使用必要的金鑰新增標籤。除了 `Alter` 許可之外，您也需要 `lakeformation:UpdateLFTag` IAM 許可才能更新值。

當您刪除 LF-Tag 值時，不會對任何 Data Catalog 資源上是否存在該 LF-Tag 值執行檢查。如果已刪除的 LF-Tag 值與資源相關聯，則不再顯示該資源，且在該鍵值對上授予許可的任何主體都不再具有許可。

刪除 LF-Tag 值之前，您可以選擇使用 [`remove-lf-tags-from-resource` 命令](TBAC-assigning-tags.md#remove-tag-command)從具有要刪除值的資料目錄資源中移除 LF-Tag，然後使用您要保留的值重新標記資源。

只有擁有 LF-Tag `Alter`許可的資料湖管理員、LF-Tag 建立者和主體才能更新 LF-Tag。

您可以使用 AWS Lake Formation 主控台、 API 或 () 來更新 AWS Command Line Interface LF 標籤AWS CLI。

------
#### [ Console ]

**更新 LF 標籤 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以資料湖管理員、LF 標籤建立者或具有 LF 標籤`Alter`許可的主體身分登入。

1. 在導覽窗格**的許可**、**LF 標籤和許可**下，選擇 **LF 標籤**。

1. 在 **LF-Tags** 頁面上，選取 LF-Tag，然後選擇**編輯**。

1. 在**編輯 LF-Tag** 對話方塊中，新增或移除 LF-Tag 值。

   若要新增多個值，請在**值**欄位中，輸入逗號分隔清單並按 **Enter**，或一次輸入一個值，或在每個值後選擇**新增**。

1. 選擇**儲存**。

------
#### [ AWS CLI ]

**更新 LF 標籤 (AWS CLI)**
+ 輸入 `update-lf-tag`命令。提供下列其中一個或兩個引數：
  + `--tag-values-to-add`
  + `--tag-values-to-delete`

**Example**  
下列範例會將 值取代`vp`為 `vice-president` LF-Tag 金鑰 的值`level`。  

```
aws lakeformation update-lf-tag --tag-key level --tag-values-to-add vice-president 
--tag-values-to-delete vp
```

------

# 刪除 LF 標籤
<a name="TBAC-deleting-tags"></a>

您可以刪除不再使用的 LF 標籤。不會對 Data Catalog 資源上是否存在 LF 標籤執行檢查。如果已刪除的 LF-Tag 與資源相關聯，則不再顯示該資源，而且在該 LF-Tag 上授予許可的任何主體都不再具有許可。

在刪除 LF-Tag 之前，您可以選擇使用 [`remove-lf-tags-from-resource`](TBAC-assigning-tags.md#remove-tag-command)命令從所有資源中移除 LF-Tag。

只有資料湖管理員、LF 標籤建立者或具有 LF 標籤`Drop`許可的主體可以刪除 LF 標籤。除了 `Drop`許可之外，委託人還需要 `lakeformation:DeleteLFTag` IAM 許可才能刪除 LF 標籤。

您可以使用 AWS Lake Formation 主控台、 API 或 () 來刪除 AWS Command Line Interface LF 標籤AWS CLI。

------
#### [ Console ]

**刪除 LF 標籤 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以資料湖管理員身分登入。

1. 在導覽窗格**的許可**、**LF 標籤和許可**下，選擇 **LF 標籤**。

1. 在 **LF-Tags** 頁面上，選取 LF-Tag，然後選擇**刪除**。

1. 在**刪除標籤環境？**對話方塊中，若要確認刪除，請在指定欄位中輸入 LF-Tag 金鑰值，然後選擇**刪除**。

------
#### [ AWS CLI ]

**刪除 LF 標籤 (AWS CLI)**
+ 輸入`delete-lf-tag`命令。提供要刪除之 LF 標籤的金鑰。  
**Example**  

  下列範例使用金鑰 刪除 LF 標籤`region`。

  ```
  aws lakeformation delete-lf-tag --tag-key region
  ```

------

# 列出 LF 標籤
<a name="TBAC-listing-tags"></a>

您可以列出您擁有 `Describe`或 `Associate`許可的 LF 標籤。每個 LF-Tag 金鑰列出的值是您擁有許可的值。

LF-Tag 建立者具有隱含許可，可查看他們已建立的 LF-Tag。

資料湖管理員可以查看本機 AWS 帳戶中定義的所有 LF 標籤，以及已從外部帳戶將 `Describe`和 `Associate`許可授予本機帳戶的所有 LF 標籤。資料湖管理員可以看到所有 LF 標籤的所有值。

您可以使用 AWS Lake Formation 主控台、 API 或 () AWS Command Line Interface 列出 LF 標籤AWS CLI。

------
#### [ Console ]

**列出 LF 標籤 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以 LF-Tag 建立者、資料湖管理員或已授予 LF-Tags 許可且具有 IAM `lakeformation:ListLFTags` 許可的主體身分登入。

1. 在導覽窗格**的許可**、**LF 標籤和許可**下，選擇 **LF 標籤**。

   **LF-Tags** 頁面隨即出現。  
![\[此頁面有 3 欄資料表，其中包含欄標題索引鍵、值和擁有者帳戶 ID。資料表有 2 個資料列。資料表上方是水平排列的 4 個按鈕：重新載入頁面、刪除 （縮小）、編輯 （縮小） 和新增標籤。此頁面也有一個搜尋欄位，其中包含預留位置文字「尋找標籤」。搜尋欄位右側的頁面選擇器會顯示左右按鈕之間的「1」值，以及設定圖示。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/policy-tags-page-2.png)

   檢查**擁有者帳戶 ID** 欄，以判斷從外部帳戶與您的帳戶共用的 LF 標籤。

------
#### [ AWS CLI ]

**列出 LF 標籤 (AWS CLI)**
+ 以資料湖管理員或已授予 LF-Tags 許可且具有 IAM `lakeformation:ListLFTags` 許可的委託人身分執行下列命令。

  ```
  aws lakeformation list-lf-tags
  ```

  輸出類似如下。

  ```
  {
      "LFTags": [
          {
              "CatalogId": "111122223333",
              "TagKey": "level",
              "TagValues": [
                  "director",
                  "vp",
                  "c-level"
              ]
          },
          {
              "CatalogId": "111122223333",
              "TagKey": "module",
              "TagValues": [
                  "Orders",
                  "Sales",
                  "Customers"
              ]
          }
      ]
  }
  ```

  若要查看從外部帳戶授予的 LF 標籤，請包含命令選項 `--resource-share-type ALL`。

  ```
  aws lakeformation list-lf-tags --resource-share-type ALL
  ```

  輸出類似如下。請記下 `NextToken`金鑰，這表示要列出更多項目。

  ```
  {
      "LFTags": [
          {
              "CatalogId": "111122223333",
              "TagKey": "level",
              "TagValues": [
                  "director",
                  "vp",
                  "c-level"
              ]
          },
          {
              "CatalogId": "111122223333",
              "TagKey": "module",
              "TagValues": [
                  "Orders",
                  "Sales",
                  "Customers"
              ]
          }
      ],
      "NextToken": "eyJleHBpcmF0aW...ZXh0Ijp0cnVlfQ=="
  }
  ```

  重複 命令，並新增 `--next-token`引數，以檢視從外部帳戶授予的任何剩餘本機 LF 標籤和 LF 標籤。來自外部帳戶的 LF 標籤一律位於單獨的頁面上。

  ```
  aws lakeformation list-lf-tags --resource-share-type ALL 
  --next-token eyJleHBpcmF0aW...ZXh0Ijp0cnVlfQ==
  ```

  ```
  {
      "LFTags": [
          {
              "CatalogId": "123456789012",
              "TagKey": "region",
              "TagValues": [
                  "central",
                  "south"
              ]
          }
      ]
  }
  ```

------
#### [ API ]

您可以使用 Lake Formation SDKs，列出申請者有權檢視的標籤。

```
import boto3

client = boto3.client('lakeformation')
...

response = client.list_lf_tags(
    CatalogId='string',
    ResourceShareType='ALL',
    MaxResults=50'
)
```

此命令會傳回具有下列結構的`dict`物件：

```
{
    'LFTags': [
        {
            'CatalogId': 'string',
            'TagKey': 'string',
            'TagValues': [
                'string',
            ]
        },
    ],
    'NextToken': 'string'
}
```

------

如需所需許可的詳細資訊，請參閱[Lake Formation 角色和 IAM 許可參考](permissions-reference.md)。

# 將 LF 標籤指派給 Data Catalog 資源
<a name="TBAC-assigning-tags"></a>

您可以將 LF 標籤指派給 Data Catalog 資源 （資料庫、資料表和欄），以控制對這些資源的存取。只有獲授予相符 LF 標籤的主體 （以及獲授予具名資源方法存取權的主體） 才能存取資源。

如果資料表從資料庫繼承 LF 標籤，或資料欄從資料表繼承 LF 標籤，您可以透過將新值指派給 LF 標籤索引鍵來覆寫繼承的值。

您可以指派給資源的 LF 標籤數目上限為 50。

**Topics**
+ [管理指派給資源的標籤的需求](#manage-tags-reqs)
+ [將 LF 標籤指派給資料表資料欄](#assign-tag-column)
+ [將 LF 標籤指派給 Data Catalog 資源](#assign-tag-catalog-resource)
+ [更新資源的 LF 標籤](#update-tags)
+ [從資源移除 LF-Tag](#remove-tag)

## 管理指派給資源的標籤的需求
<a name="manage-tags-reqs"></a>

若要將 LF 標籤指派給 Data Catalog 資源，您必須：
+ 擁有 LF-Tag 上的 Lake Formation `ASSOCIATE`許可。
+ 擁有 IAM `lakeformation:AddLFTagsToResource`許可。
+ 在 Glue 資料庫上擁有 glue：GetDatabase 許可。
+ 成為資源擁有者 （建立者）、對具有 `GRANT`選項的資源具有 `Super` Lake Formation 許可，或具有具有 `GRANT`選項的下列許可：
  + 對於相同 AWS 帳戶中的資料庫：`DESCRIBE`、`ALTER`、 `CREATE_TABLE`和 `DROP` 
  + 對於外部帳戶中的資料庫： `DESCRIBE``CREATE_TABLE`和 `ALTER`
  + 對於資料表 （和資料欄）：`DESCRIBE`、`ALTER`、`DROP``INSERT`、`SELECT`、 和 `DELETE`

此外，LF-Tag 及其指派的資源必須位於相同的 AWS 帳戶中。

若要從 Data Catalog 資源中移除 LF-Tag，您必須符合這些要求，並具有 `lakeformation:RemoveLFTagsFromResource` IAM 許可。

## 將 LF 標籤指派給資料表資料欄
<a name="assign-tag-column"></a>

**將 LF 標籤指派給資料表欄 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以符合上述要求的使用者身分登入。

1. 在導覽窗格中，選擇 **Tables** (資料表)。

1. 選擇資料表名稱 （而非資料表名稱旁的選項按鈕）。

1. 在資料表詳細資訊頁面的**結構描述**區段中，選擇**編輯結構描述**。

1. 在**編輯結構描述**頁面上，選取一或多個資料欄，然後選擇**編輯 LF 標籤**。
**注意**  
如果您想要新增或刪除資料欄並儲存新版本，請先執行此操作。然後編輯 LF 標籤。

   編輯 **LF 標籤**對話方塊隨即出現，並顯示從資料表繼承的任何 LF 標籤。  
![\[影像是編輯 LF 標籤對話方塊視窗的螢幕擷取畫面。視窗的頂端會顯示兩個繼承的金鑰。第一個繼承的索引鍵具有索引鍵 "level" 和值 "director (inherited)"。第二個繼承的金鑰具有金鑰「模組」和值「訂單 （繼承）」。這些欄位下方有一個「指派新的 LF 標籤」按鈕。下方和右側的是取消和儲存按鈕。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/edit-policy-tags-for-columns-2a.png)

1. （選用） 對於**繼承索引鍵**欄位旁的**值**清單，選擇值以覆寫繼承的值。

1. （選用） 選擇**指派新的 LF 標籤**。然後，對於**指派的金鑰**，選擇金鑰，對於**值**，選擇金鑰的值。  
![\[影像是編輯 LF 標籤對話方塊視窗的螢幕擷取畫面。視窗的頂端會顯示兩個繼承的金鑰。第一個繼承的索引鍵具有索引鍵 "level" 和值 "director (inherited)"。第二個繼承的金鑰具有金鑰「模組」和值「訂單 （繼承）」。在本節下方，水平對齊是這些欄位和控制項：「指派的金鑰」欄位、「值」欄位和「移除」按鈕。指派的金鑰欄位包含文字「環境」。值欄位是下拉式清單，其值為「生產」（反白顯示） 和「客戶」。「指派新的 LF 標籤」按鈕會顯示在指派的金鑰欄位下方。視窗右下角是取消和儲存按鈕。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/edit-policy-tags-for-columns-2b.png)

1. （選用） 再次選擇**指派新的 LF 標籤**以新增另一個 LF 標籤。

1. 選擇**儲存**。

## 將 LF 標籤指派給 Data Catalog 資源
<a name="assign-tag-catalog-resource"></a>

------
#### [ Console ]

**將 LF 標籤指派給 Data Catalog 資料庫或資料表**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以符合先前所列要求的使用者身分登入。

1. 在導覽窗格中的資料**目錄**下，執行下列其中一項操作：
   + 若要將 LF 標籤指派給資料庫，請選擇**資料庫**。
   + 若要將 LF 標籤指派給資料表，請選擇**資料表**。

1. 選擇資料庫或資料表，然後在**動作**功能表中，選擇**編輯 LF 標籤**。

   編輯 **LF-Tags： *resource-name*** 對話方塊隨即出現。

   如果資料表從包含的資料庫中繼承 LF 標籤，則視窗會顯示繼承的 LF 標籤。否則，它會顯示文字「沒有與資源相關聯的繼承 LF 標籤」。  
![\[影像是「編輯 LF 標籤：庫存」對話視窗的螢幕擷取畫面。頂端是「繼承的金鑰」（已修剪） 和「值」欄位。繼承的索引鍵欄位具有值 "level"，而值欄位具有值 "director (inherited)"。在本節下方，水平對齊這些欄位並控制 ：「指派的金鑰」欄位、「值」欄位和「移除」按鈕。指派的金鑰欄位包含文字 "module"。值欄位是下拉式清單，其值為「訂單」、「銷售」和「客戶」（反白顯示）。「指派新的 LF-Tag」按鈕位於已指派金鑰欄位下方。在視窗右下角是取消和儲存按鈕。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/edit-policy-tags-for-tables-2.png)

1. （選用） 如果資料表繼承了 LF 標籤，對於**繼承索引鍵**欄位旁的**值**清單，您可以選擇值來覆寫繼承的值。

1. 若要指派新的 LF 標籤，請執行下列步驟：

   1. 選擇**指派新的 LF 標籤**。

   1. 在**指派的金鑰**欄位中，選擇 LF-Tag 金鑰，然後在**值**欄位中，選擇值。

   1. （選用） 再次選擇**指派新的 LF 標籤**，以指派額外的 LF 標籤。

1. 選擇**儲存**。

------
#### [ AWS CLI ]

**將 LF 標籤指派給 Data Catalog 資源**
+ 執行 `add-lf-tags-to-resource` 命令。

  下列範例會將 LF-Tag `module=orders` 指派給資料庫 `orders`中的資料表`erp`。它使用 `--lf-tags`引數的捷徑語法。的 `CatalogID` 屬性`--lf-tags`是選用的。如果未提供，則會假設資源的目錄 ID （在此情況下為 資料表）。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "Table": {"DatabaseName":"erp", "Name":"orders"}}' --lf-tags  CatalogId=111122223333,TagKey=module,TagValues=orders
  ```

  以下是命令成功時的輸出。

  ```
  {
      "Failures": []
  }
  ```

  下一個範例會將兩個 LF 標籤指派給`sales`資料表，並使用`--lf-tags`引數的 JSON 語法。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "Table": {"DatabaseName":"erp", "Name":"sales"}}' --lf-tags '[{"TagKey": "module","TagValues": ["sales"]},{"TagKey": "environment","TagValues": ["development"]}]'
  ```

  下一個範例會將 LF-Tag `level=director` 指派給資料表 的資料`total`欄`sales`。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "TableWithColumns": {"DatabaseName":"erp", "Name":"sales", "ColumnNames":["total"]}}' --lf-tags TagKey=level,TagValues=director
  ```

------

## 更新資源的 LF 標籤
<a name="update-tags"></a>

**更新 Data Catalog 資源的 LF 標籤 (AWS CLI)**
+ 使用 `add-lf-tags-to-resource`命令，如先前程序所述。

  新增具有與現有 LF 標籤相同金鑰的 LF 標籤，但具有不同值的 LF 標籤會更新現有值。

## 從資源移除 LF-Tag
<a name="remove-tag"></a><a name="remove-tag-command"></a>

**移除 Data Catalog 資源的 LF 標籤 (AWS CLI)**
+ 執行 `remove-lf-tags-from-resource` 命令。

  如果資料表的 LF-Tag 值會覆寫從父資料庫繼承的值，則從資料表中移除該 LF-Tag 會還原繼承的值。此行為也適用於覆寫從資料表繼承之索引鍵值的資料欄。

  下列範例`level=director`會從`sales`資料表的 資料`total`欄移除 LF 標籤。的 `CatalogID` 屬性`--lf-tags`是選用的。如果未提供，則會假設資源的目錄 ID （在此情況下為 資料表）。

  ```
  aws lakeformation remove-lf-tags-from-resource 
  --resource ' { "TableWithColumns":  
  { "DatabaseName": "erp",  "Name": "sales",  "ColumnNames":[ "total"]}}' 
  --lf-tags  CatalogId=111122223333,TagKey=level,TagValues=director
  ```

# 檢視指派給資源的 LF 標籤
<a name="TBAC-view-resource-tags"></a>

您可以檢視指派給 Data Catalog 資源的 LF 標籤。您必須在 LF 標籤上擁有 `DESCRIBE`或 `ASSOCIATE`許可才能檢視它。

------
#### [ Console ]

**檢視指派給資源的 LF 標籤 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以資料湖管理員、資源擁有者或已授予資源 Lake Formation 許可的使用者身分登入。

1. 在導覽窗格**的資料目錄**標題下，執行下列其中一項操作：
   + 若要檢視指派給資料庫的 LF 標籤，請選擇**資料庫**。
   + 若要檢視指派給資料表的 LF 標籤，請選擇**資料表**。

1. 在**資料表**或**資料庫**頁面上，選擇資料庫或資料表的名稱。然後在詳細資訊頁面上，向下捲動至 **LF 標籤**區段。

   下列螢幕擷取畫面顯示指派給`customers`資料表的 LF 標籤，其中包含在`retail`資料庫中。`module` LF 標籤繼承自資料庫。資料`credit_limit`欄已指派 `level=vp` LF 標籤。  
![\[影像是customers資料表詳細資訊頁面 LF 標籤區段的螢幕擷取畫面。LF 標籤區段包含具有下列資料欄的資料表：資源、索引鍵、值和繼承來源。資料表有 3 個資料列。資料表上方有一個文字項目欄位，其中包含「尋找標籤」預留位置文字，以及編輯標籤按鈕。影像前面的段落說明螢幕擷取畫面中顯示的資料表值。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/tags-for-resource-2.png)

------
#### [ AWS CLI ]

**檢視指派給資源的 LF 標籤 (AWS CLI)**
+ 輸入與以下相似的命令。

  ```
  aws lakeformation get-resource-lf-tags --show-assigned-lf-tags --resource '{ "Table": {"CatalogId":"111122223333", "DatabaseName":"erp", "Name":"sales"}}'
  ```

  命令會傳回下列輸出：

  ```
  {
      "TableTags": [
          {
              "CatalogId": "111122223333",
              "TagKey": "module",
              "TagValues": [
                  "sales"
              ]
          },
          {
              "CatalogId": "111122223333",
              "TagKey": "environment",
              "TagValues": [
                  "development"
              ]
          }
      ],
      "ColumnTags": [
          {
              "Name": "total",
              "Tags": [
                  {
                      "CatalogId": "111122223333",
                      "TagKey": "level",
                      "TagValues": [
                          "director"
                      ]
                  }
              ]
          }
      ]
  }
  ```

  此輸出只會顯示明確指派而非繼承的 LF 標籤。如果您想要查看所有資料欄上的所有 LF 標籤，包括繼承的 LF 標籤，請省略 `--show-assigned-lf-tags`選項。

------

# 檢視 LF-Tag 指派給的資源
<a name="TBAC-view-tag-resources"></a>

您可以檢視指定給特定 LF-Tag 金鑰的所有 Data Catalog 資源。若要這樣做，您需要下列 Lake Formation 許可：
+ `Describe` 或 `Associate` 的 LF 標籤。
+ `Describe` 資源上的任何其他 Lake Formation 許可。

此外，您需要下列 AWS Identity and Access Management (IAM) 許可：
+ `lakeformation:SearchDatabasesByLFTags`
+ `lakeformation:SearchTablesByLFTags`

------
#### [ Console ]

**檢視 LF-Tag 指派給的資源 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以資料湖管理員或符合先前列出的要求的使用者身分登入。

1. 在導覽窗格**的許可**、**LF 標籤和許可**下，選擇 **LF 標籤**。

1. 選擇 LF-Tag 金鑰 （不是金鑰名稱旁的選項按鈕）。

   LF-Tag 詳細資訊頁面會顯示已指派 LF-Tag 的資源清單。  
![\[影像是金鑰「模組」的 LF 標籤詳細資訊頁面的螢幕擷取畫面。LF 標籤詳細資訊頁面有兩個區段。頂端區段會顯示 LF-Tag 金鑰和值。底部區段會在資料表中顯示與該 LF 標籤相關聯的資源，其中包含下列資料欄：金鑰、值、資源類型和資源。資料表有 12 個資料列，但螢幕擷取畫面只會顯示 7 個資料列。資料表資料列會顯示 LF 標籤已指派給資料庫、資料庫中的兩個資料表，以及依繼承指派的資料表資料欄。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/resources-on-tags-2.png)

------
#### [ AWS CLI ]

**檢視 LF-Tag 指派給的資源**
+ 執行 `search-tables-by-lf-tags`或 `search-databases-by-lf-tags`命令。  
**Example**  

  下列範例列出已指派 `level=vp` LF 標籤的資料表和資料欄。對於列出的每個資料表和資料欄，會輸出資料表或資料欄的所有指派 LF 標籤，而不只是搜尋表達式。

  ```
  aws lakeformation search-tables-by-lf-tags --expression TagKey=level,TagValues=vp
  ```

------

如需所需許可的詳細資訊，請參閱[Lake Formation 角色和 IAM 許可參考](permissions-reference.md)。

## LF 標籤的生命週期
<a name="lf-tag-life-cycle"></a>

1. LF 標籤建立者 Michael 會建立 LF 標籤 `module=Customers`。

1. Michael 在 LF 標籤`Associate`上授予資料工程師 Eduardo。`Associate` 隱含授予 `Describe`。

1. Michael 使用授予選項將資料表`Super`上的 Michael 授予 `Custs` Eduardo，以便 Eduardo 可以將 LF 標籤指派給資料表。如需詳細資訊，請參閱[將 LF 標籤指派給 Data Catalog 資源](TBAC-assigning-tags.md)。

1. Eduardo 會將 LF 標籤指派給`module=customers`資料表 `Custs`。

1. Michael 向資料工程師 Sandra （虛擬程式碼） 授予下列授權。

   ```
   GRANT (SELECT, INSERT ON TABLES) ON TAGS module=customers TO Sandra WITH GRANT OPTION
   ```

1. Sandra 授予資料分析師 Maria 以下許可。

   ```
   GRANT (SELECT ON TABLES) ON TAGS module=customers TO Maria
   ```

   Maria 現在可以在`Custs`資料表上執行查詢。

**另請參閱**  
[中繼資料存取控制](access-control-metadata.md)

## Lake Formation 標籤型存取控制與 IAM 屬性型存取控制的比較
<a name="TBAC-comparison-ABAC"></a>

屬性型存取控制 (ABAC) 是一種授權策略，可根據屬性來定義許可。在 中 AWS，這些屬性稱為*標籤*。您可以將標籤連接至 IAM 資源，包括 IAM 實體 （使用者或角色） 和 AWS 資源。您可以為您的 IAM 主體建立單一 ABAC 政策或是一組政策。這些 ABAC 政策可以設計成在主體的標籤與資源標籤相符時允許操作。ABAC 在成長快速的環境中相當有幫助，並能在政策管理變得繁瑣時提供協助。

雲端安全與控管團隊使用 IAM 來定義所有資源的存取政策和安全許可，包括 Amazon S3 儲存貯體、Amazon EC2 執行個體，以及您可以使用 ARN 參考的任何資源。IAM 政策會定義資料湖資源的廣泛 （粗細） 許可，例如，允許或拒絕 Amazon S3 儲存貯體或字首層級或資料庫層級的存取。如需 IAM ABAC 的詳細資訊，請參閱《*IAM 使用者指南*》中的[什麼是 ABAC AWS？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。

例如，您可以使用 `project-access` 標籤鍵建立三個角色。將第一個角色的鍵值設為 `Dev`，第二個角色的鍵值設為 `Marketing`，並將第三個角色的鍵值設為 `Support`。將具有適當值的標籤指派給資源。然後，您可以使用單一政策，在角色和資源針對 `project-access` 使用相同值標記時允許存取。

資料控管團隊使用 Lake Formation 來定義特定資料湖資源的精細許可。LF 標籤會指派給 Data Catalog 資源 （資料庫、資料表和資料欄），並授予委託人。具有符合資源 LF 標籤之 LF 標籤的主體可以存取該資源。Lake Formation 許可是 IAM 許可的次要許可。例如，如果 IAM 許可不允許使用者存取資料湖，Lake Formation 不會將該資料湖中任何資源的存取權授予該使用者，即使委託人和資源具有相符的 LF 標籤。

Lake Formation 標籤型存取控制 (LF-TBAC) 與 IAM ABAC 搭配使用，為您的 Lake Formation 資料和資源提供額外的許可層級。
+ **Lake Formation TBAC 許可會隨著創新而擴展。**管理員不再需要更新現有政策來允許存取新的資源。例如，假設您使用 IAM ABAC 策略搭配 `project-access`標籤，以提供對 Lake Formation 中特定資料庫的存取。使用 LF-TBAC，LF-Tag `Project=SuperApp`會指派給特定資料表或資料欄，而相同的 LF-Tag 會授予該專案的開發人員。透過 IAM，開發人員可以存取資料庫，而 LF-TBAC 許可會授予開發人員進一步存取資料表內特定資料表或資料欄的權限。如果將新資料表新增至專案，Lake Formation 管理員只需要將標籤指派給新資料表，開發人員才能存取資料表。
+ **Lake Formation TBAC 需要較少的 IAM 政策。**由於您使用 IAM 政策授予 Lake Formation 資源和 Lake Formation TBAC 的高階存取權，以管理更精確的資料存取，因此您可以建立較少的 IAM 政策。
+ **使用 Lake Formation TBAC，團隊可以快速變更和成長。**這是因為新資源會自動根據屬性授與許可。例如，如果新的開發人員加入專案，透過將 IAM 角色與使用者建立關聯，然後將必要的 LF 標籤指派給使用者，即可輕鬆授予此開發人員存取權。您不需要變更 IAM 政策來支援新專案或建立新的 LF 標籤。
+ **使用 Lake Formation TBAC 可以獲得更精細的許可。**IAM 政策會授予最上層資源的存取權，例如 Data Catalog 資料庫或資料表。使用 **Lake Formation TBAC**，您可以授予存取包含特定資料值的特定資料表或資料欄。

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

# 管理中繼資料存取控制的 LF-Tag 表達式
<a name="managing-tag-expressions"></a>

 LF-Tag 表達式是由一或多個 LF-Tag （鍵/值對） 組成的邏輯表達式，用於授予 AWS Glue Data Catalog 資源的許可。LF-Tag 表達式可讓您根據資料資源的中繼資料標籤來定義管理存取的規則。您可以儲存這些表達式，並在多個許可授予中重複使用這些表達式，確保一致性，並使其直接管理隨時間變更的標籤本體。

在指定的 LF-Tag 表達式中，標籤索引鍵是使用 AND 操作組合，而值是使用 OR 操作組合。例如，標籤表達式`content_type:Sales AND location:US`代表與美國銷售資料相關的資源。

您可以在 中建立最多 1000 個 LF-Tag 表達式 AWS 帳戶。這些表達式提供彈性且可擴展的方式，以根據中繼資料標籤管理許可，確保只有授權的使用者或應用程式才能根據定義的標籤規則存取特定資料資源。

LF-Tag 表達式提供下列優點：
+ **可重複使用性 **– 透過定義和儲存 LF-Tag 表達式，您不再需要在將許可指派給其他資源或主體時手動複寫相同的表達式。
+ **一致性 **– 在多個許可授予之間重複使用 LF-Tag 表達式可確保授予和管理許可的方式一致。
+ **標籤本體管理** – LF-Tag 表達式有助於管理標籤本體隨時間的變更，因為您可以更新儲存的表達式，而不是修改個別許可授予。

如需標籤型存取控制的詳細資訊，請參閱 [Lake Formation 標籤型存取控制](tag-based-access-control.md)。

**LF-Tag 表達式建立者**  
LF-Tag 表達式建立者是具有建立和管理 LF-Tag 表達式許可的主體。資料湖管理員可以使用 Lake Formation 主控台、CLI、API 或 SDK 新增 LF-Tag 表達式建立者。LF-Tag 表達式建立者具有隱含 Lake Formation 許可，可建立、更新和刪除 LF-Tag 表達式，以及將 LF-Tag 表達式許可授予其他主體。

非資料湖管理員的 LF-Tag 表達式建立者只會收到他們所建立表達式的隱含 `Describe`、、 `Alter` `Drop`和 `Grant with LF-Tag expression`許可。

資料湖管理員也可以授予 LF-Tag 表達式建立者可授予的`Create LF-Tag expression`許可。然後，LF-Tag 表達式建立者可以將建立 LF-Tag 表達式的許可授予其他主體。

**Topics**
+ [建立 LF-Tag 表達式所需的 IAM 許可](#tag-expression-creator-permissions)
+ [新增 LF-Tag 表達式建立者](#add-lf-tag-expression-creator)
+ [建立 LF-Tag 表達式](TBAC-creating-tag-expressions.md)
+ [更新 LF-Tag 表達式](TBAC-updating-expressions.md)
+ [刪除 LF-Tag 表達式](TBAC-deleting-expressions.md)
+ [列出 LF-Tag 表達式](TBAC-listing-expressions.md)

**另請參閱**  
[管理 LF-Tag 值許可](TBAC-granting-tags.md)
[使用 LF-TBAC 方法授予資料湖許可](granting-catalog-perms-TBAC.md)
[Lake Formation 標籤型存取控制](tag-based-access-control.md)

## 建立 LF-Tag 表達式所需的 IAM 許可
<a name="tag-expression-creator-permissions"></a>

 您必須設定許可，以允許 Lake Formation 主體建立 LF-Tag 表達式。將下列陳述式新增至需要為 LF-Tag 表達式建立者之主體的許可政策。

**注意**  
雖然資料湖管理員具有隱含 Lake Formation 許可來建立、更新和刪除 LF 標籤和 LF 標籤表達式、將 LF 標籤指派給資源，以及將 LF 標籤和 LF 標籤表達式許可授予主體，但資料湖管理員也需要下列 IAM 許可。

如需詳細資訊，請參閱[Lake Formation 角色和 IAM 許可參考](permissions-reference.md)。

```
{
"Sid": "Transformational",
"Effect": "Allow",
    "Action": [
        "lakeformation:AddLFTagsToResource",
        "lakeformation:RemoveLFTagsFromResource",
        "lakeformation:GetResourceLFTags",
        "lakeformation:ListLFTags",
        "lakeformation:CreateLFTag",
        "lakeformation:GetLFTag",
        "lakeformation:UpdateLFTag",
        "lakeformation:DeleteLFTag",
        "lakeformation:SearchTablesByLFTags",
        "lakeformation:SearchDatabasesByLFTags",
        "lakeformation:CreateLFTagExpression",
        "lakeformation:DeleteLFTagExpression",
        "lakeformation:UpdateLFTagExpression",
        "lakeformation:GetLFTagExpression",
        "lakeformation:ListLFTagExpressions",
        "lakeformation:GrantPermissions",
        "lakeformation:RevokePermissions",
        "lakeformation:BatchGrantPermissions",
        "lakeformation:BatchRevokePermissions"
     ]
 }
```

## 新增 LF-Tag 表達式建立者
<a name="add-lf-tag-expression-creator"></a>

LF-Tag 表達式建立者可以建立和儲存可重複使用的 LF-Tag 表達式、更新標籤索引鍵和值、刪除表達式，以及使用 LF-TBAC 方法將 Data Catalog 資源的許可授予委託人。LF-Tag 表達式建立者也可以將這些許可授予委託人。

您可以使用 AWS Lake Formation 主控台、 API 或 AWS Command Line Interface () 來建立 LF-Tag 表達式建立者角色AWS CLI。

------
#### [ console ]

**新增 LF-Tag 表達式建立者**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以資料湖管理員身分登入。

1. 在導覽窗格**的許可**下，選擇 **LF 標籤和許可**。

1. 選擇 **LF-Tag 表達**式索引標籤。

1. 在 **LF-Tag 表達式建立者**區段中，選擇**新增 LF-Tag 表達式建立者**。  
![\[Form to add LF-Tag expression creators with IAM 使用者 selection and permissions.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/add-lf-tag-expression-creator.png)

1. 在**新增 LF-Tag 表達式建立者**頁面上，選擇具有建立 LF-Tag 表達式所需許可的 IAM 角色或使用者。

1. 選取`Create LF-Tag expression`許可核取方塊。

1. （選用） 若要讓選取的委託人將`Create LF-Tag expression`許可授予委託人，請選擇可授予`Create LF-Tag expression`許可。

1. 選擇**新增**。

------
#### [ AWS CLI ]

```
aws lakeformation grant-permissions --cli-input-json file://grantCreate
{
    "Principal": {
        "DataLakePrincipalIdentifier": "arn:aws:iam::123456789012:user/tag-manager"
    },
    "Resource": {
        "Catalog": {}
    },
    "Permissions": [
        "CreateLFTagExpression"
    ],
    "PermissionsWithGrantOption": [
        "CreateLFTagExpression"
    ]
}
```

------

LF-Tag 表達式建立者角色可以建立、更新或刪除 LF-Tag 表達式。


| 權限 | Description | 
| --- | --- | 
| Create | 具有此許可的主體可以在資料湖中新增 LF-Tag 表達式。 | 
| Drop | 在 LF-Tag 表達式上具有此許可的主體可以從資料湖刪除 LF-Tag 表達式。 | 
| Alter | 在 LF-Tag 表達式上具有此許可的主體可以更新 LF-Tag 表達式的表達式內文。 | 
| Describe | 在 LF-Tag 表達式上具有此許可的主體可以檢視 LF-Tag 表達式的內容。 | 
| Grant with LF-Tag expression | 此許可允許收件人在授予資料或中繼資料存取許可時，使用標籤表達式做為資源。Grant with LF-Tag expression 隱含授予 Describe。 | 
| Super | 對於 LF-Tag 表達式， Super許可授予 Describe、Drop、 Alter和 將標籤表達式的許可授予其他主體。 | 

這些許可是可授予的。已使用授予選項授予這些許可的委託人可以將其授予其他委託人。

# 建立 LF-Tag 表達式
<a name="TBAC-creating-tag-expressions"></a>

您需要在 Lake Formation 中定義所有 LF 標籤，並將其指派給 Data Catalog 資源，才能用來建立表達式。LF-Tag 表達式包含一或多個索引鍵，以及每個索引鍵的一或多個可能值。

 資料湖管理員為 LF-Tag 表達式建立者角色設定必要的 IAM 許可和 Lake Formation 許可後，主體可以建立可重複使用的 LF-Tag 表達式。LF-Tag 表達式建立者會取得隱含許可來更新表達式內文，並刪除 LF-Tag 表達式。

您可以使用 AWS Lake Formation 主控台、 API 或 () 來建立 LF-Tag AWS Command Line Interface 表達式AWS CLI。

------
#### [ Console ]

**建立 LF-Tag 表達式**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   使用 LF-Tag 表達式建立者許可以主體身分登入，或以資料湖管理員身分登入。

1. 在導覽窗格**的許可**下**，選擇 LF 標籤和許可**。

1. 選擇 **LF-Tag 表達**式。新增 **LF-Tag 表達**式頁面隨即出現。  
![\[此頁面有欄位可新增名稱、描述和下拉式清單，以選取表達式內文。使用者也可以選擇授予許可。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/add-tag-expression.png)

1. 輸入下列資訊：
   + 名稱 – 輸入表達式的唯一名稱。您無法更新表達式名稱。
   + 描述 – 為表達式提供選用的描述，其中包含表達式的詳細資訊。
   + 表達式 – 透過指定標籤索引鍵及其相關聯的值來建立表達式。每個表達式最多可以新增 50 個索引鍵。您必須擁有表達式內文中所有標籤的 `Grant with LF-Tags` Lake Formation 許可。

      每個金鑰必須至少有一個值。若要輸入多個值，請輸入逗號分隔清單，然後按 **Enter**，或一次輸入一個值，然後在每個值之後選擇**新增**。每個金鑰允許的值數目上限為 1000。

      Lake Formation 使用 AND/OR 邏輯來結合表達式中的多個索引鍵和值。在單一 （索引鍵 ：值清單） 對中，使用邏輯 OR 運算子來組合值。例如，如果配對是 （部門 ：【銷售、行銷】)，則表示如果資源具有具有銷售或行銷價值的部門標籤，則標籤會相符。

      當您指定多個金鑰時，金鑰會由 AND 邏輯運算子聯結。因此，如果完整表達式是 （部門 ：【銷售、行銷】) AND （位置 ：【美國、加拿大】)，則會比對具有部門標籤且值為銷售或行銷的資源，以及具有值為美國或加拿大的位置標籤。以下是具有多個索引鍵和值的另一個範例：

     LF-Tag 表達式： (ContentType ： 【Video， Audio】) AND (Region ： 【Europe， Asia】) AND (Department ： 【Engineering， ProductManagement】)。

     此表達式會比對具有下列各項的資源：- ContentType 標籤具有值 Video OR Audio AND - 區域標籤具有值 Europe OR Asia AND - 部門標籤具有值 Engineering OR ProductManagement。

    您也可以在使用 LF 標籤授予資料湖許可時儲存標籤表達式。選擇索引鍵和值對，然後選擇**另存為新表達**式選項。輸入描述表達式的名稱。  
![\[此頁面具有要選取表達式內文的欄位，以及要輸入名稱的已存檔欄位。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/save-expression-grant.png)

1.  （選用） 接著，選擇使用者/角色，以及您要在帳戶中授予他們的表達式許可。您也可以選擇可授予的許可，以允許使用者將這些許可授予帳戶中的其他使用者。您無法授予標籤表達式的跨帳戶許可。  
![\[此頁面會顯示要選取要授予其他委託人之許可的欄位。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-expression-permissions.png)

1. 選擇**新增**。

------
#### [ AWS CLI ]

**建立 LF-Tag 表達式**
+ 輸入`create-lf-tag-expression`命令。

  下列範例會建立 LF-Tag 表達式，其標籤`Department`具有值 `Sales`和 `Marketing`，而標籤`Location`具有值 `US`。

  ```
  aws lakeformation create-lf-tag-expression \
  -- name "my-tag-expression" \
  -- catalog-id "123456789012" \
  -- expression '{"Expression":[{"TagKey":"Department","TagValues":["Sales","Marketing"]},{"TagKey":"Location","TagValues":["US"]}]}'
  ```

   此 CLI 命令會在 中建立新的 LF-Tag 表達式 AWS Glue Data Catalog。表達式可以根據其關聯的標籤，將許可授予 Data Catalog 資源，例如資料庫、資料表、檢視或資料欄。在此範例中，表達式會比對具有 `Department`索引鍵與值 `Sales`或 的資源`Marketing`，以及具有值 的索引`Location`鍵`US`。

------

 做為標籤表達式建立者 ，主體會取得此 LF-Tag 表達式的`Alter`許可，並可以更新或移除表達式。LF-Tag 表達式建立者主體也可以授予其他主體更新和移除此表達式的`Alter`許可。

# 更新 LF-Tag 表達式
<a name="TBAC-updating-expressions"></a>

只有資料湖管理員、LF-Tag 表達式建立者，以及對 LF-Tag 表達式具有 `Alter`或 `Super`許可的主體，才能更新 LF-Tag 表達式。除了`Alter`許可之外，您也需要新表達式內文上所有基礎索引鍵值的 `lakeformation:UpdateLFTagExpression` IAM 許可和`Grant with LF-Tag`許可，才能更新表達式。

您可以透過更新表達式上授予的描述、表達式內文和許可來更新 LF-Tag 表達式。您無法變更 LF-Tag 表達式的名稱。若要變更名稱，請刪除 LF-Tag 表達式，並使用必要的參數新增。

您可以使用 AWS Lake Formation 主控台、 API 或 AWS Command Line Interface () 來更新 LF-Tag 表達式AWS CLI。

------
#### [ Console ]

**更新 LF-Tag 表達式**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以資料湖管理員、LF 標籤建立者或具有 LF 標籤`Alter`許可的主體身分登入。

1. 在導覽窗格中的許可下，選擇 **LF 標籤和許可**。

1. 選擇 **LF-Tag 表達**式索引標籤。

1. 在 **LF-Tag 表達**式區段中，選取 LF-Tag 表達式，然後選擇**編輯**。

1. 在**編輯 LF-Tag 表達**式對話方塊中，更新描述，並透過新增或移除索引鍵和值來更新表達式內文。

   若要新增多個值，請在**值**欄位中，從下拉式清單中選擇值。

1. 選擇**儲存**。

------
#### [ AWS CLI ]

 Lake Formation 中的 update-lf-tag-expression 命令可讓您更新現有的 LF-Tag 表達式。

```
aws lakeformation update-lf-tag-expression \
-- name expression_name\
-- description new_description \
-- catalog-id catalog_id \
-- expression '{"Expression": [{"TagKey": "tag_key", "TagValues": ["tag_value1", "tag_value2", ...]}]}'
```

以下是所提供命令中的參數所代表的意義：
+ name – 您要更新的現有具名標籤表達式的名稱。
+ description – 表達式的新描述。

  catalog-id – 具名標籤表達式所在的 Data Catalog ID。
+ expression – 您要更新表達式的新標籤表達式字串。

------

# 刪除 LF-Tag 表達式
<a name="TBAC-deleting-expressions"></a>

您可以刪除不再使用的 LF-Tag 表達式。如果您已使用 LF-Tag 表達式將許可授予 Data Catalog 資源上的主體，他們將不再擁有許可。

只有資料湖管理員、LF-Tag 表達式建立者或具有 LF-Tag 表達式`Drop`許可的主體，才能刪除 LF-Tag 表達式。除了 `Drop`許可之外，委託人還需要 `lakeformation:DeleteLFTagExpression` IAM 許可才能刪除 LF-Tag 表達式。

您可以使用 AWS Lake Formation 主控台、 API 或 AWS Command Line Interface () 來刪除 LF-Tag 表達式AWS CLI。

------
#### [ Console ]

**刪除 LF-Tag 表達式 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以資料湖管理員、LF-Tag 表達式建立者或具有刪除表達式許可的主體身分登入。

1. 在導覽窗格**的許可**下，選擇 **LF 標籤和許可**。

1. 選擇 **LF-Tag 表達**式索引標籤。

1. 在 **LF-Tag 表達**式區段中，選取 LF-Tag 表達式，然後選擇**刪除**。

1. 在**刪除 LF-Tag 表達式？**對話方塊中，若要確認刪除，請在指定欄位中輸入 LF-Tag 表達式名稱，然後選擇**刪除**。

------
#### [ AWS CLI ]

**刪除 LF 標籤 (AWS CLI)**
+ 輸入`delete-lf-tag-expression`命令。提供要刪除的表達式名稱和目錄 ID。  
**Example**  

  下列範例`my-tag-expression`會從 ID 為 的資料目錄中刪除名稱為 的 LF-Tag 表達式`123456789012`。如果您使用的是與 AWS CLI 組態相同的帳戶，則 `catalog-id` 參數為選用。刪除 LF-Tag 表達式後，Lake Formation 會清除該表達式的相關許可記錄。這包括個別許可記錄和包含已刪除表達式的彙總許可記錄。

  ```
  aws lakeformation delete-lf-tag-expression \
  --name "my-tag-expression" \
  --catalog-id "123456789012"
  ```

------

# 列出 LF-Tag 表達式
<a name="TBAC-listing-expressions"></a>

 您可以列出您擁有描述許可的 LF-Tag 表達式。資料湖管理員、LF-Tag 表達式建立者和唯讀管理員會隱含地看到其帳戶中的所有標籤表達式。

您可以使用 AWS Lake Formation 主控台、 API 或 () 列出 LF-Tag AWS Command Line Interface 表達式AWS CLI。

------
#### [ Console ]

**列出 LF-Tag 表達式 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以 LF-Tag 表達式建立者、資料湖管理員或已授予 LF-Tag 表達式許可且具有 IAM `lakeformation:ListLFTagExpressions` 許可的主體身分登入。

1. 在導覽窗格**的許可**、**LF 標籤和許可**下。

1. 選擇 **LF-Tag 表達**式索引標籤以查看表達式。本節顯示現有 LF-Tag 表達式的相關資訊，包括表達式名稱、包含包含標籤連結的表達式本身，以及建立、編輯或刪除表達式的選項。

------
#### [ AWS CLI ]

**列出 LF 標籤 (AWS CLI)**
+ 若要使用 列出 LF-Tag 表達式 AWS CLI，您可以使用 list-lf-tag-expressions 命令。請求語法為：

  ```
  aws lakeformation list-lf-tag-expressions \
  -- catalog-id "123456789012" \
  -- max-items "100" \
  -- next-token "next-token"
  ```

   其中：
  + `catalog-id` 是您想要列出 標籤表達式之 Data Catalog AWS 的帳戶 ID。
  + `max-items` 指定要傳回的標籤表達式數目上限。如果未使用此參數，預設值為 100。
  + `next-token` 如果在先前的請求中截斷了結果，則 是接續字符。

  如果適用，回應將包含 LF-Tag 表達式清單和下一個字符。

------

# 管理 LF-Tag 值許可
<a name="TBAC-granting-tags"></a>

您可以將 LF-Tags 上的 `Drop``Alter`許可授予委託人，以管理 LF-Tag 值表達式。您也可以將 `Describe`、 `Associate`和 LF 標籤的`Grant with LF-Tag expressions`許可授予委託人，以檢視 LF 標籤並將其指派給 Data Catalog 資源 （資料庫、資料表和資料欄）。當 LF-Tags 指派給 Data Catalog 資源時，您可以使用 Lake Formation 標籤型存取控制 (LF-TBAC) 方法來保護這些資源。如需詳細資訊，請參閱[Lake Formation 標籤型存取控制](tag-based-access-control.md)。

您可以使用授予選項授予這些許可，以便其他委託人可以授予這些許可。`Grant with LF-Tag expressions`、 `Describe`和 `Associate`許可會在 中說明[新增 LF 標籤建立者](TBAC-adding-tag-creator.md#add-lf-tag-creator)。

您可以將 LF 標籤的 `Describe`和 `Associate`許可授予外部 AWS 帳戶。然後，該帳戶中的資料湖管理員可以將這些許可授予帳戶中的其他主體。外部帳戶中資料湖管理員授予`Associate`許可的主體接著可以將 LF 標籤指派給您與其帳戶共用的 Data Catalog 資源。

授予外部帳戶時，您必須包含授予選項。

您可以使用 Lake Formation 主控台、API 或 AWS Command Line Interface () 授予 LF 標籤的許可AWS CLI。

**Topics**
+ [使用主控台列出 LF-Tag 許可](TBAC-listing-tag-perms-console.md)
+ [使用主控台授予 LF-Tag 許可](TBAC-granting-tags-console.md)
+ [使用 管理 LF-Tag 許可 AWS CLI](TBAC-granting-revoking-tags-cli.md)

如需更多資訊，請參閱[管理中繼資料存取控制的 LF 標籤](managing-tags.md)及[Lake Formation 標籤型存取控制](tag-based-access-control.md)。

# 使用主控台列出 LF-Tag 許可
<a name="TBAC-listing-tag-perms-console"></a>

您可以使用 Lake Formation 主控台來檢視 LF-Tags 上授予的許可。您必須是 LF-Tag 建立者、資料湖管理員，或具有 `Describe`或 LF-Tag `Associate`許可才能查看。

**列出 LF-Tag 許可 （主控台）**

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   以 LF-Tag 建立者、資料湖管理員或已授予 LF-Tag 上 `Drop`、`Associate`、 `Alter`或 `Describe`許可的使用者身分登入。

1. 在導覽窗格**的許可**下，選擇 **LF 標籤和許可**，然後選擇 **LF 標籤許可**區段。

   **LF-Tag 許可**區段顯示包含主體、標籤索引鍵、值和許可的資料表。  
![\[此頁面包含具有下列資料欄的許可表：主體、主體類型、金鑰、值、許可和可授予。有五列。每一列左側有一個選項按鈕。資料表上方是一個搜尋欄位，而這些按鈕：重新整理、檢視、撤銷和授予。由於一開始未選取任何資料列，因此會停用檢視和撤銷按鈕。第一列的值為： Principal=arn：aws：iam：：111122223333：user/datalake_admin， Principal type=IAM user， Keys=environment， Values=All value， Permissions=DESCRIBE， Grantable=DESCRIBE。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/list-tag-permissions-page.png)

# 使用主控台授予 LF-Tag 許可
<a name="TBAC-granting-tags-console"></a>

下列步驟說明如何使用 Lake Formation 主控台上的授予 LF-Tag 許可頁面授予 **LF-Tag 許可**。頁面分為以下部分：
+ **許可類型** – 要授予的許可類型。
+ **委託人** – 要授予許可的 IAM 使用者或角色，或 SAML 使用者或角色。
+  **LF-Tag 鍵/值對許可** – 要授予許可的 LF-Tag 鍵/值對。
+  **LF 標籤許可** – 要授予許可的 LF 標籤。
+  **LF-Tag 表達式許可** – 要授予許可的 LF-Tag。
+  **許可** – 授予的許可。

## 開啟**授予 LF-Tag 許可**頁面
<a name="tag-start-grant"></a>

1. 開啟 Lake Formation 主控台，網址為 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   已使用 `Grant`選項，以 LF-Tag 建立者、資料湖管理員或使用者 LF-Tag 許可或 LF-Tag 鍵值對許可的身分登入。

1. 在導覽窗格中，選擇 **LF 標籤和許可**，選擇 **LF 標籤許可**區段。

1. 選擇 **授予許可**。

## 指定許可類型
<a name="grant-tag-permission-type"></a>

在**許可類型**區段中，選擇許可類型。

LF 標籤許可  
選擇 **LF-Tag 許可**，以允許主體更新 LF-Tag 值或刪除 LF-Tag。

LF 標籤鍵/值對許可  
選擇 **LF-Tag 鍵/值對許可**，以允許主體將 LF-Tags 指派給 Data Catalog 資源、檢視 LF-Tags 和值，並將基於 LF-Tags 的許可授予主體。  
下列各節中可用的選項取決於**許可類型**。

LF-Tag 表達式許可  
選擇 **LF-Tag 表達式許可**，以允許主體更新表達式或刪除表達式。

## 指定委託人
<a name="grant-tags-principals"></a>

**注意**  
您無法將 LF-Tag 許可 (`Alter` 和 `Drop`) 授予另一個帳戶中的外部帳戶或主體。

在**委託人**區段中，選擇委託人類型，並指定要授予許可的委託人。

![\[主體區段包含三個以下列文字命名的圖磚。每個圖磚都包含選項按鈕和文字。已選取 IAM 使用者和角色圖磚，且 IAM 使用者和角色下拉式清單位於圖磚下方。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-tags-principals-section.png)


**IAM 使用者和角色**  
從 **IAM 使用者和角色清單中選擇一或多個使用者或角色**。

**SAML 使用者和群組**  
對於 **SAML 和快速使用者和群組**，輸入透過 SAML 聯合的使用者或群組的一或多個 Amazon Resource Name (ARNs)，或輸入快速使用者或群組ARNs。在每個 ARN 後按下 **Enter** 鍵。  
如需如何建構 ARNs 的資訊，請參閱 [Lake Formation 授予和撤銷 AWS CLI 命令](lf-permissions-reference.md#perm-command-format)。  
僅 Quick Enterprise Edition 支援 Lake Formation 與 Quick 整合。

**外部帳戶**  
針對**AWS 帳戶**，輸入一或多個有效的 AWS 帳戶 IDs。在每個 ID 之後按 **Enter**。  
組織 ID 包含「o-」，後面接著 10 到 32 個小寫字母或數字。  
組織單位 ID 以「ou-」開頭，後面接著 4 到 32 個小寫字母或數字 （包含 OU 的根 ID)。此字串後面接著第二個「-」破折號和 8 到 32 個額外的小寫字母或數字。  
針對 IAM 主體，輸入 IAM 使用者或角色的 ARN。

## 指定 LF 標籤
<a name="grant-tags-tags"></a>

若要授予 LF 標籤的許可，請在 **LF 標籤許可**區段中指定要授予許可的 LF 標籤。

![\[LF 標籤區段顯示兩列欄位，其中每一列從左到右移動，具有金鑰欄位、值欄位和移除按鈕。值欄位是下拉式清單。兩列欄位下方的是新增 LF 標籤按鈕。第一列會在金鑰欄位中顯示「模組」，而值欄位下方有兩個小型圖磚，分別包含 Orders and Sales，表示使用 已選擇 Orders and Sales 做為金鑰模組的值。每個圖磚都有一個 X，您可以按一下它 （如關閉方塊） 來刪除圖磚。如果欄位空白，則為第二列。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-tags-tags-section-2.png)

+ 使用下拉式清單選擇一或多個 LF 標籤。

## 指定 LF 標籤鍵/值對
<a name="w2aac15b9c27c19c21c15"></a>

1. 若要授予 LF-Tag 鍵/值對的許可，（您必須先選擇 **LF-Tag 鍵/值對許可**作為**許可類型**) 選擇**新增 LF-Tag 鍵/值對**，以顯示用於指定 LF-Tag 鍵和值的第一列欄位。  
![\[Interface for adding LF-Tag key-value pairs and setting associated permissions.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/tag-key-value-pair.png)

1. 將游標放在**索引鍵**欄位中，選擇性地開始輸入 以縮小選取範圍清單，然後選取 LF 標籤索引鍵。

1. 在**值**清單中，選取一或多個值，然後按下 **Tab** 或按一下或點選欄位外以儲存選取的值。
**注意**  
如果**值**清單中的其中一個資料列具有焦點，請按 **Enter** 選取或清除核取方塊。

   選取的值會顯示為**值**清單下方的圖磚。選擇 ✖ 以移除值。選擇**移除**以移除整個 LF 標籤。

1. 若要新增另一個 LF-Tag，請再次選擇**新增 LF-Tag**，然後重複前兩個步驟。

## 指定 LF-Tag 表達式
<a name="w2aac15b9c27c19c21c17"></a>

1. 若要授予 LF-Tag 表達式的許可，您需要先選擇 **LF-Tag 表達式許可**作為**許可類型**)。  
![\[Permission type selection interface with LF-Tag expression permissions highlighted.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/tag-expression.png)

1. 選擇 LF-Tag 表達式。

1. 選取的表達式會在 **LF-Tag 表達**式清單下方顯示為圖磚。選擇 ✖ 以移除表達式。

1. 若要新增另一個 LF-Tag 表達式，請選擇另一個表達式。

## 指定許可
<a name="grant-tags-permissions"></a>

本節會根據您在上一個步驟中選擇的許可**類型**，顯示 **LF-Tag 許可****或 LF-Tag 值**許可。

根據您選擇授予的**許可類型**，選取 **LF-Tag 許可**或 **LF-Tag 鍵/值對許可**，以及可授予的許可。

1. 在 **LF-Tag 許可**下，選取要授予的許可。

   授予 **Drop** and **Alter** 隱含授予 **Describe**。

   您需要授予所有標籤值的**更改**和**捨棄**許可。

1. 在 **LT-Tag 鍵值許可**下，選取要授予的許可。

   授予**關聯**隱含授予**描述**。選擇**使用 LF-Tag 表達式授予**，以允許授予收件人使用 LF-TBAC 方法授予或撤銷 Data Catalog 資源的存取許可。

1. 在 **LF-Tag 表達式許可**下，選取要授予的許可。

   授予 **Drop** and **Alter** 隱含授予 **Describe**。

   授予**超級**許可， 授予所有可用的許可。

1. （選用） 在**可授予許可**下，選取授予收件人可以授予其 AWS 帳戶中其他委託人的許可。

1. 選擇 **Grant** (授予)。

# 使用 管理 LF-Tag 許可 AWS CLI
<a name="TBAC-granting-revoking-tags-cli"></a>

您可以使用 () 授予、撤銷和列出 LF 標籤 AWS Command Line Interface 的許可AWS CLI。

**列出 LF-Tag 許可 (AWS CLI)**
+ 輸入`list-permissions`命令。您必須是 LF-Tag 建立者、資料湖管理員，或具有 `Drop`LF-Tag 的 `Alter``Describe`、`Associate`、、 `Grant with LF-Tag permissions`許可才能查看它。

  下列命令會請求您擁有許可的所有 LF 標籤。

  ```
  aws lakeformation list-permissions --resource-type LF_TAG
  ```

  以下是資料湖管理員的範例輸出，該管理員會看到授予所有主體的所有 LF 標籤。非管理使用者只會看到授予給他們的 LF 標籤。從外部帳戶授予的 LF-Tag 許可會顯示在單獨的結果頁面上。若要查看它們，請重複 命令，並提供`--next-token`引數與上一個命令執行中傳回的字符。

  ```
  {
      "PrincipalResourcePermissions": [
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_admin"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "environment",
                      "TagValues": [
                          "*"
                      ]
                  }
              },
              "Permissions": [
                  "ASSOCIATE"
              ],
              "PermissionsWithGrantOption": [
                  "ASSOCIATE"
              ]
          },
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "module",
                      "TagValues": [
                          "Orders",
                          "Sales"
                      ]
                  }
              },
              "Permissions": [
                  "DESCRIBE"
              ],
              "PermissionsWithGrantOption": []
          },
  ...
      ],
      "NextToken": "eyJzaG91bGRRdWVy...Wlzc2lvbnMiOnRydWV9"
  }
  ```

  您可以列出特定 LF-Tag 金鑰的所有授予。下列命令會傳回 LF-Tag 上授予的所有許可`module`。

  ```
  aws lakeformation list-permissions --resource-type LF_TAG --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
  ```

  您也可以列出針對特定 LF 標籤授予特定委託人的 LF 標籤值。提供`--principal`引數時，您必須提供引`--resource`數。因此，命令只能針對特定 LF-Tag 金鑰有效地請求授予特定委託人的值。下列命令顯示如何對委託人 `datalake_user1`和 LF-Tag 金鑰 執行此操作`module`。

  ```
  aws lakeformation list-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --resource-type LF_TAG --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
  ```

  下列為範例輸出。

  ```
  {
      "PrincipalResourcePermissions": [
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "module",
                      "TagValues": [
                          "Orders",
                          "Sales"
                      ]
                  }
              },
              "Permissions": [
                  "ASSOCIATE"
              ],
              "PermissionsWithGrantOption": []
          }
      ]
  }
  ```

**授予 LF-Tags 的許可 (AWS CLI)**

1. 輸入與以下相似的命令。此範例`datalake_user1`使用金鑰 授予使用者 LF-Tag 上的`Associate`許可`module`。它授予檢視和指派該索引鍵所有值的許可，如星號 (\$1) 所示。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ASSOCIATE" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
   ```

   隱含授予`Associate`許可會隱含授予`Describe`許可。

   下一個範例使用 金鑰 ，搭配 授予選項`module`，`Associate`在 LF-Tag 上授予外部 AWS 帳戶 1234-5678-9012。它授予僅檢視和指派值 `sales`和 的許可`orders`。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=123456789012 --permissions "ASSOCIATE" --permissions-with-grant-option "ASSOCIATE" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["sales", "orders"]}}'
   ```

1. 隱含授予`GrantWithLFTagExpression`許可會隱含授予`Describe`許可。

   下一個範例使用 金鑰 `GrantWithLFTagExpression` ，搭配 授予選項`module`，將 LF 標籤上的使用者授予 。它只授予使用值 和 來檢視`sales`和授予 Data Catalog 資源許可的許可`orders`。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "GrantWithLFTagExpression" --permissions-with-grant-option "GrantWithLFTagExpression" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["sales", "orders"]}}'
   ```

1. 下一個範例使用 金鑰 將`Drop`許可授予 LF-Tag 上的使用者`module`，並使用 授予選項。它授予刪除 LF 標籤的許可。若要刪除 LF 標籤，您需要該金鑰所有值的許可。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "DROP" --permissions-with-grant-option "DROP" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
   ```

1. 下一個範例使用 金鑰 將 LF-Tag 上的`Alter`許可授予使用者`module`，並使用 授予選項。它授予刪除 LF 標籤的許可。若要更新 LF-Tag，您需要該金鑰所有值的許可。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "ALTER" --permissions-with-grant-option "ALTER" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
   ```

**撤銷 LF 標籤的許可 (AWS CLI)**
+ 輸入與以下相似的命令。此範例會撤銷 LF-Tag 上的`Associate`許可，其中包含`module`來自使用者 的 金鑰`datalake_user1`。

  ```
  aws lakeformation revoke-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ASSOCIATE" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
  ```