

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

# 管理 Lake Formation 許可
<a name="managing-permissions"></a>

Lake Formation 提供資料湖中資料的中央存取控制。您可以在 Lake Formation 中依角色為使用者和應用程式定義安全政策型規則，而與 的整合會 AWS Identity and Access Management 驗證這些使用者和角色。定義規則後，Lake Formation 會對 Amazon Redshift Spectrum 和 Amazon Athena 的使用者強制執行資料表、資料欄和 ro 層級精細度的存取控制。

**Topics**
+ [授予資料位置許可](granting-location-permissions.md)
+ [授予 Data Catalog 資源的許可](granting-catalog-permissions.md)
+ [許可範例案例](security-permissions-example-scenario.md)
+ [Lake Formation 中的資料篩選和儲存格層級安全性](data-filtering.md)
+ [在 Lake Formation 中檢視資料庫和資料表許可](viewing-permissions.md)
+ [使用 Lake Formation 主控台撤銷許可](revoking-permssions-console-all.md)
+ [Lake Formation 中的跨帳戶資料共用](cross-account-permissions.md)
+ [存取和檢視共用的 Data Catalog 資料表和資料庫](viewing-shared-resources.md)
+ [建立資源連結](creating-resource-links.md)
+ [跨區域存取資料表](data-access-across-region.md)

# 授予資料位置許可
<a name="granting-location-permissions"></a>

中的資料位置許可 AWS Lake Formation 可讓主體建立和修改指向指定已註冊 Amazon S3 位置的 Data Catalog 資源。除了 Lake Formation 資料許可之外，資料位置許可還可用於保護資料湖中的資訊。

Lake Formation 不會將 AWS Resource Access Manager (AWS RAM) 服務用於資料位置許可授予，因此您不需要接受資料位置許可的資源共用邀請。

您可以使用 Lake Formation 主控台、API 或 AWS Command Line Interface () 授予資料位置許可AWS CLI。

**注意**  
若要讓授予成功，您必須先向 Lake Formation 註冊資料位置。

**另請參閱:**  
[Underlying data access control](access-control-underlying-data.md#data-location-permissions)

**Topics**
+ [授予資料位置許可 （相同帳戶）](granting-location-permissions-local.md)
+ [授予資料位置許可 （外部帳戶）](granting-location-permissions-external.md)
+ [授予與您的帳戶共用之資料位置的許可](regranting-locations.md)

# 授予資料位置許可 （相同帳戶）
<a name="granting-location-permissions-local"></a>

請依照下列步驟，將資料位置許可授予您 AWS 帳戶中的委託人。您可以使用 Lake Formation 主控台、API 或 AWS Command Line Interface () 來授予許可AWS CLI。

------
#### [ AWS 管理主控台 ]

**授予資料位置許可 （相同帳戶）**

1. 在 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 AWS Lake Formation 主控台。以資料湖管理員或擁有所需資料位置之許可的委託人身分登入。

1. 在導覽窗格中的**許可**下，選擇**資料位置**。

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

1. 在**授予許可**對話方塊中，確定已選取**我的帳戶**圖磚。然後提供下列資訊：
   + 針對 **IAM 使用者和角色**，選擇一或多個主體。
   + 對於 **SAML 和 Amazon Quick 使用者和群組**，為透過 SAML 聯合的使用者或群組輸入一或多個 Amazon Resource Name (ARNs)，或為 Amazon Quick 使用者或群組輸入 ARNs。

     一次輸入一個 ARN，並在每個 ARN 之後按 **Enter**。如需如何建構 ARNs 的資訊，請參閱 [Lake Formation 授予和撤銷 AWS CLI 命令](lf-permissions-reference.md#perm-command-format)。
   + 針對**儲存位置**，選擇**瀏覽**，然後選擇 Amazon Simple Storage Service (Amazon S3) 儲存位置。位置必須向 Lake Formation 註冊。再次選擇**瀏覽**以新增其他位置。您也可以輸入位置，但請務必在位置前面加上 `s3://`。
   + 對於**註冊帳戶位置**，輸入註冊位置 AWS 的帳戶 ID。這會預設為您的帳戶 ID。在跨帳戶案例中，收件人帳戶中的資料湖管理員可以在將資料位置許可授予收件人帳戶中的其他主體時，在此處指定擁有者帳戶。
   + （選用） 若要讓選取的主體授予所選位置的資料位置許可，請選取**可授予**。  
![\[在授予許可對話方塊中，會選取使用者 datalake_user 和儲存位置 s3：//retail/transactions/q119。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-location-dialog-local.png)

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

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

**授予資料位置許可 （相同帳戶）**
+ 執行`grant-permissions`命令，並`DATA_LOCATION_ACCESS`授予委託人，指定 Amazon S3 路徑做為資源。  
**Example**  

  下列範例`s3://retail`會將 上的資料位置許可授予使用者 `datalake_user1`。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3:::retail"}}'
  ```  
**Example**  

  下列範例`s3://retail`會將 上的資料位置許可授予 `ALLIAMPrincipals` 群組。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3:::retail", "CatalogId": "111122223333"}}'
  ```

------

**另請參閱:**  
[Lake Formation 許可參考](lf-permissions-reference.md)

# 授予資料位置許可 （外部帳戶）
<a name="granting-location-permissions-external"></a>

請依照下列步驟，將資料位置許可授予外部 AWS 帳戶或組織。

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

**開始之前**  
確定符合所有跨帳戶存取先決條件。如需詳細資訊，請參閱[先決條件](cross-account-prereqs.md)。

------
#### [ AWS 管理主控台 ]

**授予資料位置許可 （外部帳戶、主控台）**

1. 在 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 AWS Lake Formation 主控台。以資料湖管理員身分登入。

1. 在導覽窗格**的許可**下，選擇**資料位置**，然後選擇**授予**。

1. 在**授予許可**對話方塊中，選擇**外部帳戶**圖磚。

1. 請提供下列資訊：
   + 針對**AWS 帳戶 ID 或 AWS 組織 ID**，輸入有效的 AWS 帳戶號碼、組織 IDs或組織單位 IDs。

     在每個 ID 之後按 **Enter**。

     組織 ID 包含「o-」，後面接著 10 到 32 個小寫字母或數字。

     組織單位 ID 包含「ou-」，後面接著 4 到 32 個小寫字母或數字 （包含 OU 的根 ID)。此字串後面接著第二個 "-" （連字號） 和 8 到 32 個額外的小寫字母或數字。
   + 在**儲存位置**下，選擇**瀏覽**，然後選擇 Amazon Simple Storage Service (Amazon S3) 儲存位置。位置必須向 Lake Formation 註冊。  
![\[授予許可對話方塊已選取外部帳戶選項按鈕、指定的 AWS 帳戶，以及指定的儲存位置。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-location-dialog-external.png)

1. 選取**可授予**。

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

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

**授予資料位置許可 （外部帳戶 AWS CLI)**
+ 若要將許可授予外部 AWS 帳戶，請輸入類似以下的命令。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333  --permissions "DATA_LOCATION_ACCESS" --permissions-with-grant-option "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"CatalogId":"123456789012","ResourceArn":"arn:aws:s3::retail/transactions/2020q1"}}'
  ```

  此命令`DATA_LOCATION_ACCESS`使用授予選項授予 Amazon S3 位置 上的帳戶 1111-2222-3333`s3://retail/transactions/2020q1`，該位置為帳戶 1234-5678-9012 所擁有。

  若要將許可授予組織，請輸入類似以下的命令。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:organization/o-abcdefghijkl --permissions "DATA_LOCATION_ACCESS" --permissions-with-grant-option "DATA_LOCATION_ACCESS" --resource '{"DataLocation": {"CatalogId":"123456789012","ResourceArn":"arn:aws:s3::retail/transactions/2020q1"}}'
  ```

  此命令`DATA_LOCATION_ACCESS`會將授予選項授予 Amazon S3 位置 `o-abcdefghijkl`上的組織`s3://retail/transactions/2020q1`，該位置為帳戶 1234-5678-9012 所擁有。

   若要將許可授予外部 AWS 帳戶中的委託人，請輸入類似以下的命令。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3::retail/transactions/2020q1", "CatalogId": "123456789012"}}'
  ```

  此命令`DATA_LOCATION_ACCESS`會授予帳戶 1111-2222-3333 中位於 Amazon S3 位置 的委託人`s3://retail/transactions/2020q1`，該位置為帳戶 1234-5678-9012 所擁有。  
**Example**  

  下列範例`s3://retail`會將 上的資料位置許可授予外部帳戶中的 `ALLIAMPrincipals` 群組。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3:::retail", "CatalogId": "123456789012"}}'
  ```

------

**另請參閱:**  
[Lake Formation 許可參考](lf-permissions-reference.md)

# 授予與您的帳戶共用之資料位置的許可
<a name="regranting-locations"></a>

與 AWS 您的帳戶共用 Data Catalog 資源後，身為資料湖管理員，您可以將資源的許可授予帳戶中的其他主體。如果在共用資料表上授予`ALTER`許可，且資料表指向已註冊的 Amazon S3 位置，您還必須在該位置授予資料位置許可。同樣地，如果在共用資料庫上授予 `CREATE_TABLE`或 `ALTER`許可，且資料庫具有指向已註冊位置的位置屬性，您也必須授予該位置的資料位置許可。

若要將共用位置上的資料位置許可授予您帳戶中的委託人，您的帳戶必須已使用 授予選項授予該位置的`DATA_LOCATION_ACCESS`許可。然後，當您`DATA_LOCATION_ACCESS`將 授予帳戶中的另一個委託人時，您必須包含擁有者帳戶的資料目錄 ID (AWS 帳戶 ID)。擁有者帳戶是註冊位置的帳戶。

您可以使用 AWS Lake Formation 主控台、 API 或 AWS Command Line Interface (AWS CLI 授予資料位置許可。

**授予與您的帳戶共用之資料位置的許可 （主控台）**
+ 請遵循 [授予資料位置許可 （相同帳戶）](granting-location-permissions-local.md) 中的步驟。

  對於**儲存位置**，您必須輸入位置。針對**註冊帳戶位置**，輸入擁有者 AWS 帳戶的帳戶 ID。

**授予與您帳戶共用之資料位置的許可 (AWS CLI)**
+ 輸入下列其中一個命令，將許可授予使用者或角色。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/<user-name> --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"CatalogId":"<owner-account-ID>","ResourceArn":"arn:aws:s3:::<s3-location>"}}'
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:role/<role-name> --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"CatalogId":"<owner-account-ID>","ResourceArn":"arn:aws:s3:::<s3-location>"}}'
  ```

# 授予 Data Catalog 資源的許可
<a name="granting-catalog-permissions"></a>

您可以在 中將**資料許可**授予委託人， AWS Lake Formation 讓委託人可以建立和管理 Data Catalog 資源，以及存取基礎資料。您可以授予目錄、資料庫、資料表和檢視的資料**湖許可**。當您授予資料表的許可時，您可以限制對特定資料表資料欄或資料列的存取，以實現更精細的存取控制。

您可以授予個別目錄、資料庫、資料表和檢視的許可，或使用單一授予操作，您可以授予目錄或資料庫中所有資料庫、資料表和檢視的許可。如果您將資料庫中所有資料表的許可授予 IAM 主體，則會隱含地授予資料庫的`DESCRIBE`許可。然後，資料庫會出現在 主控台的**資料庫**頁面上，並由 `GetDatabases` API 操作傳回。相同的原則適用於目錄層級 - 當您在目錄中接收資料庫的許可時，您也會取得該目錄的`DESCRIBE`許可。

**重要**  
隱含`DESCRIBE`許可僅適用於將許可授予相同 AWS 帳戶中的 IAM 主體時。對於跨帳戶資源，您必須明確授予`DESCRIBE`許可。使用屬性型存取控制 (ABAC) 時，自動`DESCRIBE`許可授予不適用。使用屬性授予資料庫中所有資料表的許可時，Lake Formation 不會隱含地授予資料庫`DESCRIBE`許可。

您可以使用具名資源方法或 Lake Formation 標籤型存取控制 (LF-TBAC) 方法來授予許可。

您可以授予許可給相同 中的委託人， AWS 帳戶 或外部帳戶或組織。當您授予外部帳戶或組織時，您會與這些帳戶或組織共用您擁有的 Data Catalog 物件。然後，這些帳戶或組織中的主體可以存取您擁有的 Data Catalog 物件和基礎資料。

**注意**  
目前，LF-TBAC 方法支援將跨帳戶許可授予 IAM 主體 AWS 帳戶、組織和組織單位 (OUs)。

當您將許可授予外部帳戶或組織時，您必須包含授予選項。只有外部帳戶中的資料湖管理員可以存取共用物件，直到管理員將共用物件的許可授予外部帳戶中的其他主體為止。

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

**注意**  
當您刪除 Data Catalog 物件時，與該物件相關聯的所有許可都會失效。使用相同名稱重新建立相同的資源， 不會復原 Lake Formation 許可。使用者必須再次設定新的許可。

**另請參閱：**  
 [跨 AWS 帳戶共用 Data Catalog 資料表和資料庫](sharing-catalog-resources.md) 
 [中繼資料存取控制](access-control-metadata.md) 
 [Lake Formation 許可參考](lf-permissions-reference.md) 

# 授予或撤銷 Lake Formation 許可所需的 IAM 許可
<a name="required-permissions-for-grant"></a>

所有委託人，包括資料湖管理員，都需要下列 AWS Identity and Access Management (IAM) 許可，才能使用 Lake Formation API 或 授予或撤銷 AWS Lake Formation 資料目錄許可或資料位置許可 AWS CLI：
+ `lakeformation:GrantPermissions`
+ `lakeformation:BatchGrantPermissions`
+ `lakeformation:RevokePermissions`
+ `lakeformation:BatchRevokePermissions`
+ `glue:GetTable`、 `glue:GetDatabase`或 `glue:GetCatalog` 適用於您使用具名資源方法授予許可的資料表、資料庫或目錄。

**注意**  
資料湖管理員具有隱含 Lake Formation 許可，可授予和撤銷 Lake Formation 許可。但他們仍然需要 Lake Formation 授予和撤銷 API 操作的 IAM 許可。  
具有`AWSLakeFormationDataAdmin` AWS 受管政策的 IAM 角色無法新增資料湖管理員，因為此政策包含 Lake Formation API 操作 的明確拒絕`PutDataLakeSetting`。

對於非資料湖管理員且想要使用 Lake Formation 主控台授予或撤銷許可的主體，建議使用下列 IAM 政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:ListPermissions",
                "lakeformation:GrantPermissions",
                "lakeformation:BatchGrantPermissions",
                "lakeformation:RevokePermissions",
                "lakeformation:BatchRevokePermissions",
                "glue:GetCatalogs",
                "glue:GetDatabases",
                "glue:SearchTables",
                "glue:GetTables",
                "glue:GetCatalog",
                "glue:GetDatabase",
                "glue:GetTable",
                "iam:ListUsers",
                "iam:ListRoles",
                "sso-directory:DescribeUser",
                "sso-directory:DescribeGroup",
                "sso:DescribeInstance"
            ],
            "Resource": "*"
        }
    ]
}
```

------

此政策中的所有 `glue:`和 `iam:`許可都可以在 AWS 受管政策 中使用`AWSGlueConsoleFullAccess`。

若要使用 Lake Formation 標籤型存取控制 (LF-TBAC) 授予許可，委託人需要額外的 IAM 許可。如需詳細資訊，請參閱[Lake Formation 標籤型存取控制最佳實務和考量事項](lf-tag-considerations.md)及[Lake Formation 角色和 IAM 許可參考](permissions-reference.md)。

**跨帳戶 許可**  
想要使用具名資源方法授予跨帳戶 Lake Formation 許可的使用者，也必須擁有 `AWSLakeFormationCrossAccountManager` AWS 受管政策中的許可。

資料湖管理員需要這些相同的許可才能授予跨帳戶許可，加上 AWS Resource Access Manager (AWS RAM) 許可，才能將許可授予組織。如需詳細資訊，請參閱[Data Lake 管理員許可](permissions-reference.md#persona-dl-admin)。

**管理使用者**  
具有管理許可的委託人，例如具有 `AdministratorAccess` AWS 受管政策的委託人，具有授予 Lake Formation 許可和建立資料湖管理員的許可。若要拒絕使用者或角色存取 Lake Formation 管理員操作，請將管理員 API 操作的`Deny`陳述式附加或新增至其政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lakeformation:GetDataLakeSettings",
                "lakeformation:PutDataLakeSettings"
            ],
            "Effect": "Deny",
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

**重要**  
若要防止使用者使用擷取、轉換和載入 (ETL) 指令碼將自己新增為管理員，請確保所有非管理員使用者和角色都無法存取這些 API 操作。`AWSLakeFormationDataAdmin` AWS 受管政策包含 Lake Formation API 操作的明確拒絕，`PutDataLakeSetting`可防止使用者新增資料湖管理員。

# 使用具名資源方法授予資料許可
<a name="granting-cat-perms-named-resource"></a>

具名 Data Catalog 資源方法是一種使用集中式方法授予物件許可 AWS Glue Data Catalog 的方法，例如目錄、資料庫、資料表、資料欄和檢視。它可讓您定義以資源為基礎的政策，以控制對資料湖中特定資源的存取。

當您使用具名資源方法授予許可時，您可以指定要授予或撤銷該資源的資源類型和許可。您也可以稍後視需要撤銷許可，藉此從相關聯的資源移除許可。

您可以使用 AWS Lake Formation 主控台、APIs或 AWS Command Line Interface () 授予許可AWS CLI。

**Topics**
+ [使用具名資源方法授予目錄許可](granting-multi-catalog-permissions.md)
+ [使用具名資源方法授與資料庫許可](granting-database-permissions.md)
+ [使用具名資源方法授予資料表許可](granting-table-permissions.md)
+ [使用具名資源方法授予檢視的許可](granting-view-permissions.md)

# 使用具名資源方法授予目錄許可
<a name="granting-multi-catalog-permissions"></a>

下列步驟說明如何使用具名資源方法授予目錄許可。

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

使用 Lake Formation 主控台上的**授予許可**頁面。頁面分為以下部分：
+ **委託人類型** – 您可以授予許可給特定委託人，或使用屬性標籤。
  +  **委託人** – IAM 使用者、角色、IAM Identity Center 使用者和群組、SAML 使用者和群組、 AWS 帳戶、組織或組織單位以授予許可。

    **依屬性的主體** – 從 IAMroles 或 IAM 工作階段標籤新增標籤鍵值對。具有相符屬性的主體可以存取指定的資源。
  +  **LF 標籤或目錄資源** – 授予許可的目錄、資料庫、資料表、檢視或資源連結。
  +  **許可** – 要授予的 Lake Formation 許可。

**注意**  
若要授予資料庫資源連結的許可，請參閱 [授予資源連結許可](granting-link-permissions.md)。

1. 開啟**授予許可**頁面。

   在 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 AWS Lake Formation 主控台，並以資料湖管理員、目錄建立者或對目錄具有**可授予許可**的 IAM 使用者身分登入。

   執行以下任意一項：
   + 在導覽窗格中的**許可**下，選擇**資料許可**。然後選擇**授予**。
   + 在導覽窗格中，選擇資料**目錄**下的目錄。 ****然後，在**目錄**頁面上，選擇目錄，然後從**動作**功能表的**許可**下，選擇**授予**。
**注意**  
您可以透過目錄的資源連結授予目錄許可。若要這樣做，請在**目錄**頁面上，選擇目錄連結容器，然後在**動作**功能表上，選擇**對目標授予**。如需詳細資訊，請參閱[資源連結在 Lake Formation 中如何運作](resource-links-about.md)。

1. 接著，在**委託人類型**區段中，選擇委託人或指定連接至委託人的屬性。  
![\[主體類型區段包含兩個水平排列的圖磚，其中每個圖磚都包含選項按鈕和描述性文字。選項是依屬性區分的主體和主體。標題下方是主體。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-catalog-principal-type.png)

****指定主體****  
**IAM 使用者和角色**  
從 **IAM 使用者和角色清單中選擇一或多個使用者或角色**。  
**IAM Identity Center**  
從使用者和群組清單中選擇一或多個**使用者或群組**。選取**新增**以新增更多使用者或群組。  
**SAML 使用者和群組**  
對於 **SAML 和快速使用者和群組**，輸入透過 SAML 聯合的使用者或群組的一或多個 Amazon Resource Name (ARNs)，或 Amazon Quick 使用者或群組ARNs。在每個 ARN 後按下 Enter 鍵。  
如需如何建構 ARNs 的資訊，請參閱 [Lake Formation 授予和撤銷 AWS CLI 命令](lf-permissions-reference.md#perm-command-format)。  
僅 Quick Enterprise Edition 支援 Lake Formation 與 Quick 整合。  
**外部帳戶**  
針對 **AWS 帳戶、 AWS organization** 或 **IAM Principal**，輸入 IAM 使用者或角色的一或多個有效 AWS 帳戶 IDs、組織 IDs、組織單位 IDs 或 ARN。在每個 ID 之後按 **Enter**。  
組織 ID 包含「o-」，後面接著 10-32 個小寫字母或數字。  
組織單位 ID 以「ou-」開頭，後面接著 4-32 個小寫字母或數字 （包含 OU 的根 ID)。此字串後面接著第二個「-」破折號和 8 到 32 個額外的小寫字母或數字。

****依屬性排列的主體****  
**Attributes**  
從 IAM 角色新增 IAM 標籤鍵/值對。  
**許可範圍**  
指定您要將許可授予相同帳戶或其他帳戶中具有相符屬性的委託人。

1. 在 **LF 標籤或目錄資源**區段中，選擇**具名資料目錄資源**。  
![\[LF 標籤或目錄資源區段包含兩個水平排列的圖磚，其中每個圖磚都包含選項按鈕和描述性文字。這些選項是符合 LF 標籤的資源，以及具名資料目錄資源。圖磚下方有兩個下拉式清單：資料庫和資料表。資料庫下拉式清單下方有一個圖磚，其中包含選取的資料庫名稱。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-target-resources-catalog.png)

1. 從目錄清單中選擇一或多個**目錄**。您也可以選擇一或多個**資料庫**、**資料表**和/或**資料篩選條件**。

1. 在**目錄許可**區段中，選取許可和可授予許可。在**目錄權限**下，選取要授予的一或多個權限。  
![\[許可區段的目錄許可圖磚。圖磚下方是要授予目錄許可的一組核取方塊。核取方塊包括超級使用者、建立目錄、建立資料庫、更改、捨棄、描述和超級。在該群組下方是可授予許可的另一個相同核取方塊群組。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-target-catalog-permissions-section.png)

   選擇**超級使用者**以授予不受限制的管理權限，對目錄中的所有資源 （資料庫、資料表和檢視） 執行任何操作。
**注意**  
在具有指向已註冊位置之位置屬性的目錄`Alter`上授予 `Create database`或 之後，請務必同時將位置上的資料位置許可授予委託人。如需詳細資訊，請參閱[授予資料位置許可](granting-location-permissions.md)。

1. （選用） 在**可授予許可**下，選取授予收件人可以授予其 AWS 帳戶中其他委託人的許可。當您從外部帳戶授予 IAM 主體權限時，此選項不受支援。

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

   **資料許可**頁面會顯示許可詳細資訊。如果您使用 **Principals by 屬性**選項來授予許可，您可以在清單中檢視授予 `ALLPrincipals`的許可。

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

如需使用 授予目錄許可 AWS CLI，請參閱 [建立 Amazon Redshift 聯合目錄](create-ns-catalog.md)。

------

# 使用具名資源方法授與資料庫許可
<a name="granting-database-permissions"></a>

下列步驟說明如何使用具名資源方法授予資料庫許可。

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

使用 Lake Formation 主控台上的**授予許可**頁面。頁面分為以下部分：
+  **委託人類型** – **委託人**區段包含 IAM 使用者、角色、IAM Identity Center 使用者和群組、SAML 使用者和群組、 AWS 帳戶、組織或組織單位，以授予許可。在**依屬性區分的主體**區段中，您可以指定連接到 IAM 角色之屬性的索引鍵和值。
+  **LF 標籤或目錄資源** – 授予許可的資料庫、資料表、檢視或資源連結。
+  **許可** – 要授予的 Lake Formation 許可。

**注意**  
若要授予資料庫資源連結的許可，請參閱 [授予資源連結許可](granting-link-permissions.md)。

1. 開啟**授予許可**頁面。

   在 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 AWS Lake Formation 主控台，並以資料湖管理員、資料庫建立者或對資料庫具有**可授予許可**的 IAM 使用者身分登入。

   執行以下任意一項：
   + 在導覽窗格**的許可**下，選擇**資料許可**。然後選擇**授予**。
   + 在導覽窗格中，選擇 **Data Catalog** **下的資料庫**。然後，在**資料庫**頁面上，選擇資料庫，然後從**動作**功能表的**許可**下，選擇**授予**。
**注意**  
您可以透過資料庫的資源連結授予資料庫的許可。若要這樣做，請在**資料庫**頁面上，選擇資源連結，然後在**動作**功能表上，選擇**對目標授予**。如需詳細資訊，請參閱[資源連結在 Lake Formation 中如何運作](resource-links-about.md)。

1. 在**委託人類型**區段中，使用屬性指定委託人或授予許可給委託人。  
![\[主體區段包含四個圖磚。每個圖磚都包含選項按鈕和文字。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/identity-center-grant-perm.png)  
**IAM 使用者和角色**  
從 **IAM 使用者和角色清單中選擇一或多個使用者或角色**。  
**IAM Identity Center**  
從使用者和群組清單中選擇一或多個**使用者或群組**。選取**新增**以新增更多使用者或群組。  
**SAML 使用者和群組**  
對於 **SAML 和快速使用者和群組**，輸入透過 SAML 聯合的使用者或群組的一或多個 Amazon Resource Name (ARNs)，或 Amazon Quick 使用者或群組ARNs。在每個 ARN 後按下 Enter 鍵。  
如需如何建構 ARNs 的資訊，請參閱 [Lake Formation 授予和撤銷 AWS CLI 命令](lf-permissions-reference.md#perm-command-format)。  
僅 Quick Enterprise Edition 支援 Lake Formation 與 Quick 整合。  
**外部帳戶**  
針對 **AWS 帳戶、 AWS organization** 或 **IAM Principal**，輸入 IAM 使用者或角色的一或多個有效 AWS 帳戶 IDs、組織 IDs、組織單位 IDs 或 ARN。在每個 ID 之後按 **Enter**。  
組織 ID 包含「o-」，後面接著 10-32 個小寫字母或數字。  
組織單位 ID 以「ou-」開頭，後面接著 4-32 個小寫字母或數字 （包含 OU 的根 ID)。此字串後面接著第二個「-」破折號和 8 到 32 個額外的小寫字母或數字。  
依屬性排列的委託人  
指定屬性索引鍵和值 (s)。如果您選擇多個值，則會使用 OR 運算子建立屬性表達式。這表示如果指派給 IAM 角色或使用者配對的任何屬性標籤值，該角色/使用者會取得資源的存取許可。  
 指定您要將許可授予相同帳戶或其他帳戶中具有相符屬性的主體，以選擇許可範圍。

1. 在 **LF 標籤或目錄資源**區段中，選擇**具名資料目錄資源**。  
![\[LF 標籤或目錄資源區段包含兩個水平排列的圖磚，其中每個圖磚都包含選項按鈕和描述性文字。這些選項是符合 LF 標籤的資源，以及具名資料目錄資源。圖磚下方有兩個下拉式清單：資料庫和資料表。資料庫下拉式清單下方有一個圖磚，其中包含選取的資料庫名稱。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-target-resources-section-2.png)

1. 從資料庫清單中選擇一或多個**資料庫**。您也可以選擇一或多個**資料表**和/或**資料篩選條件**。

1. 在**許可**區段中，選取權限和可授予的權限。在**資料庫許可**下，選取要授予的一或多個許可。  
![\[許可區段包含兩個水平排列的圖磚。每個圖磚都包含選項按鈕和文字。已選取資料庫許可圖磚。另一個以資料欄為基礎的並排許可會停用，因為它與資料表許可相關。圖磚下方是一組核取方塊，用於授予資料庫許可。核取方塊包括建立資料表、更改、捨棄、描述和超級。在該群組下方是可授予許可的另一個相同核取方塊群組。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-target-db-permissions-section.png)
**注意**  
在具有指向已註冊位置之位置屬性的資料庫`Alter`上授予 `Create Table`或 之後，請務必同時將位置上的資料位置許可授予委託人。如需詳細資訊，請參閱[授予資料位置許可](granting-location-permissions.md)。

1. （選用） 在**可授予許可**下，選取授予收件人可以授予其 AWS 帳戶中其他主體的許可。當您從外部帳戶授予 IAM 主體權限時，此選項不受支援。

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

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

您可以使用具名資源方法和 AWS Command Line Interface () 授予資料庫許可AWS CLI。

**使用 授予資料庫許可 AWS CLI**
+ 執行`grant-permissions`命令，並指定資料庫或 Data Catalog 做為資源，視授予的許可而定。

  在下列範例中，將 *<account-id>* 取代為有效的 AWS 帳戶 ID。  
**Example – 授予 以建立資料庫**  

  此範例`CREATE_DATABASE`會授予使用者 `datalake_user1`。由於授與此許可的資源是 Data Catalog，因此 命令會指定空`CatalogResource`結構做為 `resource` 參數。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "CREATE_DATABASE" --resource '{ "Catalog": {}}'
  ```  
**Example – 授予 在指定的資料庫中建立資料表**  

  下一個範例會將資料庫`CREATE_TABLE`上的 授予`retail`使用者 `datalake_user1`。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
  ```  
**Example – 使用授予選項授予外部 AWS 帳戶**  

  下一個範例`CREATE_TABLE`會將 資料庫上的授予選項授予`retail`外部帳戶 1111-2222-3333。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "CREATE_TABLE" --permissions-with-grant-option "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
  ```  
**Example – 授予組織**  

  下一個範例`ALTER`會將 資料庫上的授予選項`issues`授予組織 `o-abcdefghijkl`。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:organization/o-abcdefghijkl --permissions "ALTER" --permissions-with-grant-option "ALTER" --resource '{ "Database": {"Name":"issues"}}'
  ```  
**Example - 授予相同帳戶中`ALLIAMPrincipals`的**  

  下一個範例會將資料庫的`CREATE_TABLE`許可授予相同帳戶中`retail`的所有主體。此選項可讓帳戶中的每個主體在資料庫中建立資料表，並建立資料表資源連結，允許整合式查詢引擎存取共用資料庫和資料表。當委託人收到跨帳戶授予，而且沒有建立資源連結的許可時，此選項特別有用。在此案例中，資料湖管理員可以建立預留位置資料庫，並將`CREATE_TABLE`許可授予`ALLIAMPrincipal`群組，讓帳戶中的每個 IAM 主體都能在預留位置資料庫中建立資源連結。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "CREATE_TABLE"  --resource '{ "Database": {"Name":"temp","CatalogId":"111122223333"}}' 
  ```  
**Example - 授予外部帳戶中`ALLIAMPrincipals`的**  

  下一個範例會將資料庫`CREATE_TABLE`上的 授予外部帳戶`retail`中的所有主體。此選項可讓帳戶中的每個主體在資料庫中建立資料表。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "CREATE_TABLE"  --resource '{ "Database": {"Name":"retail","CatalogId":"123456789012"}}'
  ```

**注意**  
在具有指向已註冊位置之位置屬性的資料庫`ALTER`上授予 `CREATE_TABLE`或 之後，請務必同時將位置上的資料位置許可授予委託人。如需詳細資訊，請參閱[授予資料位置許可](granting-location-permissions.md)。

------

**另請參閱**  
 [Lake Formation 許可參考](lf-permissions-reference.md) 
 [授予與您帳戶共用之資料庫或資料表的許可](regranting-shared-resources.md) 
 [存取和檢視共用的 Data Catalog 資料表和資料庫](viewing-shared-resources.md) 

# 使用具名資源方法授予資料表許可
<a name="granting-table-permissions"></a>

您可以使用 Lake Formation 主控台或 AWS CLI 授予資料目錄資料表的 Lake Formation 許可。您可以授予個別資料表的許可，或使用單一授予操作，您可以授予資料庫中所有資料表的許可。

如果您授予資料庫中所有資料表的許可，則會隱含授予資料庫的`DESCRIBE`許可。然後，資料庫會出現在 主控台的**資料庫**頁面上，並由 `GetDatabases` API 操作傳回。使用屬性型存取控制 (ABAC) 時，此自動`DESCRIBE`許可授予不適用。使用屬性授予資料庫中所有資料表的許可時，Lake Formation 不會隱含地授予資料庫`DESCRIBE`許可。

當您選擇 `SELECT`做為授予許可時，您可以選擇套用資料欄篩選條件、資料列篩選條件或儲存格篩選條件。

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

下列步驟說明如何使用 Lake Formation 主控台上的具名資源方法和授予**資料湖許可頁面來授予資料表許可**。頁面分為以下部分：
+  **委託人類型** – 要授予許可的使用者、角色 AWS 、帳戶、組織或組織單位。您也可以將許可授予具有相符屬性的主體。
+  **LF 標籤或目錄資源** – 要授予許可的資料庫、資料表或資源連結。
+  **許可** – 要授予的 Lake Formation 許可。

**注意**  
若要授予資料表資源連結的許可，請參閱 [授予資源連結許可](granting-link-permissions.md)。

1. 開啟授予許可頁面。

   開啟位於 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 的 AWS Lake Formation 主控台，並以資料湖管理員、資料表建立者或已透過 授予選項授予資料表許可的使用者身分登入。

   執行以下任意一項：
   + 在導覽窗格中，選擇**許可下的資料****許可**。然後選擇**授予**。
   + 在導覽窗格中，選擇 **Tables** (資料表)。然後，在**資料表**頁面上，選擇資料表，然後在**動作**功能表的**許可**下，選擇**授予**。
**注意**  
您可以透過資料表的資源連結授予許可。若要這樣做，請在**資料表**頁面上，選擇資源連結，然後在**動作**功能表上，選擇**對目標授予**。如需詳細資訊，請參閱[資源連結在 Lake Formation 中如何運作](resource-links-about.md)。

1. 接著，在**委託人類型**區段中，指定具有相符屬性的委託人或委託人，以授予許可。  
**IAM 使用者和角色**  
從 **IAM 使用者和角色清單中選擇一或多個使用者或角色**。  
**IAM Identity Center**  
從使用者和群組清單中選擇一或多個**使用者或群組**。  
**SAML 使用者和群組**  
對於 **SAML 和快速使用者和群組**，輸入透過 SAML 聯合的使用者或群組的一或多個 Amazon Resource Name (ARNs)，或輸入快速使用者或群組ARNs。在每個 ARN 後按下 Enter 鍵。  
如需如何建構 ARNs 的資訊，請參閱 [Lake Formation 授予和撤銷 AWS CLI 命令](lf-permissions-reference.md#perm-command-format)。  
Lake Formation 與 Quick 整合僅支援 Quick Enterprise Edition。  
**外部帳戶**  
對於 **AWS 帳戶 、 AWS organization** 或 **IAM Principal**，輸入一或多個 AWS 帳戶 IDs、組織 IDs、組織單位 IDs 或 IAM 使用者或角色的 ARN。在每個 ID 之後按 **Enter**。  
組織 ID 包含「o-」，後面接著 10-32 個小寫字母或數字。  
組織單位 ID 以「ou-」開頭，後面接著 4-32 個小寫字母或數字 （包含 OU 的根 ID)。此字串後面接著第二個「-」字元和 8 到 32 個額外的小寫字母或數字。  
依屬性排列的委託人  
指定屬性索引鍵和值 (s)。如果您選擇多個值，則會使用 OR 運算子建立屬性表達式。這表示如果指派給 IAM 角色或使用者比對的任何屬性標籤值，該角色/使用者會取得資源的存取許可  
 指定您要將許可授予相同帳戶或其他帳戶中具有相符屬性的主體，以選擇許可範圍。

1. 在 **LF 標籤或目錄資源**區段中，選擇資料庫。然後選擇一或多個資料表，或**所有資料表**。  
![\[LF 標籤或目錄資源區段包含兩個水平排列的圖磚，其中每個圖磚都包含選項按鈕和描述性文字。這些選項是 LF 標籤比對的資源，以及具名資料目錄資源。已選取具名資料目錄資源。圖磚下方有兩個下拉式清單：資料庫和資料表。資料庫下拉式清單下方有一個圖磚，其中包含選取的資料庫名稱。資料表下拉式清單下方有一個圖磚，其中包含選取的資料表名稱。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-target-resources-tables-section-2.png)

1. 

**指定沒有資料篩選的許可。**

   在**許可**區段中，選取要授予的資料表許可，並選擇性地選取可授予的許可。  
![\[資料表和資料欄許可區段有兩個子區段：資料表許可和可授予許可。每個子區段都有每個可能的 Lake Formation 許可的核取方塊：更改、插入、捨棄、刪除、選取、描述和超級。Super 許可設定在其他許可的右側，並具有描述：「此許可允許委託人將任何許可授予左側，並取代這些可授予的許可。」\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-table-permissions-section-no-filter.png)

   如果您授予**選取**，**資料許可**區段會顯示在**資料表和資料欄許可**區段下方，預設會選取**所有資料存取**選項。接受預設值。  
![\[本節包含三個水平排列的圖磚，每個圖磚都有選項按鈕和描述。選項按鈕包括：所有資料存取 （已選取）、簡易資料欄型存取，以及進階儲存格層級篩選條件。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-select-all-data-access.png)

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

1. 

**使用資料篩選指定**選取**許可**

   選取**選取**許可。請勿選取任何其他許可。

   **資料許可**區段會出現在**資料表和資料欄許可**區段下方。

1. 執行以下任意一項：
   + 僅套用簡單的資料欄篩選。

     1. 選擇**簡易資料欄型存取**。  
![\[頂端區段是資料表和資料欄許可區段。如上述螢幕擷取畫面所述。它包含資料表許可和可授予許可的核取方塊。底部區段的資料許可具有三個水平排列的圖磚，其中每個圖磚都有選項按鈕和描述。選項包括所有資料存取、簡易資料欄型存取和進階儲存格層級篩選條件。已選取簡易資料欄型存取選項。圖磚下方是具有選擇許可篩選條件標籤的選項按鈕群組。選項包括資料欄和排除資料欄。選項群組下方是選取欄下拉式清單，下方則是可授予許可子區段，其中包含一個標示為選取的核取方塊。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-table-permissions-section-column-filter.png)

     1. 選擇是否包含或排除資料欄，然後選擇要包含或排除的資料欄。

        將許可授予外部 AWS 帳戶或組織時，僅支援包含清單。

     1. （選用） 在**可授予許可**下，開啟選取許可的授予選項。

         如果您包含授予選項，則授予收件人只能在您授予給他們的資料欄上授予許可。
**注意**  
您也可以透過建立資料篩選條件來套用資料欄篩選，以指定資料欄篩選條件，並將所有資料列指定為資料列篩選條件。不過，這需要更多步驟。
   + 套用資料欄、資料列或儲存格篩選。

     1. 選擇**進階儲存格層級篩選條件**。  
![\[本節標題為資料許可，位於資料表許可區段下方。它有三個水平排列的圖磚，其中每個圖磚都有一個選項按鈕和描述。選項包括所有資料存取、簡易資料欄型存取和進階儲存格層級篩選條件。已選取進階儲存格層級篩選條件選項。圖磚下方是標籤 檢視現有許可，其中向左顯示曝光三角形。現有的許可不會公開。以下是標題為要授予之資料篩選條件的區段。標題右側有三個按鈕：重新整理、管理篩選條件和建立新篩選條件。在標題和按鈕下方是具有「尋找篩選條件」預留位置文字的文字欄位。下面是現有篩選條件的資料表。每一列左側都有一個核取方塊。欄標題為篩選條件名稱、資料表、資料庫和資料表目錄 ID。有兩個資料列。第一列中的篩選條件名稱是 restrict-pharma。第二列中的名稱是非製藥。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-table-permissions-section-cell-filter.png)

     1. （選用） 展開 **檢視現有的許可**。

     1. （選用） 選擇**建立新篩選條件**。

     1. （選用） 若要檢視所列篩選條件的詳細資訊，或建立新的或刪除現有的篩選條件，請選擇**管理篩選條件**。

        **資料篩選條件**頁面會在新的瀏覽器視窗中開啟。

        當您在**資料篩選條件**頁面上完成時，請返回**授予許可**頁面，並視需要重新整理頁面以檢視您建立的任何新資料篩選條件。

     1. 選取要套用至授予的一或多個資料篩選條件。
**注意**  
如果清單中沒有資料篩選條件，表示未為選取的資料表建立資料篩選條件。

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

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

您可以使用具名資源方法和 () AWS Command Line Interface 來授予資料表許可AWS CLI。

**使用 授予資料表許可 AWS CLI**
+ 執行`grant-permissions`命令，並將資料表指定為資源。

**Example – 授予單一資料表 - 不篩選**  
下列範例`ALTER`會將 `SELECT`和 授予資料庫 `datalake_user1` 中 資料表的帳戶 AWS 1111-2222-3333 `inventory`中的使用者`retail`。  

```
1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" "ALTER" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
```
如果您在已註冊位置中對其基礎資料的資料表授予 `ALTER`許可，請務必同時將位置上的資料位置許可授予委託人。如需詳細資訊，請參閱[授予資料位置許可](granting-location-permissions.md)。

**Example – 使用授予選項授予所有資料表 - 不篩選**  
下一個範例會`SELECT`授予資料庫 中所有資料表的授予選項`retail`。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --permissions-with-grant-option "SELECT" --resource '{ "Table": { "DatabaseName": "retail", "TableWildcard": {} } }'
```<a name="simple-column-filter-example"></a>

**Example – 使用簡單的資料欄篩選授予**  
下一個範例會在資料表 中的資料欄子集`SELECT`上授予 `persons`。它使用簡單的資料欄篩選。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "TableWithColumns": {"DatabaseName":"hr", "Name":"persons", "ColumnNames":["family_name", "given_name", "gender"]}}'
```

**Example – 使用資料篩選條件授予**  
此範例會授予 `orders`資料表`SELECT`，並套用`restrict-pharma`資料篩選條件。  

```
aws lakeformation grant-permissions --cli-input-json file://grant-params.json
```
以下是檔案 的內容`grant-params.json`。  

```
{
    "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
    "Resource": {
        "DataCellsFilter": {
            "TableCatalogId": "111122223333",
            "DatabaseName": "sales",
            "TableName": "orders",
            "Name": "restrict-pharma"
        }
    },
    "Permissions": ["SELECT"],
    "PermissionsWithGrantOption": ["SELECT"]
}
```

------

**另請參閱**  
[Lake Formation 許可概觀](lf-permissions-overview.md)
[Lake Formation 中的資料篩選和儲存格層級安全性](data-filtering.md)
[Lake Formation 角色和 IAM 許可參考](permissions-reference.md)
 [授予資源連結許可](granting-link-permissions.md)
 [存取和檢視共用的 Data Catalog 資料表和資料庫](viewing-shared-resources.md) 

# 使用具名資源方法授予檢視的許可
<a name="granting-view-permissions"></a>

下列步驟說明如何使用具名資源方法和授予許可頁面來授予檢視的**許可**。頁面分為以下部分：
+  **委託人類型** – 授予許可的 IAM 使用者、角色、IAM Identity Center 使用者和群組 AWS 帳戶、組織或組織單位。您也可以將許可授予具有相符屬性的主體。
+  **LF 標籤或目錄資源** – 授予許可的資料庫、資料表、檢視或資源連結。
+  **許可** – 要授予的資料湖許可。

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

1. 在 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 AWS Lake Formation 主控台，並以資料湖管理員、資料庫建立者或對資料庫具有**可授予許可**的 IAM 使用者身分登入。

1. 執行以下任意一項：
   + 在導覽窗格中的**許可**下，選擇**資料許可**。然後選擇**授予**。
   + 在導覽窗格中，選擇 **Data Catalog** **下的檢視**。然後，在**檢視**頁面上，選擇檢視，然後從**動作**功能表的**許可**下，選擇**授予**。
**注意**  
您可以透過檢視的資源連結授予檢視許可。若要這樣做，請在**檢視**頁面上，選擇資源連結，然後在**動作**功能表上，選擇**對目標授予**。如需詳細資訊，請參閱[資源連結在 Lake Formation 中如何運作](resource-links-about.md)。

## 指定委託人類型
<a name="views-specify-principals"></a>

 在**委託人類型**區段中，依屬性選擇委託人或委託人。如果您選擇主體，可使用下列選項：

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

**IAM Identity Center **  
從使用者和群組清單中選擇一或多個**使用者或群組**。

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

**外部帳戶**  
針對 **AWS 帳戶、 AWS organization** 或 **IAM Principal**，輸入 IAM 使用者或角色的一或多個有效 AWS 帳戶 IDs、組織 IDs、組織單位 IDs 或 ARN。在每個 ID 之後按 **Enter**。  
組織 ID 包含「o-」，後面接著 10-32 個小寫字母或數字。  
組織單位 ID 以「ou-」開頭，後面接著 4-32 個小寫字母或數字 （包含 OU 的根 ID)。此字串後面接著第二個「-」破折號和 8 到 32 個額外的小寫字母或數字。  
**另請參閱**  
+  [存取和檢視共用的 Data Catalog 資料表和資料庫](viewing-shared-resources.md) 

**依屬性排列的主體**  
指定屬性索引鍵和值 (s)。如果您選擇多個值，則會使用 OR 運算子建立屬性表達式。這表示如果指派給 IAM 角色或使用者相符的任何屬性標籤值，角色/使用者會取得資源的存取許可  
 指定您要將許可授予相同帳戶或其他帳戶中具有相符屬性的主體，以選擇許可範圍。

## 指定檢視
<a name="view-specify-resources"></a>

在 **LF 標籤或目錄資源**區段中，選擇要授予許可的一或多個檢視。

1. 選擇**具名資料目錄資源**。

1. 從檢視清單中選擇一或多個**檢視**。您也可以選擇一或多個目錄、資料庫、資料表和/或資料篩選條件。

   將資料湖許可授予資料庫中`All tables`的 ，將導致承授者具有資料庫中所有資料表和檢視的許可。

## 指定許可
<a name="view-specify-permissions"></a>

在**許可**區段中，選取權限和可授予的權限。

![\[許可區段具有一組核取方塊，用於檢視要授予的許可。核取方塊包括 Select、Describe、Drop 和 Super。在該群組下方是可授予許可的另一個相同核取方塊群組。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/view-permissions.png)


1. 在**檢視許可**下，選取要授予的一或多個許可。

1. （選用） 在**可授予許可**下，選取授予收件人可以在其 中授予其他委託人的許可 AWS 帳戶。當您從外部帳戶授予 IAM 主體權限時，此選項不受支援。

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

**另請參閱**  
 [Lake Formation 許可參考](lf-permissions-reference.md) 
 [授予與您帳戶共用之資料庫或資料表的許可](regranting-shared-resources.md) 

# 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":["*"]}}'
  ```

# 使用 LF-TBAC 方法授予資料湖許可
<a name="granting-catalog-perms-TBAC"></a>

您可以授予委託人 LF 標籤的 `DESCRIBE`和 `ASSOCIATE` Lake Formation 許可，讓他們可以檢視 LF 標籤，並將其指派給 Data Catalog 資源 （資料庫、資料表、檢視和資料欄）。當 LF-Tags 指派給 Data Catalog 資源時，您可以使用 Lake Formation 標籤型存取控制 (LF-TBAC) 方法來保護這些資源。如需詳細資訊，請參閱[Lake Formation 標籤型存取控制](tag-based-access-control.md)。

一開始，只有資料湖管理員可以授予這些許可。如果資料湖管理員使用授予選項授予這些許可，則其他主體可以授予這些許可。`DESCRIBE` 和 `ASSOCIATE`許可會在 中說明[Lake Formation 標籤型存取控制最佳實務和考量事項](lf-tag-considerations.md)。

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

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

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

**注意**  
S3 Tables 目錄不需要下列步驟。您可以使用 LF-Tags 授予現有 S3 Tables 目錄的許可，而無需刪除並重新建立它們。

**啟用對使用 Lake Formation 許可的現有聯合目錄的 LF 標籤支援**

如果您現有的聯合目錄使用 Lake Formation 許可，例如 Amazon Redshift 或 LF-Tags 支援之前建立的 Amazon DynamoDB 目錄可用於聯合目錄，請遵循以下步驟。

1. 刪除現有目錄 – 呼叫 `deleteCatalog` API 操作，以移除使用 Lake Formation 許可的現有聯合目錄。

1.  建立新的聯合目錄 – 建立新的目錄，並將新目錄指向現有的命名空間/資料共用。

   使用目錄的新名稱 – 此程序會更新您預先存在的聯合目錄，以支援 LF-Tag 功能。如果您想要使用相同的目錄名稱，請聯絡 AWS 支援團隊尋求協助。

**Topics**
+ [授予 Data Catalog 許可](#granting-cat-perms-TBAC-console)

**另請參閱**  
[管理 LF-Tag 值許可](TBAC-granting-tags.md)
[管理中繼資料存取控制的 LF 標籤](managing-tags.md)
[Lake Formation 標籤型存取控制](tag-based-access-control.md)

## 授予 Data Catalog 許可
<a name="granting-cat-perms-TBAC-console"></a>

使用 Lake Formation 主控台或使用 Lake Formation 標籤型存取控制 AWS CLI (LF-TBAC) 方法來授予資料目錄資料庫、資料表、檢視和資料欄的 Lake Formation 許可。

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

下列步驟說明如何使用 Lake Formation 標籤型存取控制 (LF-TBAC) 方法和 Lake Formation 主控台上的授予**資料湖許可頁面來授予**許可。頁面分為以下部分：
+  **委託人** – AWS 帳戶 要授予許可的使用者、角色和 。
+  **LF 標籤或目錄資源** – 要授予許可的資料庫、資料表或資源連結。
+  **許可** – 要授予的 Lake Formation 許可。

1. 

**開啟授予資料湖許可頁面。**

   開啟位於 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 的 AWS Lake Formation 主控台，並以資料湖管理員或已透過 LF-TBAC 授予資料目錄資源 Lake Formation 許可的使用者身分登入。

   在導覽窗格中的**許可**下，選擇**資料湖許可**。然後選擇**授予**。

1. 

**指定委託人。**

    在**委託人**區段中，選擇委託人類型，然後指定要授予許可的委託人。  
![\[主體區段包含以下文字中命名的四個圖磚。每個圖磚都包含選項按鈕和文字。已選取 IAM Identity Center 圖磚，且使用者和群組下拉式清單位於圖磚下方。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/identity-center-grant-perm.png)  
**IAM 使用者和角色**  
從 **IAM 使用者和角色清單中選擇一或多個使用者或角色**。  
**IAM Identity Center **  
從使用者**和群組清單中選擇一或多個使用者**或 。  
**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 organization** 或 **IAM 主體**，輸入 IAM 使用者或角色的一或多個有效 AWS 帳戶 IDs、組織 IDs、組織單位 IDs 或 ARN。在每個 ID 之後按 **Enter**。  
組織 ID 包含「o-」，後面接著 10 到 32 個小寫字母或數字。  
組織單位 ID 以「ou-」開頭，後面接著 4 到 32 個小寫字母或數字 （包含 OU 的根 ID)。此字串後面接著第二個「-」破折號和 8 到 32 個額外的小寫字母或數字。

1. 

**指定 LF 標籤。**

   確定已選擇**符合 LF-Tags 的資源**選項。選擇 **LF-Tag 鍵值對**或**已儲存的 LF-Tag 表達**式。

   1. 如果您選擇 **LF-Tag 鍵/值對**選項，請選擇鍵和值。

      如果您選擇多個值，則會使用 `OR`運算子建立 LF-Tag 表達式。這表示如果任何 LF-Tag 值符合指派給 Data Catalog 資源的 LF-Tag，則會授予您對資源的許可。  
![\[LF 標籤或目錄資源區段包含兩個水平排列的圖磚，其中每個圖磚都包含選項按鈕和描述性文字。這些選項是符合 LF-Tags （建議） 的資源，以及具名資料目錄資源。已選取符合 LF-Tags 的資源。圖磚下方是索引鍵欄位和水平排列的值欄位。金鑰欄位包含「模組」，而值欄位是下拉式清單，其中包含三個項目：訂單、銷售和客戶。每個項目都有相關聯的核取方塊。已選取客戶的核取方塊。這兩個欄位右側的是移除按鈕。在底部是新增 LF 標籤按鈕，表示您可以新增另一列，其中包含索引鍵和值欄位以及移除按鈕。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-data-permissions-tags-2.png)

   1. （選用） 再次選擇**新增 LF 標籤鍵/值對**，以指定另一個 LF 標籤。

      如果您指定多個 LF-Tag，則會使用 `AND`運算子建立 LF-Tag 表達式。只有在為 LF-Tag 表達式中的每個 LF-Tag 指派相符的 LF-Tag 時，才會對 Data Catalog 資源授予主體許可。

   1. 選擇**儲存為新的表達**式選項以重複使用表達式。

      您需要`Create LF-Tag expression`儲存表達式。

      如需 LF-Tag 表達式的詳細資訊，請參閱 [管理中繼資料存取控制的 LF-Tag 表達式](managing-tag-expressions.md)。

1. 

**指定許可。**

   指定您希望授予主體相符 Data Catalog 資源的許可。相符資源是指派的 LF 標籤資源，這些資源符合授予委託人的其中一個 LF 標籤表達式。

   您可以指定在相符資料庫、相符資料表和相符檢視上授予 的許可。  
![\[顯示頁面的兩個區段。資料庫許可區段包含資料庫許可和可授予許可的核取方塊。在資料庫區段下方，資料表許可區段會顯示資料表許可和可授予許可的核取方塊。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-TBAC-DB-table-permissions.png)

   在**資料庫許可**下，選取要授予相符資料庫上主體的資料庫許可。

   在**資料表許可**下，選取資料表或檢視許可，以授予相符資料表和檢視的委託人。

   您也可以從資料表`Drop`許可中選擇 `Describe`、 `Select`和 許可，以套用至檢視。 ****

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

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

您可以使用 AWS Command Line Interface (AWS CLI) 和 Lake Formation 標籤型存取控制 (LF-TBAC) 方法來授予資料目錄資料庫、資料表和資料欄的 Lake Formation 許可。

**使用 AWS CLI 和 LF-TBAC 方法授予資料湖許可**
+ 使用 `grant-permissions` 命令。  
**Example**  

  下列範例會將 LF-Tag 表達式 "`module=*`" (LF-Tag 金鑰 的所有值`module`) 授予使用者 `datalake_user1`。該使用者將擁有所有相符資料庫的 `CREATE_TABLE` 許可，這些資料庫已使用索引鍵 指派 LF-Tag`module`，且具有任何值。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"DATABASE","Expression":[{"TagKey":"module","TagValues":["*"]}]}}' 
  ```  
**Example**  

  下一個範例會將 LF-Tag 表達式 "`(level=director) AND (region=west OR region=south)`" 授予使用者 `datalake_user1`。該使用者將擁有 `SELECT`、 和 `DROP`許可`ALTER`，並在相符資料表上具有授予選項 - 已同時指派 `level=director`和 (`region=west` 或 ) 的資料表`region=south`。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" "ALTER" "DROP" --permissions-with-grant-option "SELECT" "ALTER" "DROP" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"TABLE","Expression": [{"TagKey": "level","TagValues": ["director"]},{"TagKey": "region","TagValues": ["west", "south"]}]}}'
  ```  
**Example**  

  下一個範例會將 LF-Tag 表達式 "`module=orders`" 授予 AWS 帳戶 1234-5678-9012。然後，該帳戶中的資料湖管理員可以將「`module=orders`」表達式授予其帳戶中的主體。然後，這些委託人將有權使用具名資源方法或 LF-TBAC 方法，`CREATE_TABLE`比對帳戶 1111-2222-3333 擁有並與帳戶 1234-5678-9012 共用的資料庫。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=123456789012 --permissions "CREATE_TABLE" --permissions-with-grant-option "CREATE_TABLE" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"DATABASE","Expression":[{"TagKey":"module","TagValues":["orders"]}]}}'
  ```

------

# 屬性型存取控制
<a name="attribute-based-access-control"></a>

在 AWS Lake Formation 中，您可以使用與角色和使用者等 IAM 實體相關聯的 IAM 標籤和工作階段標籤屬性，授予目錄、資料庫、資料表和資料篩選條件等 AWS Glue Data Catalog 物件的存取權。

如需使用工作階段標籤的詳細資訊，請參閱 AWS CLI 《 使用者指南》中的[擔任角色](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html)。

屬性型存取控制 (ABAC) 是一種授權策略，可根據屬性定義許可。 會 AWS 呼叫這些屬性*標籤*。您可以使用 ABAC 將存取權授予相同帳戶或 Data Catalog 資源上另一個帳戶中的主體。任何具有相符 IAM 標籤或工作階段標籤索引鍵和值的 IAM 主體都可以存取資源。您必須擁有資源的可授予許可，才能進行這些授予。

ABAC 可讓您同時將存取權授予多個使用者。當新使用者加入組織時，其對資料的存取可以根據其屬性自動決定，例如其任務職能或部門，而無需管理員手動指派特定角色或許可。透過使用屬性而非角色，ABAC 提供了更簡化和可維護的方式，來管理不同系統和環境中的資料存取，最終增強了資料管理和合規。

如需定義屬性的詳細資訊，請參閱[使用 ABAC 授權根據屬性定義許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。

如需限制、考量事項和支援 AWS 區域的資訊，請參閱 [屬性型存取控制考量事項、限制和支援的區域](abac-considerations.md)。

**Topics**
+ [使用屬性授予許可的先決條件](abac-prerequisites.md)
+ [使用屬性型存取控制授予許可](abac-granting-permissions.md)

# 使用屬性授予許可的先決條件
<a name="abac-prerequisites"></a>

若要使用屬性型存取控制 (ABAC) 授予許可，您必須完成下列先決條件：
+ 更新 **Data Catalog** **設定**，以啟用 Data Catalog 物件的 Lake Formation 許可。如需詳細資訊，請參閱[變更預設許可模型或使用混合存取模式](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#setup-change-cat-settings)一節。
+ 將跨帳戶版本設定設為兩個或更高版本。
+ 將[屬性連接至](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)需要存取的 IAM 實體。
+ 只有具有必要許可的資料湖管理員或 IAM 使用者才能授予 Data Catalog 物件的存取權。如需必要許可的詳細資訊，請參閱 [IAM 許可](https://docs.aws.amazon.com/lake-formation/latest/dg/required-permissions-for-grant.html)。

# 使用屬性型存取控制授予許可
<a name="abac-granting-permissions"></a>

本主題說明在 Data Catalog 資源上授予屬性型存取許可時需要遵循的步驟。您可以使用 Lake Formation 主控台或 AWS 命令列界面 (AWS CLI)。

## 使用 ABAC 授予許可 (AWS 管理主控台)
<a name="w2aac15b9c31c19b5b1"></a>

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

1. 執行以下任意一項：
   + 在導覽窗格中的**許可**下，選擇**資料湖許可**。然後選擇**授予**。
   + 在導覽窗格中，選擇資料**目錄**下的目錄。 ****然後，從**許可**下**的動作**選單中選擇目錄物件 （目錄、資料庫、資料表和資料篩選條件），然後選擇**授予**。

1. 在**授予許可**頁面上，**依屬性選擇主體**。

1. 指定屬性索引鍵和值 (s)。如果您選擇多個值，則會使用 `OR`運算子建立屬性表達式。這表示如果指派給 IAM 角色或使用者配對的任何屬性標籤值，角色/使用者會取得資源的存取許可。

   如果您指定多個屬性標籤，則會使用 `AND`運算子建立屬性表達式。只有在屬性表達式中每個屬性標籤的 IAM 角色/使用者獲指派相符標籤時，才會授予 Data Catalog 資源的主體許可。

   檢閱主控台中顯示的產生的 Cedar 政策表達式。  
![\[在授予許可對話方塊中，會建立屬性表達式。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/abac-grant-permissions.png)

1. 選擇許可範圍。如果承授者屬於外部帳戶，請選擇**外部帳戶**，然後輸入 AWS 帳戶 ID。

1. 接著，選擇 Data Catalog 帳戶或在外部帳戶中。您必須對資源擁有對應的可授予許可，才能成功完成許可授予。

1. 指定您要允許具有相符屬性之主體 （使用者或角色） 執行的動作。系統會將存取權授予已指派標籤的 IAM 實體，以及至少符合其中一個指定屬性表達式的值。在 主控台中檢閱 Cedar 政策表達式。如需 Cedar 的詳細資訊，請參閱[什麼是 Cedar？ \$1 Cedar 政策語言參考GuideLink](https://docs.cedarpolicy.com/)。

1. 接下來，選擇 Data Catalog 資源以授予存取權。您可以定義各種 Data Catalog 資源的這些許可，包括目錄、資料庫、資料表和資料篩選條件。

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

   此方法可讓您根據屬性控制存取，確保只有具有適當標籤的使用者或角色才能對指定的資源執行特定動作。

## 使用 ABAC 授予許可 (AWS CLI)
<a name="abac-granting-permissions-cli"></a>

 下列範例顯示必須滿足才能接收資源上所有可用許可的屬性表達式。或者，您可以指定個別許可`Select`，例如 `Describe`、 或 `Drop`。表達式使用 Cedar 政策表達式。如需 Cedar 的詳細資訊，請參閱[什麼是 Cedar？ \$1 Cedar 政策語言參考GuideLink](https://docs.cedarpolicy.com/)。

 此條件會檢查 IAM 主體是否有`department`標籤，且`department`標籤值等於 `sales`。

```
aws lakeformation grant-permissions 
--principal '{"DataLakePrincipalIdentifier": "111122223333:IAMPrincipals"}' \
--resource '{"Database": {"CatalogId": 111122223333, "Name": "abac-db"}}' \
--permissions ALL \
--condition '{"Expression": "context.iam.principalTags.hasTag(\"department\") \
   && context.iam.principalTags.getTag(\"department\") == \"sales\""}'
```

# 許可範例案例
<a name="security-permissions-example-scenario"></a>

下列案例有助於示範如何設定許可，以安全存取 中的資料 AWS Lake Formation。

Shirley 是資料管理員。她想要為公司 AnyCompany 設定資料湖。目前，所有資料都存放在 Amazon S3 中。John 是行銷經理，需要客戶購買資訊的寫入存取權 （包含在 中`s3://customerPurchases`)。行銷分析師 Diego 今年夏天加入 John。John 需要能夠在不涉及 Shirley 的情況下，授予 Diego 對資料執行查詢的存取權。

Mateo 需要財務部門的存取權，才能查詢會計資料 （例如 `s3://transactions`)。他想要查詢財務團隊使用之資料庫 (`Finance_DB`) 資料表中的交易資料。他的經理 Arnav 可以讓他存取 `Finance_DB`。雖然他不應該修改會計資料，但他需要能夠將資料轉換為適合預測的格式 （結構描述）。此資料會存放在他可以修改的個別儲存貯體 (`s3://financeForecasts`) 中。

若要摘要：
+ Shirley 是資料湖管理員。
+ John 需要 `CREATE_DATABASE`和 `CREATE_TABLE`許可，才能在 Data Catalog 中建立新的資料庫和資料表。
+ John 還需要他所建立資料表的 `SELECT``INSERT`、 和 `DELETE`許可。
+ Diego 需要資料表的`SELECT`許可才能執行查詢。

AnyCompany 的員工會執行下列動作來設定許可。為了清楚起見，此案例中顯示的 API 操作會顯示簡化的語法。

1. Shirley 向 Lake Formation 註冊包含客戶購買資訊的 Amazon S3 路徑。

   ```
   RegisterResource(ResourcePath("s3://customerPurchases"), false, Role_ARN )
   ```

1. Shirley 授予 John 存取包含客戶購買資訊的 Amazon S3 路徑。

   ```
   GrantPermissions(John, S3Location("s3://customerPurchases"), [DATA_LOCATION_ACCESS]) )
   ```

1. Shirley 授予 John 建立資料庫的許可。

   ```
   GrantPermissions(John, catalog, [CREATE_DATABASE]) 
   ```

1. John 建立資料庫 `John_DB`。John 會自動擁有該資料庫的`CREATE_TABLE`許可，因為他建立了該資料庫。

   ```
   CreateDatabase(John_DB)
   ```

1. John 建立`John_Table`指向 的資料表`s3://customerPurchases`。因為他建立了資料表，所以他對其擁有所有許可，並且可以授予許可。

   ```
   CreateTable(John_DB, John_Table)
   ```

1. John 允許他的分析師 Diego 存取資料表 `John_Table`。

   ```
    GrantPermissions(Diego, John_Table, [SELECT])
   ```

1. John 允許他的分析師 Diego 存取 `s3://customerPurchases/London/`。由於 Shirley 已註冊 `s3://customerPurchases`，因此其子資料夾會向 Lake Formation 註冊。

   ```
    GrantDataLakePrivileges( 123456789012/datalake, Diego, [DATA_LOCATION_ACCESS], [], S3Location("s3://customerPurchases/London/") )
   ```

1. John 允許他的分析師 Diego 在資料庫 中建立資料表`John_DB`。

   ```
    GrantDataLakePrivileges( 123456789012/datalake, Diego, John_DB, [CREATE_TABLE], [] )
   ```

1. Diego `John_DB` 在 的 中建立資料表，`s3://customerPurchases/London/`並自動取得 `ALTER`、`DROP`、`INSERT`、 `SELECT`和 `DELETE`許可。

   ```
    CreateTable( 123456789012/datalake, John_DB, Diego_Table )
   ```

# Lake Formation 中的資料篩選和儲存格層級安全性
<a name="data-filtering"></a>

當您授予資料目錄資料表的 Lake Formation 許可時，您可以包含資料篩選規格，以限制對與 Lake Formation 整合之查詢結果和引擎中特定資料的存取。Lake Formation 使用資料篩選來實現資料欄層級安全性、資料列層級安全性和儲存格層級安全性。如果您的來源資料包含巢狀結構，您可以在巢狀資料欄上定義和套用資料篩選條件。

透過 Lake Formation 的資料篩選功能，您可以實作以下層級的資料安全。

**資料欄層級安全**  
對資料目錄資料表授予具有資料欄層級安全性 （資料欄篩選） 的許可，可讓使用者僅檢視其在資料表中可存取的特定資料欄和巢狀資料欄。考慮在大型多區域通訊公司的多個應用程式中使用的`persons`資料表。使用欄篩選授予資料目錄資料表的許可可以限制不在 HR 部門工作的使用者查看個人身分識別資訊 (PII)，例如社會安全號碼或出生日期。您也可以定義安全政策，並僅授予對巢狀資料欄部分子結構的存取權。

**資料列層級安全性**  
對資料目錄資料表授予具有資料列層級安全性 （資料列篩選） 的許可，可讓使用者僅檢視其在資料表中可存取的特定資料列。篩選是根據一或多個資料欄的值。您可以在定義資料列篩選條件表達式時包含巢狀資料欄結構。例如，如果通訊公司的不同區域辦公室有自己的 HR 部門，您可以將 HR 員工可以看到的人員記錄限制為僅限其區域中員工的記錄。

**儲存格層級安全性**  
儲存格層級安全性結合了資料列篩選和資料欄篩選，可提供高度彈性的許可模型。如果您使用儲存格層級安全性將資料表的資料列和資料欄檢視為網格，則可以限制存取兩個維度中的任何位置的網格個別元素 （儲存格）。也就是說，您可以根據資料列限制對不同資料欄的存取。這由下圖說明，其中限制的資料欄會著色。

![\[網格會顯示 5 列和 6 欄。資料列和資料欄具有 Col1, Col2, Row1, Row2 等標頭。具有下列座標的網格儲存格會著色：R3,C1; R3,C2; R3,C3; R5,C1; R5;C2; R5,C5; R5,C6。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/cells-diagram.png)


繼續人員資料表的範例，您可以在儲存格層級建立*資料篩選條件*，如果資料列的國家/地區資料欄設定為 "UK"，則限制對街道地址資料欄的存取，但如果資料列的國家/地區資料欄設定為 "US"，則允許存取街道地址資料欄。

篩選條件僅適用於讀取操作。因此，您只能使用篩選條件授予 `SELECT` Lake Formation 許可。

**巢狀資料欄上的儲存格層級安全性**  
Lake Formation 可讓您在巢狀資料欄上定義和套用具有儲存格層級安全性的資料篩選條件。不過，Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 等整合分析引擎支援對具有資料列和資料欄層級安全性的 Lake Formation 受管巢狀資料表執行查詢。

如需限制的詳細資訊，請參閱[資料篩選限制](data-filtering-notes.md)。

**Topics**
+ [Lake Formation 中的資料篩選條件](#data-filters-about)
+ [資料列篩選條件表達式中的 PartiQL 支援](partiql-support.md)
+ [使用儲存格層級篩選查詢資料表所需的許可](row-filtering-prereqs.md)
+ [管理資料篩選條件](managing-filters.md)

## Lake Formation 中的資料篩選條件
<a name="data-filters-about"></a>

您可以建立*資料篩選條件*，來實作資料欄層級、資料列層級和儲存格層級安全性。當您授予資料表的 `SELECT` Lake Formation 許可時，請選取資料篩選條件。如果您的資料表包含巢狀資料欄結構，您可以透過包含或排除子資料欄來定義資料篩選條件，並在巢狀屬性上定義資料列層級篩選條件表達式。



每個資料篩選條件都屬於 Data Catalog 中的特定資料表。資料篩選條件包含下列資訊：
+ 篩選器名稱
+ 與篩選條件相關聯的資料表目錄 IDs 
+ 資料表名稱
+ 包含資料表的資料庫名稱
+ 資料欄規格 – 要包含或排除在查詢結果中的資料欄和巢狀資料欄 （含`struct`資料類型） 的清單。
+ 資料列篩選條件表達式 – 指定要包含在查詢結果中的資料列的表達式。在某些限制下，表達式具有 PartiQL 語言中 `WHERE`子句的語法。若要指定所有資料列，請在主控台中選擇存取資料列層級存取下**的所有資料**列，或在 API 呼叫`AllRowsWildcard`中使用 。 ****

  如需資料列篩選條件表達式中所支援內容的詳細資訊，請參閱 [資料列篩選條件表達式中的 PartiQL 支援](partiql-support.md)。

您取得的篩選層級取決於資料篩選條件的填入方式。
+ 如果您指定「所有資料行」萬用字元並提供資料列篩選條件運算式，則只會建立資料列層級安全性 (資料列篩選)。
+ 當您包含或排除特定資料欄和巢狀資料欄，並使用全列萬用字元指定「所有資料列」時，您只會建立資料欄層級的安全性 （資料欄篩選）。
+ 如果包含或排除特定資料行並提供資料列篩選條件運算式，則會建立儲存格層級安全性 (儲存格篩選)。

下列 Lake Formation 主控台的螢幕擷取畫面顯示執行儲存格層級篩選的資料篩選條件。對於針對`orders`資料表的查詢，它會限制對 `customer_name`欄的存取，而查詢結果只會傳回包含 'pharma' `product_type`欄的資料列。

![\[資料篩選條件視窗包含這些垂直排列的欄位：資料篩選條件名稱；目標資料庫；目標資料表；具有選項的選項按鈕群組 存取所有欄、包含欄和排除欄；選取欄 （下拉式清單）；資料列篩選條件表達式 （多行文字方塊）。選取排除資料欄選項，選取 customer_name 資料欄進行排除，且資料列篩選條件表達式欄位包含 'product_type='pharma'。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/data-filter-sample-pharma.png)


請注意，使用單引號括住字串常值 `'pharma'`。

您可以使用 Lake Formation 主控台來建立此資料篩選條件，也可以將下列請求物件提供給 `CreateDataCellsFilter` API 操作。

```
{
     "Name": "restrict-pharma",
     "DatabaseName": "sales",
     "TableName": "orders",
     "TableCatalogId": "111122223333",      
     "RowFilter": {"FilterExpression": "product_type='pharma'"},
     "ColumnWildcard": {
         "ExcludedColumnNames": ["customer_name"]
     }
}
```

您可以視需要為資料表建立任意數量的資料篩選條件。若要這樣做，您需要資料表上具有授予選項的`SELECT`許可。根據預設，Data Lake 管理員具有在該帳戶中的所有資料表上建立*資料篩選條件*的許可。您通常只會在將資料表的許可授予委託人時，使用可能的資料篩選條件子集。例如，您可以為`orders`資料表建立第二個資料篩選條件，這是row-security-only的資料篩選條件。請參閱上述螢幕擷取畫面，您可以選擇**存取所有資料欄**選項，並包含 的資料列篩選條件表達式`product_type<>pharma`。此資料篩選條件的名稱可以是 `no-pharma`。它會限制對資料`product_type`欄設定為 'pharma' 的所有資料列的存取。

此資料篩選條件的 `CreateDataCellsFilter` API 操作請求物件如下。

```
{
     "Name": "no-pharma",
     "DatabaseName": "sales",
     "TableName": "orders",
     "TableCatalogId": "111122223333",      
     "RowFilter": {"FilterExpression": "product_type<>'pharma'"},
     "ColumnNames": ["customer_id", "customer_name", "order_num"
          "product_id", "purchase_date", "product_type", 
          "product_manufacturer", "quantity", "price"]
}
```

然後，您可以將`orders`資料表`SELECT`上的`restrict-pharma`資料篩選條件授予管理使用者，將`orders`資料表`SELECT`上的`no-pharma`資料篩選條件授予非管理使用者。對於醫療保健領域中的使用者，您可以在`orders`資料表`SELECT`上授予 ，以完整存取所有資料列和資料欄 （無資料篩選條件），或者使用另一個限制對定價資訊的存取的資料篩選條件。

 在資料篩選條件中指定資料欄層級和資料列層級安全性時，您可以包含或排除巢狀資料欄。在下列範例中，使用合格的資料欄名稱 （以雙引號包裝） 指定對 `product.offer` 欄位的存取。這對於巢狀欄位很重要，以避免資料欄名稱包含特殊字元時發生錯誤，並維持與最上層資料欄層級安全定義的回溯相容性。

```
{
     "Name": "example_dcf",
     "DatabaseName": "example_db",
     "TableName": "example_table",
     "TableCatalogId": "111122223333",      
     "RowFilter": { "FilterExpression": "customer.customerName <> 'John'" },
     "ColumnNames": ["customer", "\"product\".\"offer\""]
}
```

**另請參閱**  
[管理資料篩選條件](managing-filters.md)

# 資料列篩選條件表達式中的 PartiQL 支援
<a name="partiql-support"></a>

您可以使用 PartiQL 資料類型、運算子和彙總的子集來建構資料列篩選條件表達式。Lake Formation 不允許篩選表達式中的任何使用者定義或標準 partiQL 函數。您可以使用比較運算子來比較資料欄與常數 （例如 `views >= 10000`)，但無法比較資料欄與其他資料欄。

 資料列篩選條件表達式可以是簡單表達式或複合表達式。表達式的總長度必須小於 2048 個字元。

**簡單表達式**  
簡單表達式的格式如下：` <column name > <comparison operator ><value >`
+ **資料欄名稱**

  它可以是頂層資料欄、分割區欄或資料表結構描述中存在的巢狀資料欄，且必須屬於下列[支援的資料類型](#row-filter-supported-datatypes)內容。
+ **比較運算子**

   以下是支援的運算子： `=, >, <, >=, <=, <>,!=, BETWEEN, IN, LIKE, NOT, IS [NOT] NULL`
+  所有字串比較和`LIKE`模式比對都區分大小寫。您無法在分割區資料欄上使用 IS 【NOT】 NULL 運算子。
+ **資料欄值**

   資料欄值必須符合資料欄名稱的資料類型。

**複合表達式**  
複合表達式的格式為：`( <simple expression >) <AND/OR >(<simple expression >)`。您可以使用邏輯運算子 進一步組合複合表達式`AND/OR`。

## 支援的資料類型
<a name="row-filter-supported-datatypes"></a>

參考包含不支援資料類型之 AWS Glue Data Catalog 資料表的資料列篩選條件將導致錯誤。以下是資料表資料欄和常數支援的資料類型，其會對應至 Amazon Redshift 資料類型：
+ `STRING, CHAR, VARCHAR`
+ `INT, LONG, BIGINT, FLOAT, DECIMAL, DOUBLE`
+ `BOOLEAN`
+  `STRUCT` 

如需 Amazon Redshift 中資料類型的詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的[資料類型](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html)。

## 資料列篩選條件表達式
<a name="Row-Filter-Expressions"></a>

**Example**  
以下是具有資料欄之資料表的有效資料列篩選條件表達式範例： ` country (String), id (Long), year (partition column of type Integer), month (partition column of type Integer)`  
+ `year > 2010 and country != 'US'`
+ `(year > 2010 and country = 'US') or (month < 8 and id > 23)`
+ `(country between 'Z' and 'U') and (year = 2018)`
+ `(country like '%ited%') and (year > 2000)`

**Example**  
以下是具有巢狀資料欄之資料表的資料列篩選表達式的有效範例： `year > 2010 and customer.customerId <> 1 `  
 定義巢狀資料列層級表達式時，不應參考分割區資料欄下的巢狀欄位。

字串常數必須以單引號括住。

## 保留的關鍵字
<a name="partiql-reserved-keywords"></a>

如果您的資料列篩選條件表達式包含 PartiQL 關鍵字，您會收到剖析錯誤，因為資料欄名稱可能與關鍵字衝突。發生這種情況時，請使用雙引號逸出資料欄名稱。預留關鍵字的一些範例包括「first」、「last」、「asc」、「missing」。如需預留關鍵字清單，請參閱 PartiQL 規格。

## PartiQL 參考
<a name="partiql-ref"></a>

如需 PartiQL 的詳細資訊，請參閱 [https://partiql.org/](https://partiql.org/)。

# 使用儲存格層級篩選查詢資料表所需的許可
<a name="row-filtering-prereqs"></a>

需要下列 AWS Identity and Access Management (IAM) 許可，才能對具有儲存格層級篩選的資料表執行查詢。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:StartQueryPlanning",
                "lakeformation:GetQueryState",
                "lakeformation:GetWorkUnits",
                "lakeformation:GetWorkUnitResults"
            ],
            "Resource": "*"
        }
    ]
}
```

------

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

# 管理資料篩選條件
<a name="managing-filters"></a>

若要實作資料欄層級、資料列層級和儲存格層級的安全性，您可以建立和維護資料篩選條件。每個資料篩選條件都屬於 Data Catalog 資料表。您可以為資料表建立多個資料篩選條件，然後在授予資料表的許可時使用一或多個資料篩選條件。您也可以在具有`struct`資料類型的巢狀資料欄上定義和套用資料篩選條件，讓使用者只能存取巢狀資料欄的子結構。

您需要具有授予選項的`SELECT`許可，才能建立或檢視資料篩選條件。若要允許帳戶中的主體檢視和使用資料篩選條件，您可以授予其`DESCRIBE`許可。

**注意**  
Lake Formation 不支援對從另一個帳戶共用的資料篩選條件授予`Describe`許可。

您可以使用 AWS Lake Formation 主控台、 API 或 () AWS Command Line Interface 來管理資料篩選條件AWS CLI。

如需資料篩選條件的相關資訊，請參閱 [Lake Formation 中的資料篩選條件](data-filtering.md#data-filters-about)

# 建立資料篩選條件
<a name="creating-data-filters"></a>

您可以為每個 Data Catalog 資料表建立一或多個資料篩選條件。

**建立 Data Catalog 資料表的資料篩選條件 （主控台）**

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

   以資料湖管理員、目標資料表擁有者或擁有目標資料表 Lake Formation 許可的主體身分簽署。

1. 在導覽窗格中的資料**目錄**下，選擇**資料篩選條件**。

1. 在**資料篩選條件**頁面上，選擇**建立新篩選條件**。

1. 在**建立資料篩選條件**對話方塊中，輸入下列資訊：
   + 資料篩選條件名稱 
   + 目標資料庫 – 指定包含資料表的資料庫。
   + 目標資料表 
   + 資料欄層級存取 – 將此設定為**存取所有資料欄**，以僅指定資料列篩選。選擇**包含資料**欄或**排除資料欄**以指定資料欄或儲存格篩選，然後指定要包含或排除的資料欄。

     巢狀資料欄 – 如果您要在包含巢狀資料欄的資料表上套用篩選條件，您可以明確指定資料篩選條件中巢狀結構資料欄的子結構。

     當您將 SELECT 許可授予此檔案伺服器上的委託人時，執行下列查詢的委託人只會看到 的資料，`customer.customerName`而不會看到 的資料`customer.customerId`。

     ```
     SELECT "customer" FROM "example_db"."example_table";
     ```  
![\[Column-level access settings with options to include specific columns and filter rows.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/nested-column-filter.png)

      當您授予資料`customer`欄的許可時，委託人會收到資料欄的存取權，以及資料欄 (`customerName` 和 ) 下的巢狀欄位`customerID`。
   + 資料列篩選條件表達式 – 輸入篩選條件表達式以指定資料列或儲存格篩選。如需支援的資料類型和運算子，請參閱 [資料列篩選條件表達式中的 PartiQL 支援](partiql-support.md)。選擇**存取所有資料列**，以授予存取所有 的權限。

     您可以在資料列篩選條件表達式中包含巢狀資料欄的部分資料欄結構，以篩選包含特定值的資料列。

     當委託人被授予具有資料列篩選條件表達式 的資料表許可`Select * from example_nestedtable where customer.customerName <>'John'`，且**資料欄層級**存取設定為**存取所有資料欄**時，查詢結果只會顯示 `customerName <>'John'`評估為 true 的資料列。

   下列螢幕擷取畫面顯示實作儲存格篩選的資料篩選條件。在對`orders`資料表的查詢中，它會拒絕存取資料`customer_name`欄，並只顯示資料`product_type`欄中具有「製藥」的資料列。  
![\[資料篩選條件視窗包含這些垂直排列的欄位：資料篩選條件名稱；目標資料庫；目標資料表；具有選項的選項按鈕群組 存取所有欄、包含欄和排除欄；選取欄 （下拉式清單）；資料列篩選條件表達式 （多行文字方塊）。選取排除資料欄選項，選取 customer_name 資料欄進行排除，且資料列篩選條件表達式欄位包含 'product_type='pharma'。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/data-filter-sample-pharma.png)

1. 選擇 **Create filter (建立篩選條件)**。

**在巢狀欄位上使用儲存格篩選條件政策建立資料篩選條件**

 本節使用以下範例結構描述，示範如何建立資料儲存格篩選條件：

```
[
    { name: "customer", type: "struct<customerId:string,customerName:string>" },
    { name: "customerApplication", type: "struct<appId:string>" },
    { name: "product", type: "struct<offer:struct<prodId:string,listingId:string>,type:string>" },
    { name: "purchaseId", type: "string" },
]
```

1. 在**建立資料篩選條件**上，頁面輸入資料篩選條件的名稱。

1.  接著，使用下拉式清單選擇資料庫名稱和資料表名稱。

1. 在**資料欄層級存取**區段中，選擇包含的資料欄，然後選取巢狀資料欄 (`customer.customerName`)。

1. 在**資料列層級存取**區段中，選擇**存取所有資料列**選項。

1. 選擇 **Create filter (建立篩選條件)**。

   當您授予此篩選條件的`SELECT`許可時，委託人可以存取 `customerName`資料欄中的所有資料列。

1. 接著，為相同的資料庫/資料表定義另一個資料篩選條件。

1. 在**資料欄層級存取**區段中，選擇包含的資料欄，然後選取另一個巢狀資料欄 (`customer.customerid`)。

1. 在**資料列層級存取**區段中，選擇**篩選資料列**，然後輸入**資料列篩選表達**式 (`customer.customerid <> 5`)。

1. 選擇 **Create filter (建立篩選條件)**。

   當您授予此篩選條件的`SELECT`許可時，委託人會收到 中所有資料列的存取權`customerName`，以及資料`customerId`欄中值為 5 的儲存格以外的`customerId`欄位。

# 授予資料篩選條件許可
<a name="granting-filter-perms"></a>

您可以將資料篩選條件的 `SELECT`、 `DESCRIBE`和 `DROP` Lake Formation 許可授予委託人。

一開始，只有您可以檢視為資料表建立的資料篩選條件。若要讓另一個主體檢視資料篩選條件，並使用資料篩選條件授予 Data Catalog 許可，您必須：
+ 使用授予選項將資料表`SELECT`上的 授予委託人，並將資料篩選條件套用至授予。
+ 將資料篩選條件的 `DESCRIBE`或 `DROP`許可授予委託人。

您可以將 `SELECT`許可授予外部 AWS 帳戶。然後，該帳戶中的資料湖管理員可以將該許可授予帳戶中的其他主體。授予外部帳戶時，您必須包含授予選項，外部帳戶的管理員才能進一步將許可串聯至其帳戶中的其他使用者。授予您帳戶中的委託人時，使用授予選項進行授予是選用的。

您可以使用 AWS Lake Formation 主控台、 API 或 AWS Command Line Interface () 授予和撤銷資料篩選條件的許可AWS CLI。

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

1. 登入 AWS 管理主控台 並開啟 Lake Formation 主控台，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中的**許可**下，選擇**資料湖許可**。

1. 在**許可**頁面上**的資料許可**區段中，選擇**授予**。

1. 在**授予資料許可**頁面上，選擇要授予許可的委託人。

1. 在 LF 標籤或目錄資源區段中，選擇**具名資料目錄資源**。然後選擇您要授予許可的資料庫、資料表和資料篩選條件。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. 在**資料篩選條件許可**區段中，選擇您要授予所選委託人的許可。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-perms-on-filters.png)

------
#### [ AWS CLI ]
+ 輸入`grant-permissions`命令。`DataCellsFilter` 為`resource`引數指定 ，並為`Permissions`引數指定 `DROP` `DESCRIBE`或 ，並選擇性地為`PermissionsWithGrantOption`引數指定 或 。

  下列範例`DESCRIBE`使用授予選項授予 `datalake_user1`使用者`restrict-pharma`，該選項屬於 AWS 帳戶 1111-2222-3333 中`sales`資料庫中的`orders`資料表。

  ```
  aws lakeformation grant-permissions --cli-input-json file://grant-params.json
  ```

  以下是檔案 的內容`grant-params.json`。

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------

# 授予資料篩選條件提供的資料許可
<a name="granting-data-perms-for-filters"></a>

資料篩選條件代表資料表中的資料子集。若要提供資料存取權給委託人，需要將`SELECT`許可授予這些委託人。透過此許可，委託人可以：
+ 在與其帳戶共用的資料表清單中檢視實際的資料表名稱。
+ 在共用資料表上建立資料篩選條件，並授予使用者對這些資料篩選條件的許可。

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

**授予 SELECT 許可**

1. 前往 Lake Formation 主控台中的**許可**頁面，然後選擇**授予**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/permissions-grant-action.png)

1. 選取您要提供存取權的主體，然後選取**具名資料目錄資源**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. 若要提供篩選條件所代表資料的存取權，請選擇**資料篩選條件許可**下的**選取**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-data-filter-perms-step3.png)

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

輸入`grant-permissions`命令。`DataCellsFilter` 為資源引數指定 ，並為`SELECT`許可引數指定 。

下列範例`SELECT`使用 授予選項授予資料篩選條件 `datalake_user1`上的使用者`restrict-pharma`，該選項屬於 中`sales`資料庫中的 `orders`資料表 AWS 帳戶 `1111-2222-3333`。

```
aws lakeformation grant-permissions --cli-input-json file://grant-params.json 
```

以下是檔案 的內容`grant-params.json`。

```
{
    "Principal": {
        "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
    },
    "Resource": {
        "DataCellsFilter": {
            "TableCatalogId": "111122223333", 
            "DatabaseName": "sales", 
            "TableName": "orders", 
            "Name": "restrict-pharma"
        }
    },
    "Permissions": ["SELECT"]
}
```

------

# 檢視資料篩選條件
<a name="view-data-filters"></a>

您可以使用 Lake Formation 主控台 AWS CLI或 Lake Formation API 來檢視資料篩選條件。

若要檢視資料篩選條件，您必須是 Data Lake 管理員或擁有資料篩選條件所需的許可。

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

1. 登入 AWS 管理主控台 並開啟 Lake Formation 主控台，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中的資料**目錄**下，選擇**資料篩選條件**。

   此頁面會顯示您有權存取的資料篩選條件。  
![\[資料篩選條件頁面使用下列資料欄顯示可用的資料篩選條件：篩選條件名稱、資料表、資料庫和資料表目錄 ID。螢幕擷取畫面顯示具有下列值的單一資料篩選條件：test-df、Cloudtrailtest_cloudtrail、lakeformation_cloudtrail、已修訂的帳戶 ID。在資料表上方有四個按鈕 （從左到右）：重新整理/重新載入、檢視 （灰色）、刪除 （灰色） 和「建立新篩選條件」。還有一個搜尋欄位，這是空的。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/list-data-filters.jpg)

1. 若要檢視資料篩選條件詳細資訊，請選擇資料篩選條件，然後選擇檢視。隨即出現新視窗，其中包含資料篩選條件詳細資訊。  
![\[「檢視資料篩選條件」視窗會顯示所選資料篩選條件的其他資訊。顯示的資訊包括名稱、資料庫、資料表、資料欄層級存取設定、資料列篩選條件表達式和資料欄。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/list-data-filters-details.jpg)

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

輸入`list-data-cells-filter`命令並指定資料表資源。

下列範例列出`cloudtrailtest_cloudtrail`資料表的資料篩選條件。

```
aws lakeformation list-data-cells-filter --table '{ "CatalogId":"123456789012", 
"DatabaseName":"lakeformation_cloudtrail", "Name":"cloudtrailtest_cloudtrail"}'
```

------
#### [ API/SDK ]

使用 `ListDataCellsFilter` API 並指定資料表資源。

下列範例使用 Python 列出`myTable`資料表的前 20 個資料篩選條件。

```
response = client.list_data_cells_filter(
    Table = {
        'CatalogId': '111122223333',
        'DatabaseName': 'mydb',
        'Name': 'myTable'
    },
    MaxResults=20
)
```

------

# 列出資料篩選條件許可
<a name="listing-filter-perms"></a>

您可以使用 Lake Formation 主控台來檢視資料篩選條件上授予的許可。

若要檢視資料篩選條件的許可，您必須是 Data Lake 管理員或具有資料篩選條件所需的許可。

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

1. 登入 AWS 管理主控台 並開啟 Lake Formation 主控台，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

1. 在導覽窗格中的**許可**下，選擇**資料許可**。

1. 在**資料許可**頁面上，按一下或點選搜尋欄位，然後在**屬性**功能表中選擇**資源類型**。

1. 在**資源類型**功能表中，選擇**資源類型：資料儲存格篩選條件**。

   列出您在 上擁有許可的資料篩選條件。您可能需要水平捲動，才能查看**許可**和**可授予**資料欄。  
![\[資料許可頁面會顯示具有下列資料欄的許可表：主體、資源類型、資料庫、資料表、資源、目錄和許可。資源類型欄會在所有四列中顯示「資料儲存格篩選條件」。第一列和第二列的許可為 Describe、Drop 和 Select。第三列的許可是 Describe。資料表上方有一個清除篩選條件按鈕和一個圖磚，指出目前的搜尋是資源類型：資料儲存格篩選條件。以上是搜尋 （文字） 欄位，以上則是重新整理、撤銷和授予按鈕。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/data-permissions-cell-filters.png)

------
#### [ AWS CLI ]
+ 輸入`list-permissions`命令。`DataCellsFilter` 為`resource`引數指定 ，並為`Permissions`引數指定 `DROP` `DESCRIBE`或 ，並選擇性地為`PermissionsWithGrantOption`引數指定 或 。

  下列範例會列出資料篩選條件 上具有授予選項的`DESCRIBE`許可`restrict-pharma`。結果僅限於帳戶 1111-2222-3333 中`sales`資料庫的委託人`datalake_user1`和`orders`資料表所授予 AWS 的許可。

  ```
  aws lakeformation list-permissions --cli-input-json file://list-params.json
  ```

  以下是檔案 的內容`grant-params.json`。

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------

# 在 Lake Formation 中檢視資料庫和資料表許可
<a name="viewing-permissions"></a>

您可以檢視 Data Catalog 資料庫或資料表上授予的 Lake Formation 許可。您可以使用 Lake Formation 主控台、API 或 AWS Command Line Interface () 來執行此操作AWS CLI。

使用 主控台，您可以檢視從**資料庫**或**資料表**頁面或**資料許可頁面開始的許可**。

**注意**  
如果您不是資料庫管理員或資源擁有者，則只有在您對具有授予選項的資源具有 Lake Formation 許可時，才能檢視其他主體在資源上擁有的許可。  
除了必要的 Lake Formation 許可之外，您還需要 AWS Identity and Access Management (IAM) 許可 `glue:GetDatabases`、`glue:GetDatabase`、`glue:GetTables`、 `glue:GetTable`和 `lakeformation:ListPermissions`。

**檢視資料庫的許可 （主控台，從資料庫頁面開始）**

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

   以資料湖管理員、資料庫建立者或具有資料庫上任何 Lake Formation 許可的使用者身分登入，並使用 授予選項。

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

1. 選擇資料庫，然後在**動作**功能表上，選擇**檢視許可**。
**注意**  
如果您選擇資料庫資源連結，Lake Formation 會在資源連結上顯示許可，而不是資源連結的目標資料庫。

   **資料許可**頁面列出資料庫的所有 Lake Formation 許可。資料庫擁有者的資料庫名稱和目錄 ID (AWS 帳戶 ID) 會顯示為搜尋方塊下的標籤。圖磚表示篩選條件已套用至僅列出該資料庫的許可。您可以關閉圖磚或選擇**清除篩選條件來調整篩選條件**。  
![\[資料許可頁面會在頂端顯示搜尋方塊，下方有兩個圖磚。這些圖磚會標記為 Database：logs 和 Catalog ID：111122223333。圖磚旁有一個清除篩選條件按鈕。以下是資料庫及其許可的清單。此範例在清單中只有一列。這是針對日誌資料庫，並使用 授予選項將許可更改、建立資料表和捨棄授予 IAM 使用者管理員。該清單包含擁有者帳戶 ID 欄，而該欄中的一列具有 11112222333。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/permissions-page-database.png)

**檢視資料庫上的許可 （主控台，從資料許可頁面開始）**

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

   以資料湖管理員、資料庫建立者或具有資料庫上任何 Lake Formation 許可的使用者身分登入，並使用 授予選項。

1. 在導覽窗格中，選擇**資料許可**。

1. 將游標放在頁面頂端的搜尋方塊中，然後在出現的**屬性**功能表中，選擇**資料庫**。

1. 在出現**的資料庫**功能表中，選擇資料庫。
**注意**  
如果您選擇資料庫資源連結，Lake Formation 會在資源連結上顯示許可，而不是資源連結的目標資料庫。

   **資料許可**頁面列出資料庫的所有 Lake Formation 許可。資料庫名稱會顯示為搜尋方塊下的圖磚。圖磚表示篩選條件已套用至僅列出該資料庫的許可。您可以關閉圖磚或選擇**清除篩選條件來移除篩選條件**。

**檢視資料表上的許可 （主控台，從資料表頁面開始）**

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

   使用授予選項，以資料湖管理員、資料表建立者或擁有資料表上任何 Lake Formation 許可的使用者身分登入。

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

1. 選擇資料表，然後在**動作**功能表上，選擇**檢視許可**。
**注意**  
如果您選擇資料表資源連結，Lake Formation 會在資源連結上顯示許可，而不是在資源連結的目標資料表上顯示許可。

   **資料許可**頁面列出資料表的所有 Lake Formation 許可。資料表名稱、包含資料表的資料庫名稱，以及資料表擁有者的目錄 ID (AWS 帳戶 ID) 會顯示為搜尋方塊下的標籤。標籤指出篩選條件已套用至僅列出該資料表的許可。您可以關閉標籤或選擇**清除篩選條件來調整篩選條件**。  
![\[資料許可頁面會在頂端顯示搜尋欄位，其中包含三個圖磚。這些圖磚標示為 Database：logs、Table：alexa-logs 和 Catalog ID：111122223333，從左到右。圖磚旁有一個清除篩選條件按鈕。以下是資料表及其許可的清單。此範例在清單中只有一列。這是針對 alexa-logs 資料表，而 Super 許可會使用授予選項授予 IAM 使用者管理員。該清單包含擁有者帳戶 ID 欄，而該欄中的一列具有 11112222333。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/permissions-page-table.png)

**檢視資料表上的許可 （主控台，從資料許可頁面開始）**

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

   使用授予選項，以資料湖管理員、資料表建立者或擁有資料表上任何 Lake Formation 許可的使用者身分登入。

1. 在導覽窗格中，選擇**資料許可**。

1. 將游標放在頁面頂端的搜尋方塊中，然後在出現的**屬性**功能表中，選擇**資料庫**。

1. 在出現**的資料庫**功能表中，選擇資料庫。
**重要**  
如果您想要檢視從外部 AWS 帳戶與您的帳戶共用之資料表的許可，則必須選擇外部帳戶中包含資料表的資料庫，而不是資料庫的資源連結。

   **資料許可**頁面列出資料庫的所有 Lake Formation 許可。

1. 再次將游標放置在搜尋方塊中，然後在出現的**屬性**功能表上，選擇**資料表**。

1. 在出現的**資料表**功能表中，選擇資料表。

   **資料許可**頁面列出資料表的所有 Lake Formation 許可。包含資料表的資料庫的資料表名稱和資料庫名稱會在搜尋方塊下顯示為圖磚。圖磚表示篩選條件已套用至僅列出該資料表的許可。您可以關閉圖磚或選擇**清除篩選條件來調整篩選條件**。

**檢視資料表的許可 (AWS CLI)**
+ 輸入`list-permissions`命令。

  下列範例列出從外部帳戶共用之資料表的許可。`CatalogId` 屬性是外部 AWS 帳戶的帳戶 ID，資料庫名稱是指外部帳戶中包含資料表的資料庫。

  ```
  aws lakeformation list-permissions  --resource-type TABLE --resource '{ "Table": {"DatabaseName":"logs", "Name":"alexa-logs", "CatalogId":"123456789012"}}'
  ```

# 使用 Lake Formation 主控台撤銷許可
<a name="revoking-permssions-console-all"></a>

您可以使用 主控台來撤銷所有類型的 Lake Formation 許可：Data Catalog 許可、政策標籤許可、資料篩選條件許可和位置許可。

**撤銷資源的 Lake Formation 許可 （主控台）**

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

   使用資源上的授予選項，以資料湖管理員或已授予許可的使用者身分登入。

1. 在導覽窗格**的許可**下，選擇**資料湖許可**、**LF 標籤和許可**或**資料位置**。

1. 選取許可或位置，然後選擇**撤銷**。

1. 在開啟的對話方塊中，選擇**撤銷**。

# Lake Formation 中的跨帳戶資料共用
<a name="cross-account-permissions"></a>

Lake Formation 跨帳戶功能可讓使用者安全地跨多個 AWS 組織共用分散式資料湖 AWS 帳戶，或直接與另一個帳戶中的 IAM 主體共用，提供對 Data Catalog 中繼資料和基礎資料的精細存取。大型企業通常會使用多個 AWS 帳戶，其中許多帳戶可能需要存取由單一 管理的資料湖 AWS 帳戶。使用者和 AWS Glue 擷取、轉換和載入 (ETL) 任務可以跨多個帳戶查詢和聯結資料表，並仍然利用 Lake Formation 資料表層級和資料欄層級的資料保護。

當您將 Data Catalog 資源的 Lake Formation 許可授予外部帳戶或直接授予另一個帳戶中的 IAM 主體時，Lake Formation 會使用 AWS Resource Access Manager (AWS RAM) 服務來共用資源。如果承授者帳戶與授予者帳戶位於相同的組織中，則承授者可立即使用共享資源。如果承授者帳戶不在同一個組織中， AWS RAM 會傳送邀請給承授者帳戶，以接受或拒絕資源授予。然後，若要讓共用資源可用，承授者帳戶中的資料湖管理員必須使用 AWS RAM 主控台或 AWS CLI 接受邀請。

 Lake Formation 支援以混合存取模式與外部帳戶共用 Data Catalog 資源。混合存取模式可讓您靈活地選擇性地為 中的資料庫和資料表啟用 Lake Formation 許可 AWS Glue Data Catalog。  使用混合存取模式時，您現在有一個增量路徑，可讓您為一組特定使用者設定 Lake Formation 許可，而不會中斷其他現有使用者或工作負載的許可政策。

如需詳細資訊，請參閱[混合存取模式](hybrid-access-mode.md)。

**直接跨帳戶共用**  
授權委託人可以與外部帳戶中的 IAM 委託人明確共用資源。當帳戶擁有者想要控制外部帳戶中誰可以存取資源時，此功能很有用。IAM 主體收到的許可將是直接授予的聯集，而帳戶層級授予會層疊到主體。只有許可授予的收件人可以檢視直接跨帳戶授予。接收資源共用的委託人無法與其他委託人共用資源。

**共用 Data Catalog 資源的方法**  
使用單一 Lake Formation 授予操作，您可以授予下列 Data Catalog 資源的跨帳戶許可。
+ 資料庫
+ 個別資料表 （具有選用的資料欄篩選）
+ 幾個選取的資料表
+ 資料庫中的所有資料表 （使用所有資料表萬用字元）

有兩個選項可讓您與另一個帳戶中的另一個 AWS 帳戶 或 IAM 主體共用資料庫和資料表。
+ Lake Formation 標籤型存取控制 (LF-TBAC) （建議）

  Lake Formation 標籤型存取控制是一種授權策略，可根據屬性定義許可。您可以使用標籤型存取控制，與外部 IAM 主體、組織和組織單位 (OUs) 共用 Data Catalog 資源 （資料庫 AWS 帳戶、資料表和資料欄）。在 Lake Formation 中，這些屬性稱為 LF 標籤。如需詳細資訊，請參閱[使用 Lake Formation 標籤型存取控制管理資料湖](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-dl-tutorial.html)。
**注意**  
將 Data Catalog 許可 AWS Resource Access Manager 用於跨帳戶授予的 LF-TBAC 方法。  
Lake Formation 現在支援使用 LF-TBAC 方法將跨帳戶許可授予 Organizations 和組織單位。  
若要啟用此功能，您需要將**跨帳戶版本設定**更新為第 **3 版**或更新版本。  
如需詳細資訊，請參閱[更新跨帳戶資料共用版本設定](optimize-ram.md)。
+ Lake Formation 命名資源

  使用具名資源方法的 Lake Formation 跨帳戶資料共用可讓您對外部 AWS 帳戶、IAM 主體、組織或組織單位授予資料目錄資料表和資料庫的 Lake Formation 許可選項。授予操作會自動共用這些資源。

**注意**  
您也可以允許 AWS Glue 爬蟲程式使用 Lake Formation 憑證存取不同帳戶中的資料存放區。如需詳細資訊，請參閱《 AWS Glue 開發人員指南》中的[跨帳戶爬取](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#cross-account-crawling)。

Athena 和 Amazon Redshift Spectrum 等整合服務需要資源連結，才能在查詢中包含共用資源。如需資源連結的詳細資訊，請參閱 [資源連結在 Lake Formation 中如何運作](resource-links-about.md)。

如需考量和限制，請參閱 [跨帳戶資料共用最佳實務和考量事項](cross-account-notes.md)。

**Topics**
+ [先決條件](cross-account-prereqs.md)
+ [更新跨帳戶資料共用版本設定](optimize-ram.md)
+ [從外部帳戶跨 AWS 帳戶 或 IAM 主體共用 Data Catalog 資料表和資料庫](cross-account-data-share-steps.md)
+ [授予與您帳戶共用之資料庫或資料表的許可](regranting-shared-resources.md)
+ [授予資源連結許可](granting-link-permissions.md)
+ [存取共用資料表的基礎資料](cross-account-read-data.md)
+ [跨帳戶 CloudTrail 記錄](cross-account-logging.md)
+ [使用 AWS Glue和 Lake Formation 管理跨帳戶許可](hybrid-cross-account.md)
+ [使用 GetResourceShares API 操作檢視所有跨帳戶授予](cross-account-getresourcepolicies.md)

**相關主題**  
[Lake Formation 許可概觀](lf-permissions-overview.md)
[存取和檢視共用的 Data Catalog 資料表和資料庫](viewing-shared-resources.md)
[建立資源連結](creating-resource-links.md)
[對跨帳戶存取進行故障診斷](troubleshooting.md#trouble-cross-account)

# 先決條件
<a name="cross-account-prereqs"></a>

在 AWS 您的帳戶可以與另一個帳戶或另一個帳戶中的委託人共用 Data Catalog 資源 （目錄、資料庫和資料表） 之前，以及在您可以存取與帳戶共用的資源之前，必須符合下列先決條件。

**一般跨帳戶資料共用需求**
+ 若要在混合存取模式中共用 Data Catalog 資料庫和資料表，並在聯合目錄中共用物件，您需要將**跨帳戶版本設定**更新為第 **4 版**。
+ 在授予 Data Catalog 資源的跨帳戶許可之前，您必須撤銷資源`IAMAllowedPrincipals`群組中的所有 Lake Formation 許可。如果呼叫委託人具有跨帳戶存取資源的許可，且該`IAMAllowedPrincipals`許可存在於資源上，則 Lake Formation 會擲出 `AccessDeniedException`。

  此要求僅適用於在 Lake Formation 模式中註冊基礎資料位置時。如果您以混合模式註冊資料位置，`IAMAllowedPrincipals`群組許可可以存在於共用資料庫或資料表上。
+  對於包含您要共用之資料表的資料庫，您必須防止新資料表預設授與 `Super`給 `IAMAllowedPrincipals`。在 Lake Formation 主控台上，編輯資料庫並關閉**僅針對此資料庫中的新資料表使用 IAM 存取控制**，或輸入下列 AWS CLI 命令，`database`將 取代為資料庫的名稱。如果基礎資料位置是在混合存取模式中註冊，您不需要變更此預設設定。在混合存取模式中，Lake Formation 可讓您在相同的資源 AWS Glue 上選擇性地強制執行 Amazon S3 和 的 Lake Formation 許可和 IAM 許可政策。

  ```
  aws glue update-database --name database --database-input '{"Name":"database","CreateTableDefaultPermissions":[]}'
  ```
+ 若要授予跨帳戶許可，授予者必須擁有 AWS Glue和 AWS RAM 服務所需的 AWS Identity and Access Management (IAM) 許可。 AWS 受管政策會`AWSLakeFormationCrossAccountManager`授予必要的許可。

  使用 接收資源共享之帳戶中的資料湖管理員 AWS RAM 必須具有下列其他政策。它允許管理員接受 AWS RAM 資源共用邀請。它還允許管理員啟用與組織共用資源。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "ram:AcceptResourceShareInvitation",
                  "ram:RejectResourceShareInvitation",
                  "ec2:DescribeAvailabilityZones",
                  "ram:EnableSharingWithAwsOrganization"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ 如果您想要與 AWS Organizations 或組織單位共用 Data Catalog 資源，則必須在其中啟用與組織共用 AWS RAM。

  如需有關如何啟用與組織共用的資訊，請參閱*AWS RAM 《 使用者指南*》中的[啟用與 AWS 組織共用](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs)。

  您必須擁有`ram:EnableSharingWithAwsOrganization`許可，才能與組織共用。
+ 若要直接與另一個帳戶中的 IAM 主體共用資源，您需要將**跨帳戶版本設定**更新為第 **3 版**。此設定可在**資料目錄設定**頁面上取得。如果您使用的是**第 1 版**，請參閱更新設定 的說明[更新跨帳戶資料共用版本設定](optimize-ram.md)。
+ 您無法與另一個帳戶共用使用 AWS Glue 服務受管金鑰加密的 Data Catalog 資源。您只能共用使用客戶加密金鑰加密的 Data Catalog 資源，而且接收資源共用的帳戶必須具有 Data Catalog 加密金鑰的許可，才能解密物件。

**使用 LF-TBAC 需求的跨帳戶資料共用**
+  若要與 AWS Organizations 和組織單位 (OUs) 共用 Data Catalog 資源，您需要將**跨帳戶版本設定**更新為以上第 **3 版**。
+ 若要與**跨帳戶版本設定**第 3 版共用 Data Catalog 資源，授予者需要擁有`AWSLakeFormationCrossAccountManager`您帳戶中 AWS 受管政策中定義的 IAM 許可。
+ 如果您使用的是**跨帳戶版本設定的第 1 版或第 2 版**，您必須擁有啟用 LF-TBAC 的資料目錄資源政策 (`glue:PutResourcePolicy`)。如需詳細資訊，請參閱[使用 AWS Glue和 Lake Formation 管理跨帳戶許可](hybrid-cross-account.md)。
+ 如果您目前正在使用 AWS Glue Data Catalog 資源政策來共用資源，而且想要使用跨帳戶**版本設定的版本 3 授予跨帳戶**許可，則必須使用 `glue:PutResourcePolicy` API 操作在資料目錄設定中新增`glue:ShareResource`許可，如 [使用 AWS Glue和 Lake Formation 管理跨帳戶許可](hybrid-cross-account.md)一節所示。如果您的帳戶未使用 AWS Glue Data Catalog 資源政策 （第 1 版和第 2 版使用`glue:PutResourcePolicy`許可） 授予跨帳戶存取權，則不需要此政策。

  ```
  {
        "Effect": "Allow",
        "Action": [
          "glue:ShareResource"
        ],
        "Principal": {"Service": [
          "ram.amazonaws.com"
        ]},
        "Resource": [
          "arn:aws:glue:<region>:<account-id>:table/*/*",
          "arn:aws:glue:<region>:<account-id>:database/*",
          "arn:aws:glue:<region>:<account-id>:catalog"
        ]
      }
  ```
+ 如果您的帳戶已使用 AWS Glue Data Catalog 資源政策進行跨帳戶共用，且您目前使用具名資源方法或 LF-TBAC 搭配**跨帳戶設定**第 3 版來共用資源，則當您叫用 `glue:PutResourcePolicy` API 操作`'true'`時 AWS RAM ，必須將 `EnableHybrid`引數設定為 。如需詳細資訊，請參閱[使用 AWS Glue和 Lake Formation 管理跨帳戶許可](hybrid-cross-account.md)。

**存取共用資源的每個帳戶中所需的設定**
+ 如果您要與 共用資源 AWS 帳戶，則取用者帳戶中至少有一個使用者必須是資料湖管理員，才能檢視共用資源。如需如何建立資料湖管理員的資訊，請參閱 [建立資料湖管理員](initial-lf-config.md#create-data-lake-admin)。

  資料湖管理員可以將共用資源的 Lake Formation 許可授予帳戶中的其他主體。在資料湖管理員授予資源許可之前，其他主體無法存取共用資源。
+ Athena 和 Redshift Spectrum 等整合服務需要資源連結，才能在查詢中包含共用資源。委託人需要在其 Data Catalog 中建立資源連結，以從另一個 共用資源 AWS 帳戶。如需資源連結的詳細資訊，請參閱 [資源連結在 Lake Formation 中如何運作](resource-links-about.md)。
+ 當資源直接與 IAM 主體共用時，若要使用 Athena 查詢資料表，主體需要建立資源連結。若要建立資源連結，委託人需要 Lake Formation `CREATE_TABLE`或 `CREATE_DATABASE` 許可，以及 `glue:CreateTable`或 IAM `glue:CreateDatabase` 許可。

  如果生產者帳戶在相同資料庫中與相同或另一個委託人共用不同的資料表，則該委託人可以立即查詢資料表。

**注意**  
對於資料湖管理員和資料湖管理員已授予許可的主體，共用資源會顯示在資料目錄中，就像是本機 （擁有） 資源一樣。擷取、轉換和載入 (ETL) 任務可以存取共用資源的基礎資料。  
對於共用資源，Lake Formation 主控台上的**資料表**和**資料庫**頁面會顯示擁有者的帳戶 ID。  
存取共用資源的基礎資料時，CloudTrail 日誌事件會在共用資源收件人的 帳戶和資源擁有者的 帳戶中產生。CloudTrail 事件可以包含存取資料的主體 ARN，但前提是收件人帳戶選擇在日誌中包含主體 ARN。如需詳細資訊，請參閱[跨帳戶 CloudTrail 記錄](cross-account-logging.md)。

# 更新跨帳戶資料共用版本設定
<a name="optimize-ram"></a>

 會不時 AWS Lake Formation 更新跨帳戶資料共用設定，以區分對 AWS RAM 用量所做的變更，並支援對跨帳戶資料共用功能所做的更新。當 Lake Formation 執行此操作時，它會建立新的**跨帳戶版本設定**版本。

## 跨帳戶版本設定的主要差異
<a name="cross-account-version-diff"></a>

如需跨帳戶資料共用在不同**跨帳戶版本設定**下運作方式的詳細資訊，請參閱下列各節。

**注意**  
若要與其他帳戶共用資料，授予者必須具有`AWSLakeFormationCrossAccountManager`受管 IAM 政策許可。這是所有版本的先決條件。  
更新**跨帳戶版本設定**不會影響收件人對共用資源所擁有的許可。這適用於從第 1 版更新到第 2 版、將第 2 版更新到第 3 版，以及將第 1 版更新到第 3 版。更新版本時，請參閱下列考量事項。

**第 1 版**  
*具名資源方法：*將每個跨帳戶 Lake Formation 許可授予映射至一個 AWS RAM 資源共享。使用者 （授權方角色或委託人） 不需要額外的許可。  
*LF-TBAC 方法：*跨帳戶 Lake Formation 許可授予不會用來 AWS RAM 共用資料。使用者必須擁有 `glue:PutResourcePolicy` 許可。  
*更新版本的好處：*初始版本 - 不適用。  
*更新版本時的考量事項：*初始版本 - 不適用

**2 版**  
*具名資源方法：*透過映射具有一個 AWS RAM 資源共享的多個跨帳戶許可授予來最佳化 AWS RAM 資源共享的數量。使用者不需要額外的許可。  
*LF-TBAC 方法：*跨帳戶 Lake Formation 許可授予不會用來 AWS RAM 共用資料。使用者必須擁有 `glue:PutResourcePolicy` 許可。  
*更新版本的優勢：*透過 AWS RAM 容量的最佳使用率進行可擴展的跨帳戶設定。  
*更新版本時的考量：*想要授予跨帳戶 Lake Formation 許可的使用者，必須在 `AWSLakeFormationCrossAccountManager` AWS 受管政策中擁有 許可。否則，您需要有 `ram:AssociateResourceShare`和 `ram:DisassociateResourceShare`許可，才能成功與其他 帳戶共用資源。

**第 3 版**  
*具名資源方法：*透過映射具有一個 AWS RAM 資源共享的多個跨帳戶許可授予來最佳化 AWS RAM 資源共享的數量。使用者不需要額外的許可。  
*LF-TBAC 方法：*Lake Formation 使用 AWS RAM 進行跨帳戶授予。使用者必須將 glue：ShareResource 陳述式新增至`glue:PutResourcePolicy`許可。收件人必須接受來自 的資源共用邀請 AWS RAM。  
*更新版本的優勢： *支援下列功能：  
+ 允許與外部帳戶中的 IAM 主體明確共用資源。

  如需詳細資訊，請參閱[授予 Data Catalog 資源的許可](granting-catalog-permissions.md)。
+ 使用 LF-TBAC 方法對 Organizations 或組織單位 (OUs) 啟用跨帳戶共用。
+ 移除維護跨帳戶授與額外 AWS Glue 政策的額外負荷。
*更新版本時的考量：*當您使用 LF-TBAC 方法共用資源時，如果授予者使用低於第 3 版的版本，且收件人使用第 3 版或更新版本，則授予者會收到下列錯誤訊息：「無效的跨帳戶授予請求。消費者帳戶可選擇加入跨帳戶版本：v3。請將 `CrossAccountVersion` 中的 更新`DataLakeSetting`為最低版本 v3 （服務：AmazonDataCatalog；狀態碼：400；錯誤碼： InvalidInputException)"。不過，如果授予者使用第 3 版，且收件人使用第 1 版或第 2 版，則使用 LF 標籤的跨帳戶授予會順利通過。  
使用具名資源方法進行的跨帳戶授予在不同版本之間相容。即使授予者帳戶使用較舊版本 （第 1 版或第 2 版） 且收件人帳戶使用較新版本 （第 3 版或更高版本），跨帳戶存取功能也能順暢運作，而不會發生任何相容性問題或錯誤。  
若要直接與另一個帳戶中的 IAM 主體共用資源，只有授予者需要使用第 3 版。  
使用 LF-TBAC 方法進行的跨帳戶授予需要使用者在帳戶中擁有 AWS Glue Data Catalog 資源政策。當您更新到第 3 版時，LF-TBAC 授予會使用 AWS RAM。若要允許以 AWS RAM 為基礎的跨帳戶授予成功，您必須將 `glue:ShareResource`陳述式新增至現有的 Data Catalog 資源政策，如 [使用 AWS Glue和 Lake Formation 管理跨帳戶許可](hybrid-cross-account.md)一節所示。

**第 4 版**  
授予者需要第 4 版或更新版本，才能在混合存取模式中共用 Data Catalog 資源，或在聯合目錄中共用物件。

**第 5 版**  
跨帳戶第 5 版增強了跨帳戶資源共用功能，可讓您與另一個帳戶共用不限數量的資料表，消除每個資源類型的先前資源關聯限制。若要開始使用，請透過 Lake Formation 主控台或 API 升級至跨帳戶版本 5。任何新的跨帳戶許可授予都會自動在資源共用中使用萬用字元模式，而不是個別的資源關聯。所有現有的跨帳戶共用都會繼續運作，而且所有現有的 Lake Formation APIs仍然相容。  
*更新版本的優勢：*跨帳戶 v5 可增強跨帳戶共用，讓您可以跨帳戶共用數十萬個資料表。  
*更新版本時的考量：*第 5 版升級之後的新授予會將萬用字元資源模式新增至現有的 AWS Resource Manager 資源共用，或使用萬用字元模式建立新的共用。一旦升級至第 5 版，就不支援降級。

## 最佳化 AWS RAM 資源共用
<a name="optimize-version"></a>

跨帳戶授與的新版本 （第 2 版及更高版本） 會最佳化利用 AWS RAM 容量來最大化跨帳戶用量。當您與外部 AWS 帳戶 或 IAM 主體共用資源時，Lake Formation 可能會建立新的資源共用，或將資源與現有共用建立關聯。透過與現有共享建立關聯，Lake Formation 可減少消費者需要接受的資源共享邀請數量。第 5 版使用萬用字元型資源模式，而不是個別資源關聯，進一步最佳化 RAM 用量，進而大幅減少每個資源共享的資源關聯。

## 透過 TBAC 啟用 AWS RAM 共用或直接與委託人共用資源
<a name="ram-tbac-direct-iam-version"></a>

若要直接與另一個帳戶中的 IAM 主體共用資源，或啟用與 Organizations 或組織單位的 TBAC 跨帳戶共用，您需要將**跨帳戶版本設定**更新為第 3 版。如需 AWS RAM 資源限制的詳細資訊，請參閱 [跨帳戶資料共用最佳實務和考量事項](cross-account-notes.md)。

### 更新跨帳戶版本設定所需的許可
<a name="req-permissions-version-update"></a>

 如果跨帳戶許可授予者具有`AWSLakeFormationCrossAccountManager`受管 IAM 政策許可，則跨帳戶許可授予者角色或委託人不需要額外的許可設定。不過，如果跨帳戶授予者未使用 受管政策，則授予者角色或委託人應具有下列 IAM 許可，才能讓跨帳戶授予的新版本成功。

------
#### [ JSON ]

****  

```
  
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
         "ram:AssociateResourceShare",
         "ram:DisassociateResourceShare",
         "ram:GetResourceShares"
       ],
     "Resource": "*",
     "Condition": {
       "StringLike": {
         "ram:ResourceShareName": "LakeFormation*"
        }
      }
    }
  ]
}
```

------

## 啟用新版本
<a name="version-update-steps"></a>

請依照下列步驟，透過 AWS Lake Formation 主控台或 更新**跨帳戶版本設定** AWS CLI。

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

1. 在**資料目錄**設定頁面的**跨帳戶版本設定**下，選擇**第 2** 版、**第 3** 版、**第 4** 版或**第 5** 版。如果您選取第 **1 版**，Lake Formation 將使用預設資源共用模式。  
![\[畫面顯示帳戶中所有 LF 標籤的許可。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/cross-account-version-setting.png)

1. 選擇**儲存**。

------
#### [ AWS Command Line Interface (AWS CLI) ]

使用 `put-data-lake-settings` AWS CLI 命令來設定 `CROSS_ACCOUNT_VERSION` 參數。接受的值為 1、2、3、4 和 5。

```
aws lakeformation put-data-lake-settings --region us-east-1 --data-lake-settings file://settings
{
    "DataLakeAdmins": [
        {
            "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/test"
        }
    ],
    "CreateDatabaseDefaultPermissions": [],
    "CreateTableDefaultPermissions": [],
    "Parameters": {
        "CROSS_ACCOUNT_VERSION": "3"
    }
}
```

------

**重要**  
選擇**第 2** 版或第 **3 版**後，所有新的**具名資源**授權都會經過新的跨帳戶授權模式。若要以最佳方式使用現有跨帳戶共用的 AWS RAM 容量，建議您撤銷使用較舊版本進行的授予，並在新模式中重新授予。

# 從外部帳戶跨 AWS 帳戶 或 IAM 主體共用 Data Catalog 資料表和資料庫
<a name="cross-account-data-share-steps"></a>

本節包含如何將 Data Catalog 資源的跨帳戶許可授予外部 AWS 帳戶、IAM 主體、 AWS 組織或組織單位的指示。授予操作會自動共用這些資源。

**Topics**
+ [使用標籤型存取控制進行資料共用](cross-account-TBAC.md)
+ [使用具名資源方法的跨帳戶資料共用](cross-account-named-resource.md)

# 使用標籤型存取控制進行資料共用
<a name="cross-account-TBAC"></a>

AWS Lake Formation 標籤型存取控制 (LF-TBAC) 是一種授權策略，可根據屬性定義許可。下列步驟說明如何使用 LF 標籤授予跨帳戶許可。

**在生產者/授權方帳戶上設定必要項目**

1. 新增 LF 標籤。

   1. 以資料湖管理員或 LF 標籤建立者身分登入 Lake Formation 主控台。

   1. 在左側導覽列中，選擇**許可**，以及 **LF 標籤和許可**。

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

      如需建立 LF 標籤的詳細說明，請參閱 [建立 LF 標籤](TBAC-creating-tags.md)。

1. 授予 **描述**和/或**關聯**許可 **LF-Tag 鍵值**對至您帳戶或外部帳戶中的 IAM 主體。

   授予 **LF-Tag 鍵/值**對的許可可讓主體檢視 LF-Tag，並將其指派給 Data Catalog 資源 （資料庫、資料表和資料欄）。

1. 接著，資料湖管理員或具有**關聯**許可的 IAM 主體可以將 LF 標籤指派給資料庫、資料表或資料欄。如需詳細資訊，請參閱[將 LF 標籤指派給 Data Catalog 資源](TBAC-assigning-tags.md)。

1. 接著，使用 LF-Tag 表達式將資料許可授予外部帳戶。這可讓許可的承授者或收件人存取以相同 （多個） 金鑰和 （多個） 值標記的 Data Catalog 資源。

   1. 在導覽窗格中，選擇**許可**和**資料許可**。

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

   1. 在**授予許可**頁面上，針對**委託人**，選擇**外部帳戶**，然後輸入委託人的承授者 AWS 帳戶 ID 或 IAM 角色，或針對委託人 （委託人 ARN) 輸入 Amazon Resource Name (ARN)，如果是直接跨帳戶授予外部委託人。輸入帳戶 ID 後，您需要按 **Enter**。  
![\[具有指定外部帳戶和 LF 標籤鍵/值對的授予許可畫面。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/cross-acct-grant-tags.png)

   1. 針對 **LF 標籤或目錄資源**，選擇**符合 LF 標籤的資源 （建議）**。

      1. 選擇選項 **LF-Tag 鍵/值對**或**儲存的 LF-Tag 表達式** 。

      1. **如果您選擇 **LF-Tag 鍵/值對**，請輸入與要與承授者帳戶共用之 Data Catalog 資源相關聯的 LF-Tag 鍵和值 (LF-Tag)**。 ****

         被授予者在 LF-Tag 表達式中獲指派相符 LF-Tag 之 Data Catalog 資源的許可。如果 LF-Tag 表達式指定每個標籤索引鍵的多個值，則任何一個標籤值都可以相符。

   1. 選擇資料庫層級或資料表層級許可，在符合 LF-Tag 表達式的資源上授予 。
**重要**  
由於資料湖管理員必須將共用資源的許可授予承授者帳戶中的主體，因此您必須一律使用授予選項授予跨帳戶許可。

      如需詳細資訊，請參閱[使用主控台授予 LF-Tag 許可](TBAC-granting-tags-console.md)。
**注意**  
收到直接跨帳戶授予的委託人將沒有**可授予許可**選項。

**在接收/承授者帳戶上設定必要**

1. 以消費者帳戶的資料湖管理員身分登入 Lake Formation 主控台。

1.  接著，接收消費者帳戶中的資源共享。

   1.  開啟 AWS RAM 主控台。

   1.  在導覽窗格中，**於與我共用**下，選擇**資源共用**。

   1.  選取資源共用，選擇**接受資源共用**。

1. 當您與其他帳戶共用資源時，資源仍屬於生產者帳戶，且在 Athena 主控台中看不到。若要在 Athena 主控台中顯示資源，您需要建立指向共用資源的資源連結。如需建立資源連結的說明，請參閱 [建立共用 Data Catalog 資料表的資源連結](create-resource-link-table.md) 和 [建立共用 Data Catalog 資料庫的資源連結](create-resource-link-database.md)

   1.  在資料目錄下選擇**資料庫**或**資料表**。

   1. 在資料庫/資料表頁面上，選擇**建立**、**資源連結** 。

   1. 為資料庫資源連結輸入下列資訊：
      + **資源連結名稱** – 資源連結的唯一名稱。
      + **目的地目錄** – 您要建立資源連結的目錄。
      + **共用資料庫區域** – 如果您要在不同區域中建立資源連結，則與您共用的資料庫區域。
      + **共用資料庫** – 選擇共用資料庫。
      + **共用資料庫的目錄 ID** – 輸入共用資料庫的目錄 ID。

   1.  選擇**建立**。您可以在資料庫清單中看到新建立的資源連結。

   同樣地，您可以建立共用資料表的資源連結。

1. 現在授予您要共用資源之 IAM 主體的資源連結**描述**許可。

   1. 在**資料庫/資料表**頁面上，選取資源連結，然後在**動作**功能表中選擇**授予**。

   1. 在**授予許可**區段中，選取 **IAM 使用者和角色**。

   1. 選擇您要授予資源連結存取權的 IAM 角色。

   1. 在**資源連結**許可區段中，選取**描述**。

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

1. 接下來，將 **LF-Tag 鍵值許可**授予取用者帳戶中的主體。

   您應該可以在 Lake Formation 主控台的**許可**、LF 標籤**和許可下，找到消費者帳戶中與您共用的 LF 標籤**。您可以將從授予者共用的標籤與從授予者帳戶共用的資源建立關聯，其中包括：資料庫、資料表和資料欄。您可以進一步將資源的許可授予其他委託人。  
![\[畫面顯示帳戶中 LF-Tags 的許可。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/lf-tag-permissions.png)

   1.  在導覽窗格**的許可**、**資料許可**下，選擇**授予**。

   1.  在**授予許可**頁面上，選擇 **IAM 使用者和角色**。

   1. 接著，選擇您帳戶中的 IAM 使用者和角色，以授予共用資料庫/資料表的存取權。

   1. 接著，針對 **LF 標籤或目錄資源**，選擇**符合 LF 標籤的資源**。

   1.  接著，選擇與您共用之 LF 標籤的金鑰和值。

   1.  接著，選擇您要授予 IAM 使用者和角色的資料庫和資料表許可。您也可以選擇**可授予許可**，讓 IAM 使用者和角色將許可授予其他使用者/角色。

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

   1. 您可以在 Lake Formation 主控台的資料許可下檢視**許可**授予。

# 使用具名資源方法的跨帳戶資料共用
<a name="cross-account-named-resource"></a>

您可以直接將許可授予另一個 AWS 帳戶中的委託人，或授予外部 AWS 帳戶 或 AWS Organizations。將 Lake Formation 許可授予 Organizations 或組織單位等同於將許可授予該組織或組織單位 AWS 帳戶 中的每個單位。

當您將許可授予外部帳戶或組織時，您必須包含**可授予許可**選項。只有外部帳戶中的資料湖管理員可以存取共用資源，直到管理員將共用資源的許可授予外部帳戶中的其他主體為止。

**注意**  
從外部帳戶將許可直接授予 IAM 主體時，不支援**可授予**的許可選項。

遵循 中的指示[使用具名資源方法授與資料庫許可](granting-database-permissions.md)，使用具名資源方法授予跨帳戶許可。

 下列影片示範如何使用 Lake Formation 與 AWS 組織共用資料。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/S-Mdcmq6oPM?controls=0&/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/S-Mdcmq6oPM?controls=0&)


# 授予與您帳戶共用之資料庫或資料表的許可
<a name="regranting-shared-resources"></a>

與您的帳戶 AWS 共用屬於另一個 AWS 帳戶的 Data Catalog 資源之後，身為資料湖管理員，您可以將共用資源的許可授予帳戶中的其他主體。不過，您無法將資源的許可授予其他 AWS 帳戶或組織。

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

**授予共用資料庫的許可 （命名資源方法、主控台）**
+ 請遵循中的說明進行[使用具名資源方法授與資料庫許可](granting-database-permissions.md) 在 **LF 標籤或目錄資源**下的**資料庫**清單中，確保您選取外部帳戶中的資料庫，而不是資料庫的資源連結。

  如果您在資料庫清單中看不到資料庫，請確定您已接受資料庫的 AWS Resource Access Manager (AWS RAM) 資源共享邀請。如需詳細資訊，請參閱[從 接受資源共享邀請 AWS RAM](accepting-ram-invite.md)。

  此外，對於 `CREATE_TABLE`和 `ALTER`許可，請遵循 中的指示[授予資料位置許可 （相同帳戶）](granting-location-permissions-local.md)，並務必在**註冊帳戶位置**欄位中輸入擁有的帳戶 ID。

**授予共用資料表的許可 （命名資源方法、主控台）**
+ 請遵循中的說明進行[使用具名資源方法授予資料表許可](granting-table-permissions.md) 在 **LF 標籤或目錄資源**下的**資料庫**清單中，請確定您在外部帳戶中選取資料庫，而不是資料庫的資源連結。

  如果您在資料表清單中看不到資料表，請確定您已接受 AWS RAM 資料表的資源共用邀請。如需詳細資訊，請參閱[從 接受資源共享邀請 AWS RAM](accepting-ram-invite.md)。

  此外，對於 `ALTER`許可，請遵循 中的指示[授予資料位置許可 （相同帳戶）](granting-location-permissions-local.md)，並務必在**註冊帳戶位置**欄位中輸入擁有的帳戶 ID。

**若要授予共用資源的許可 (LF-TBAC 方法、主控台）**
+ 請遵循中的說明進行[授予 Data Catalog 許可](granting-catalog-perms-TBAC.md#granting-cat-perms-TBAC-console) 在 **LF 標籤或目錄資源**區段中，授予外部帳戶授予您帳戶的確切 LF 標籤表達式，或該表達式的子集。

  例如，如果外部帳戶使用授予選項將 LF-Tag 運算式授予`module=customers AND environment=production`您的帳戶，則身為資料湖管理員，您可以將該相同運算式或 `module=customers` `environment=production` 授予您帳戶中的委託人。您只能授予透過 LF-Tag 表達式授予資源的相同或一部分 Lake Formation 許可 （例如 `ALTER`、 `SELECT`等）。

**授予共用資料表的許可 （命名資源方法） AWS CLI**
+ 輸入與以下相似的命令。在此範例中：
  +  AWS 您的帳戶 ID 為 1111-2222-3333。
  + 擁有資料表並將其授予您帳戶的 帳戶為 1234-5678-9012。
  + 正在共用資料表上將 `SELECT`許可授予`pageviews`使用者 `datalake_user1`。該使用者是您帳戶中的委託人。
  + `pageviews` 資料表位於 `analytics`資料庫中，其為帳戶 1234-5678-9012 所擁有。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "Table": {"CatalogId":"123456789012", "DatabaseName":"analytics", "Name":"pageviews"}}'
  ```

  請注意，必須在 `resource`引數的 `CatalogId` 屬性中指定擁有的帳戶。

# 授予資源連結許可
<a name="granting-link-permissions"></a>

請依照下列步驟，將一或多個資源連結的 AWS Lake Formation 許可授予您 AWS 帳戶中的委託人。

建立資源連結之後，只有您可以檢視和存取它。（這假設未針對資料庫啟用**此資料庫中的新資料表僅使用 IAM 存取控制**。) 若要允許帳戶中的其他主體存取資源連結，請授予至少 `DESCRIBE`許可。

**重要**  
授予資源連結的許可不會授予目標 （連結） 資料庫或資料表的許可。您必須分別授予目標的許可。

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

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

**使用 Lake Formation 主控台授予資源連結許可**

1. 執行以下任意一項：
   + 對於資料庫資源連結，請遵循 中的步驟[使用具名資源方法授與資料庫許可](granting-database-permissions.md)。 執行下列動作：

     1.  從 Data Catalog， **Databases** 下的資料庫清單中選取資源連結。

     1.  選擇**授予**以開啟**授予許可**頁面。

     1.  指定要授予許可的委託人。

     1.  **目錄**和**資料庫**欄位會填入。
   + 對於資料表資源連結，請依照 中的步驟[使用具名資源方法授予資料表許可](granting-table-permissions.md)執行下列動作：

     1.  從 Data Catalog， **Tables** 下的資料表清單中選取資源連結。

     1. 開啟**授予許可**頁面。

     1.  指定主體。

     1.  **目錄**、**資料庫、****資料表**欄位會填入。

     1.  指定主體。

1. 在**許可**下，選取要授予的許可。或者，選取可授予的許可。  
![\[許可區段包含單一圖磚。圖磚具有一組核取方塊，用於授予資源連結許可。核取方塊包括捨棄和描述。在該群組下方是可授予許可的另一個相同核取方塊群組。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/grant-resource-link-permissions-TBAC.png)

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

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

**使用 授予資源連結許可 AWS CLI**
+ 執行 `grant-permissions`命令，指定資源連結做為資源。  
**Example**  

  此範例`DESCRIBE`會授予`issues` AWS 帳戶 1111-2222-3333 `incidents-link` 中資料庫中資料表資源連結`datalake_user1`上的使用者。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DESCRIBE" --resource '{ "Table": {"DatabaseName":"issues", "Name":"incidents-link"}}'
  ```

------

**另請參閱:**  
 [建立資源連結](creating-resource-links.md) 
 [Lake Formation 許可參考](lf-permissions-reference.md) 

# 存取共用資料表的基礎資料
<a name="cross-account-read-data"></a>

假設 AWS 帳戶 A 與帳戶 B 共用 Data Catalog 資料表，例如，`SELECT`透過將資料表上的授予選項授予帳戶 B。若要讓帳戶 B 中的委託人能夠讀取共用資料表的基礎資料，必須符合下列條件：
+ 帳戶 B 中的資料湖管理員必須接受共用。（如果帳戶 A 和 B 位於相同組織中，或使用 Lake Formation 標籤型存取控制方法進行授予，則不需要這麼做。)
+ 資料湖管理員必須向委託人重新授予共用資料表上帳戶 A 的 Lake Formation `SELECT`許可。
+ 委託人必須在資料表、包含它的資料庫以及帳戶 A Data Catalog 上具有下列 IAM 許可。
**注意**  
在下列 IAM 政策中：  
以 AWS 帳戶 A 的帳戶 ID 取代 *<account-id-A>*。
將 *<region>* 取代為有效的區域。
將 *<database>* 取代為帳戶 A 中包含共用資料表的資料庫名稱。
將 *<table>* 取代為共用資料表的名稱。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "glue:GetTable",
              "glue:GetTables",
              "glue:GetPartition",
              "glue:GetPartitions",
              "glue:BatchGetPartition",
              "glue:GetDatabase",
              "glue:GetDatabases"
             ],
             "Resource": [
              "arn:aws:glue:us-east-1:111122223333:table/<database>/<table>",
              "arn:aws:glue:us-east-1:111122223333:database/<database>",
              "arn:aws:glue:us-east-1:111122223333:catalog"
             ]
          },
          {
            "Effect": "Allow",
            "Action": [
              "lakeformation:GetDataAccess"
             ],
            "Resource": [
              "*"
             ]
      }
     ]
  }
  ```

------

**另請參閱:**  
[從 接受資源共享邀請 AWS RAM](accepting-ram-invite.md)

# 跨帳戶 CloudTrail 記錄
<a name="cross-account-logging"></a>

Lake Formation 提供對資料湖中資料的所有跨帳戶存取的集中式稽核線索。當收件人 AWS 帳戶存取共用資料表中的資料時，Lake Formation 會將 CloudTrail 事件複製到擁有帳戶的 CloudTrail 日誌。複製的事件包括透過整合服務查詢資料，例如 Amazon Athena 和 Amazon Redshift Spectrum，以及依AWS Glue任務存取資料。

Data Catalog 資源上跨帳戶操作的 CloudTrail 事件也會類似地複製。

身為資源擁有者，如果您在 Amazon S3 中啟用物件層級記錄，您可以執行將 S3 CloudTrail 事件與 Lake Formation CloudTrail 事件聯結的查詢，以判斷已存取 S3 儲存貯體的帳戶。

**Topics**
+ [在跨帳戶 CloudTrail 日誌中包含主體身分](#cross-account-logging-optin)
+ [查詢 Amazon S3 跨帳戶存取的 CloudTrail 日誌](#cross-account-logging-s3)

## 在跨帳戶 CloudTrail 日誌中包含主體身分
<a name="cross-account-logging-optin"></a>

根據預設，跨帳戶 CloudTrail 事件會新增至共用資源收件人的日誌，並複製到資源擁有者的日誌，只包含外部帳戶主體的 AWS 主體 ID，而不是主體的人類可讀取 Amazon Resource Name (ARN) （主體 ARN)。在信任的界限內共用資源時，例如在同一個組織或團隊內，您可以選擇在 CloudTrail 事件中包含委託人 ARN。然後，資源擁有者帳戶可以追蹤收件人帳戶中存取其擁有資源的主體。

**重要**  
身為共用資源收件人，若要在您自己的 CloudTrail 日誌中查看事件中的委託人 ARN，您必須選擇與擁有者帳戶共用委託人 ARN。  
如果資料存取是透過資源連結進行，則會在共用資源收件人帳戶中記錄兩個事件：一個用於資源連結存取，另一個用於目標資源存取。資源連結存取的事件*包含*委託人 ARN。目標資源存取的事件不包含沒有選擇加入的委託人 ARN。資源連結存取事件不會複製到擁有者帳戶。

以下是預設跨帳戶 CloudTrail 事件 （未選擇加入） 的摘錄。執行資料存取的帳戶為 1111-2222-3333。這是顯示在呼叫帳戶和資源擁有者帳戶中的日誌。Lake Formation 會在跨帳戶案例中的兩個帳戶中填入日誌。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSAccount",
        "principalId": "AROAQGFTBBBGOBWV2EMZA:GlueJobRunnerSession",
        "accountId": "111122223333"
    },
    "eventSource": "lakeformation.amazonaws.com",
    "eventName": "GetDataAccess",
...
...
    "additionalEventData": {
        "requesterService": "GLUE_JOB",
        "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-G13T0Rmng2"
    },
...
}
```

身為共用資源取用者，當您選擇加入委託人 ARN 時，摘錄會變成以下內容。`lakeFormationPrincipal` 欄位代表透過 Amazon Athena、Amazon Redshift Spectrum 或 AWS Glue任務執行查詢的最終角色或使用者。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSAccount",
        "principalId": "AROAQGFTBBBGOBWV2EMZA:GlueJobRunnerSession",
        "accountId": "111122223333"
    },
    "eventSource": "lakeformation.amazonaws.com",
    "eventName": "GetDataAccess",
...
...
    "additionalEventData": {
        "requesterService": "GLUE_JOB",
        "lakeFormationPrincipal": "arn:aws:iam::111122223333:role/ETL-Glue-Role",
        "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-G13T0Rmng2"
    },
...
}
```

**選擇在跨帳戶 CloudTrail 日誌中包含主體 ARNs**

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

   以`Administrator`使用者身分登入，或使用 IAM `Administrator Access` 政策的使用者登入。

1. 在導覽窗格中，選擇**設定**。

1. 在**資料目錄設定**頁面上，於**資源擁有者****的預設許可 AWS CloudTrail**區段中，輸入一或多個 AWS 資源擁有者帳戶 IDs。

   在每個帳戶 ID 之後按 **Enter**。

1. 選擇**儲存**。

   現在，共用資源收件人和資源擁有者的日誌中存放的跨帳戶 CloudTrail 事件都包含主體 ARN。

## 查詢 Amazon S3 跨帳戶存取的 CloudTrail 日誌
<a name="cross-account-logging-s3"></a>

身為共用資源擁有者，您可以查詢 S3 CloudTrail 日誌，以判斷已存取 Amazon S3 儲存貯體的帳戶 （前提是您在 Amazon S3 中啟用物件層級記錄）。這僅適用於您向 Lake Formation 註冊的 S3 位置。如果共用資源消費者選擇在 Lake Formation CloudTrail 日誌中包含主體 ARNs，您可以判斷存取儲存貯體的角色或使用者。

使用 執行查詢時 Amazon Athena，您可以在工作階段名稱屬性上加入 Lake Formation CloudTrail 事件和 S3 CloudTrail 事件。查詢也可以篩選 上的 Lake Formation 事件`eventName="GetDataAccess"`，以及 `eventName="Get Object"`或 上的 S3 事件`eventName="Put Object"`。

以下是 Lake Formation 跨帳戶 CloudTrail 事件的摘錄，其中已註冊 S3 位置中的資料已存取。

```
{
  "eventSource": "lakeformation.amazonaws.com",
  "eventName": "GetDataAccess",
  ..............
  ..............
  "additionalEventData": {
    "requesterService": "GLUE_JOB",
    "lakeFormationPrincipal": "arn:aws:iam::111122223333:role/ETL-Glue-Role",
    "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-B8JSAjo5QA"
   }
}
```

`lakeFormationRoleSessionName` 索引鍵值 `AWSLF-00-GL-111122223333-B8JSAjo5QA`可與 S3 CloudTrail 事件的索引`principalId`鍵中的工作階段名稱聯結。以下是 S3 CloudTrail 事件的摘錄。它會顯示工作階段名稱的位置。

```
{
   "eventSource": "s3.amazonaws.com",
   "eventName": "Get Object"
   ..............
   ..............
   "principalId": "AROAQSOX5XXUR7D6RMYLR:AWSLF-00-GL-111122223333-B8JSAjo5QA",
   "arn": "arn:aws:sets::111122223333:assumed-role/Deformationally/AWSLF-00-GL-111122223333-B8JSAjo5QA",  
   "session Context": {
     "session Issuer": {
       "type": "Role",
       "principalId": "AROAQSOX5XXUR7D6RMYLR",
       "arn": "arn:aws:iam::111122223333:role/aws-service-role/lakeformation.amazonaws.com/Deformationally",
       "accountId": "111122223333",
       "user Name": "Deformationally"
     },
   ..............
   ..............
}
```

工作階段名稱的格式如下所示：

```
AWSLF-<version-number>-<query-engine-code>-<account-id->-<suffix>
```

**`version-number`**  
此格式的版本，目前為 `00`。如果工作階段名稱格式變更，下一個版本將為 `01`。

**`query-engine-code`**  
指出存取資料的實體。目前的值為：      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/cross-account-logging.html)

**`account-id`**  
從 Lake Formation 請求憑證 AWS 的帳戶 ID。

**`suffix`**  
隨機產生的字串。

# 使用 AWS Glue和 Lake Formation 管理跨帳戶許可
<a name="hybrid-cross-account"></a>

您可以使用 AWS Glue或 授予 Data Catalog 資源和基礎資料的跨帳戶存取權 AWS Lake Formation。

在 中AWS Glue，您可以透過建立或更新 Data Catalog 資源政策來授予跨帳戶許可。在 Lake Formation 中，您可以使用 Lake Formation 許可模型和 `Grant Permissions` API 操作來授予跨帳戶`GRANT/REVOKE`許可。

**提示**  
我們建議僅依賴 Lake Formation 許可來保護您的資料湖。

您可以使用 Lake Formation 主控台或 AWS Resource Access Manager (AWS RAM) 主控台來檢視 Lake Formation 跨帳戶授予。不過，這些主控台頁面不會顯示 AWS Glue Data Catalog 資源政策授予的跨帳戶許可。同樣地，您可以使用AWS Glue主控台**的設定**頁面檢視 Data Catalog 資源政策中的跨帳戶授予，但該頁面不會顯示使用 Lake Formation 授予的跨帳戶許可。

為了確保您在檢視和管理跨帳戶許可時不會錯過任何授予，Lake Formation 和 AWS Glue會要求您執行下列動作，以指出您知道並允許 Lake Formation 和 進行跨帳戶授予AWS Glue。

**使用 AWS Glue Data Catalog 資源政策授予跨帳戶許可時**  
如果您的帳戶 （授與者帳戶或生產者帳戶） 未授予使用 AWS RAM 來共用資源的跨帳戶授權，您可以像往常一樣在 中儲存 Data Catalog 資源政策AWS Glue。不過，如果已進行涉及 AWS RAM 資源共用的授予，您必須執行下列其中一項動作，以確保成功儲存資源政策：
+ 當您在AWS Glue主控台**的設定**頁面上儲存資源政策時，主控台會發出提醒，指出政策中的許可除了使用 Lake Formation 主控台授予的任何許可之外。您必須選擇**繼續**以儲存政策。
+ 使用 `glue:PutResourcePolicy` API 操作儲存資源政策時，您必須將 `EnableHybrid` 欄位設定為 '`TRUE`' （類型 = 字串）。

  若要更新現有的資源政策，請先使用 `glue:GetResourcePolicy` API 操作擷取您目前的政策，然後視需要修改，再呼叫 `glue:PutResourcePolicy`。
**注意**  
建立跨帳戶存取 AWS Glue 的資源政策時，請僅授予特定使用案例所需的最低許可。

  如需詳細資訊，請參閱《 *AWS Glue 開發人員指南*》中的 [PutResourcePolicy 動作 (Python： put\$1resource\$1policy)](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-security.html#aws-glue-api-jobs-security-PutResourcePolicy)。

**使用 Lake Formation 命名的資源方法授予跨帳戶許可時**  
如果您的帳戶 （生產者帳戶） 中沒有 Data Catalog 資源政策，則 Lake Formation 會如往常一樣進行跨帳戶授予。不過，如果 Data Catalog 資源政策存在，您必須將下列陳述式新增至其中，以允許跨帳戶授予在使用具名資源方法進行時成功。將 *<region>* 取代為有效的區域名稱，並將 *<account-id>* 取代為 AWS 您的帳戶 ID （生產者帳戶 ID)。

```
    {
      "Effect": "Allow",
      "Action": [
        "glue:ShareResource"
      ],
      "Principal": {"Service": [
        "ram.amazonaws.com"
      ]},
      "Resource": [
        "arn:aws:glue:<region>:<account-id>:table/*/*",
        "arn:aws:glue:<region>:<account-id>:database/*",
        "arn:aws:glue:<region>:<account-id>:catalog"
      ]
    }
```

如果沒有此額外陳述式，Lake Formation 授予會成功，但會遭到封鎖 AWS RAM，而且收件人帳戶無法存取授予的資源。

**重要**  
使用 Lake Formation 標籤型存取控制 (LF-TBAC) 方法進行跨帳戶授予時，您必須擁有至少具有 中指定許可的 Data Catalog 資源政策[先決條件](cross-account-prereqs.md)。

**另請參閱:**  
[中繼資料存取控制](access-control-metadata.md) （討論具名資源方法與 Lake Formation 標籤型存取控制 (LF-TBAC) 方法）。
[檢視共用的 Data Catalog 資料表和資料庫](viewing-available-shared-resources.md)
《 *AWS Glue 開發人員指南*》中的[在AWS Glue主控台上使用資料目錄設定](https://docs.aws.amazon.com/glue/latest/dg/console-data-catalog-settings.html) 
《 *AWS Glue 開發人員指南*》中的[授予跨帳戶存取權](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) （適用於範例 Data Catalog 資源政策）

# 使用 GetResourceShares API 操作檢視所有跨帳戶授予
<a name="cross-account-getresourcepolicies"></a>

如果您的企業使用 AWS Glue Data Catalog 資源政策和 Lake Formation 授予來授予跨帳戶許可，在同一個位置檢視所有跨帳戶授予的唯一方法是使用 `glue:GetResourceShares` API 操作。

當您使用具名資源方法跨帳戶授予 Lake Formation 許可時， AWS Resource Access Manager (AWS RAM) 會建立 AWS Identity and Access Management (IAM) 資源政策，並將其存放在 AWS 您的帳戶中。政策會授予存取 資源所需的許可。 會為每個跨帳戶授予 AWS RAM 建立個別的資源政策。您可以使用 `glue:GetResourceShares` API 操作來檢視所有這些政策。

**注意**  
此操作也會傳回 Data Catalog 資源政策。不過，如果您在 Data Catalog 設定中啟用中繼資料加密，而且您沒有 AWS KMS 金鑰的許可，則操作不會傳回 Data Catalog 資源政策。

**檢視所有跨帳戶授予**
+ 輸入下列 AWS CLI 命令。

  ```
  aws glue get-resource-policies
  ```

以下是範例資源政策，當您`db1`將`t`資料庫中資料表的許可授予 AWS 帳戶 1111-2222-3333 時，該政策會 AWS RAM 建立和存放。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "glue:GetTable",
         "glue:GetTables",
         "glue:GetTableVersion",         
         "glue:GetTableVersions",
         "glue:GetPartition", 
         "glue:GetPartitions",
         "glue:BatchGetPartition",
         "glue:SearchTables"
       ],
      "Principal": {"AWS": [
        "111122223333"
      ]},
      "Resource": [
      "arn:aws:glue:us-east-1:111122223333:table/db1/t"
     ]
    }
  ]
}
```

------

**另請參閱：**  
《 *AWS Glue 開發人員指南*》中的 [GetResourceShares 動作 (Python：get\$1resource\$1policies)](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-security.html#aws-glue-api-jobs-security-GetResourcePolicies) 

# 存取和檢視共用的 Data Catalog 資料表和資料庫
<a name="viewing-shared-resources"></a>

對於資料湖管理員和已授予許可的主體，與 AWS 您的帳戶共用的資源會顯示在 Data Catalog 中，就像是帳戶中的資源一樣。主控台會顯示擁有資源的帳戶。

您可以使用 Lake Formation 主控台檢視與您的帳戶共用的資源。您也可以使用 AWS Resource Access Manager (AWS RAM) 主控台檢視與您的帳戶共用的資源，以及使用具名資源方法與其他 AWS 帳戶共用的資源。

**重要**  
當有人使用具名資源方法將 Data Catalog 資源的跨帳戶許可授予您的帳戶或 AWS 組織時，Lake Formation 會使用 AWS Resource Access Manager (AWS RAM) 服務來共用資源。如果您的帳戶與授予帳戶位於同一個 AWS 組織中，則共用資源可立即供您使用。  
不過，如果您的帳戶不在同一個組織中， 會 AWS RAM 傳送邀請給您的帳戶，以接受或拒絕資源共享。然後，若要讓共用資源可用，您帳戶中的資料湖管理員必須使用 AWS RAM 主控台或 CLI 來接受邀請。  
如果有 AWS RAM 資源共享邀請等待接受，Lake Formation 主控台會顯示提醒。只有獲授權檢視 AWS RAM 邀請的使用者才會收到提醒。

**另請參閱:**  
[跨 AWS 帳戶共用 Data Catalog 資料表和資料庫](sharing-catalog-resources.md)
[Lake Formation 中的跨帳戶資料共用](cross-account-permissions.md)
[存取共用資料表的基礎資料](cross-account-read-data.md)
[中繼資料存取控制](access-control-metadata.md) （如需具名資源方法與用於共用資源的 LF-TBAC 方法的相關資訊。)

**Topics**
+ [從 接受資源共享邀請 AWS RAM](accepting-ram-invite.md)
+ [檢視共用的 Data Catalog 資料表和資料庫](viewing-available-shared-resources.md)

# 從 接受資源共享邀請 AWS RAM
<a name="accepting-ram-invite"></a>

如果與 AWS 您的帳戶共用 Data Catalog 資源，而您的帳戶與共用帳戶不在同一個 AWS 組織中，則在您接受來自 AWS Resource Access Manager () 的資源共用邀請之前，無法存取共用資源AWS RAM。身為資料湖管理員，您必須先查詢 AWS RAM 待定邀請，然後接受邀請。

您可以使用 AWS RAM 主控台、API 或 AWS Command Line Interface (AWS CLI) 來檢視和接受邀請。

**檢視和接受來自 AWS RAM （主控台） 的資源共享邀請**

1. 請確定您具有檢視和接受資源共享邀請的必要 AWS Identity and Access Management (IAM) 許可。

   如需資料湖管理員的建議 IAM 政策的相關資訊，請參閱 [Data Lake 管理員許可](permissions-reference.md#persona-dl-admin)。

1. 請遵循*AWS RAM 《 使用者指南*》中的[接受和拒絕邀請](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared.html#working-with-shared-invitation)中的指示。

**從 AWS RAM (AWS CLI) 檢視和接受資源共享邀請**

1. 請確定您具有檢視和接受資源共享邀請的必要 AWS Identity and Access Management (IAM) 許可。

   如需資料湖管理員的建議 IAM 政策的相關資訊，請參閱 [Data Lake 管理員許可](permissions-reference.md#persona-dl-admin)。

1. 輸入下列命令以檢視擱置中的資源共用邀請。

   ```
   aws ram get-resource-share-invitations
   ```

   輸出格式應類似以下內容。

   ```
   {
       "resourceShareInvitations": [
           {
               "resourceShareInvitationArn": "arn:aws:ram:us-east-1:111122223333:resource-share-invitation/a93aa60a-1bd9-46e8-96db-a4e72eec1d9f",
               "resourceShareName": "111122223333-123456789012-uswuU",
               "resourceShareArn": "arn:aws:ram:us-east-1:111122223333:resource-share/2a4ab5fb-d859-4751-84f7-8760b35fc1fe",
               "senderAccountId": "111122223333",
               "receiverAccountId": "123456789012",
               "invitationTimestamp": 1589576601.79,
               "status": "PENDING"
           }
       ]
   }
   ```

   請注意 的狀態`PENDING`。

1. 將`resourceShareInvitationArn`金鑰的值複製到剪貼簿。

1. 將值貼到下列命令中，取代 *<invitation-arn>*，然後輸入命令。

   ```
   aws ram accept-resource-share-invitation --resource-share-invitation-arn <invitation-arn>
   ```

   輸出格式應類似以下內容。

   ```
   {
       "resourceShareInvitations": [
           {
               "resourceShareInvitationArn": "arn:aws:ram:us-east-1:111122223333:resource-share-invitation/a93aa60a-1bd9-46e8-96db-a4e72eec1d9f",
               "resourceShareName": "111122223333-123456789012-uswuU",
               "resourceShareArn": "arn:aws:ram:us-east-1:111122223333:resource-share/2a4ab5fb-d859-4751-84f7-8760b35fc1fe",
               "senderAccountId": "111122223333",
               "receiverAccountId": "123456789012",
               "invitationTimestamp": 1589576601.79,
               "status": "ACCEPTED"
           }
       ]
   }
   ```

   請注意 的狀態`ACCEPTED`。

# 檢視共用的 Data Catalog 資料表和資料庫
<a name="viewing-available-shared-resources"></a>

您可以使用 Lake Formation 主控台或 AWS CLI 來檢視與您的帳戶共用的資源。您也可以使用 AWS Resource Access Manager (AWS RAM) 主控台或 CLI 來檢視與您的帳戶共用的資源，以及您與其他 AWS 帳戶共用的資源。

**使用 Lake Formation 主控台檢視共用資源**

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

   以資料湖管理員或已授予共用資料表許可的使用者身分登入。

1. 若要檢視與 AWS 您的帳戶共用的資源，請執行下列其中一項操作：
   + 若要檢視與您的帳戶共用的資料表，請在導覽窗格中選擇**資料表**。
   + 若要檢視與您的帳戶共用的資料庫，請在導覽窗格中選擇**資料庫**。

   主控台會顯示您帳戶中並與您的帳戶共用的資料庫或資料表清單。對於與您的帳戶共用的資源，主控台會在擁有者 AWS 帳戶 ID 欄 （以下螢幕擷取畫面中的第三個欄） 下方顯示**擁有者的帳戶 ID**。  
![\[資料表頁面顯示資料表的不同擁有者帳戶 IDs。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/tables-with-shared.png)

1. 若要檢視您與其他 AWS 帳戶或組織共用的資源，請在導覽窗格中選擇**資料許可**。

   您共用的資源會列在**資料許可**頁面上，外部帳戶號碼顯示在**委託**人欄中，如下圖所示。  
![\[資料許可頁面顯示您的帳戶已將資料表的許可授予外部帳戶。 AWS 帳戶 ID 位於主體欄下。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/permissions-with-cross.png)

**使用 AWS RAM 主控台檢視共用資源**

1. 請確定您擁有使用 檢視共用資源所需的 AWS Identity and Access Management (IAM) 許可 AWS RAM。

   您至少必須擁有 `ram:ListResources`許可。此許可包含在 AWS 受管政策 中`AWSLakeFormationCrossAccountManager`。

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/ram/home](https://console.aws.amazon.com/ram/home) 開啟 AWS RAM 主控台。

1. 執行以下任意一項：
   + 若要查看您共用的資源，請在導覽窗格中的**我共用**下，選擇**共用資源**。
   + 若要查看與您共用的資源，請在導覽窗格中的**與我共用**下，選擇**共用資源**。

# 建立資源連結
<a name="creating-resource-links"></a>

資源連結是 Data Catalog 物件，其為中繼資料資料庫和資料表的連結，通常是來自其他 AWS 帳戶的共用資料庫和資料表。它們有助於跨所有 AWS 區域啟用資料湖中資料的跨帳戶存取。

**注意**  
Lake Formation 支援跨 AWS 區域查詢 Data Catalog 資料表。您可以在指向不同 AWS 區域中共用資料庫和資料表的區域中建立資源連結，以從任何區域存取 Data Catalog 資料庫和資料表。

**Topics**
+ [資源連結在 Lake Formation 中如何運作](resource-links-about.md)
+ [建立共用 Data Catalog 資料表的資源連結](create-resource-link-table.md)
+ [建立共用 Data Catalog 資料庫的資源連結](create-resource-link-database.md)
+ [AWS Glue APIs中的資源連結處理](resource-links-glue-apis.md)

# 資源連結在 Lake Formation 中如何運作
<a name="resource-links-about"></a>

*資源連結*是 Data Catalog 物件，它是本機或共用資料庫或資料表的連結。建立資料庫或資料表的資源連結後，您可以在任何使用資料庫或資料表名稱的地方使用資源連結名稱。除了您擁有的資料表或與您共用的資料表之外，資料表資源連結也會由 傳回`glue:GetTables()`，並在 Lake Formation 主控台的**資料表**頁面上顯示為項目。資料庫的資源連結會以類似的方式運作。

建立資料庫或資料表的資源連結可讓您執行下列動作：
+ 將不同的名稱指派給 Data Catalog 中的資料庫或資料表。如果不同 AWS 帳戶共用相同名稱的資料庫或資料表，或您帳戶中的多個資料庫具有相同名稱的資料表，這會特別有用。
+ 在指向另一個 AWS 區域的資料庫和資料表的區域中建立資源連結，以從任何區域存取 Data Catalog 資料庫和資料表。您可以使用 Athena、Amazon EMR 在任何區域中使用這些資源連結執行查詢，並執行 AWS Glue ETL Spark 任務，而無需在 Glue Data Catalog 中複製來源資料或中繼資料。
+ 使用 Amazon Athena 和 Amazon Redshift Spectrum 等整合 AWS 服務來執行存取共用資料庫或資料表的查詢。有些整合式服務無法直接跨帳戶存取資料庫或資料表。不過，他們可以存取您帳戶中的資源連結到其他帳戶中的資料庫和資料表。

**注意**  
您不需要建立資源連結，即可在AWS Glue擷取、轉換和載入 (ETL) 指令碼中參考共用資料庫或資料表。不過，若要避免多個 AWS 帳戶共用具有相同名稱的資料庫或資料表時模棱兩可的情況，您可以在叫用 ETL 操作時建立和使用資源連結或指定目錄 ID。

下列範例顯示 Lake Formation **主控台資料表**頁面，其中列出兩個資源連結。資源連結名稱一律以斜體顯示。每個資源連結都會與其連結的共用資源的名稱和擁有者一起顯示。在此範例中， AWS 帳戶 1111-2222-3333 中的資料湖管理員與帳戶 1234-5678-9012 共用 `inventory`和 `incidents`資料表。該帳戶中的使用者接著建立了這些共用資料表的資源連結。

![\[資料表頁面顯示兩個資源連結。資源連結名稱會顯示在名稱欄下，共用資料表名稱會顯示在共用資源欄下，共用資料表的帳戶會顯示在共用資源擁有者欄下。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/tables-with-links.png)


以下是資源連結的備註和限制：
+ 需要資源連結才能啟用整合服務，例如 Athena 和 Redshift Spectrum，以查詢共用資料表的基礎資料。這些整合服務中的查詢會根據資源連結名稱建構。
+ 假設此設定**針對包含資料庫的新資料表只使用 IAM 存取控制**已關閉，則只有建立資源連結的主體才能檢視和存取它。若要讓帳戶中的其他主體能夠存取資源連結，請授予其`DESCRIBE`許可。若要讓其他人捨棄資源連結，請授予其`DROP`許可。資料湖管理員可以存取帳戶中的所有資源連結。若要捨棄由另一個主體建立的資源連結，資料湖管理員必須先授予自己資源連結的`DROP`許可。如需詳細資訊，請參閱[Lake Formation 許可參考](lf-permissions-reference.md)。
**重要**  
授予資源連結的許可不會授予目標 （連結） 資料庫或資料表的許可。您必須分別授予目標的許可。
+ 若要建立資源連結，您需要 Lake Formation `CREATE_TABLE`或 `CREATE_DATABASE` 許可，以及 `glue:CreateTable`或 `glue:CreateDatabase` AWS Identity and Access Management (IAM) 許可。
+ 您可以建立本機 （擁有） Data Catalog 資源的資源連結，以及與 AWS 您的帳戶共用的資源連結。
+ 當您建立資源連結時，不會執行檢查以查看目標共用資源是否存在，或您對資源是否具有跨帳戶許可。這可讓您以任何順序建立資源連結和共用資源。
+ 如果您刪除資源連結，則不會捨棄連結的共用資源。如果您捨棄共用資源，則不會刪除該資源的資源連結。
+ 您可以建立資源連結鏈。不過，這樣做沒有價值，因為 APIs只遵循第一個資源連結。

**另請參閱：**  
[授予 Data Catalog 資源的許可](granting-catalog-permissions.md)

# 建立共用 Data Catalog 資料表的資源連結
<a name="create-resource-link-table"></a>

您可以使用 AWS AWS Lake Formation 主控台、API 或 AWS Command Line Interface ()，在任何區域中建立共用資料表的資源連結AWS CLI。

**建立共用資料表的資源連結 （主控台）**

1. 在 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 AWS Lake Formation 主控台。以擁有資料庫 Lake Formation `CREATE_TABLE`許可的主體身分登入，以包含資源連結。

1. 在導覽窗格中，選擇 Data Catalog **下的資料表**，然後選擇**建立**、**資源連結**。

1. 在**建立資源連結**頁面上，提供下列資訊：  
**資源連結名稱**  
輸入遵循與資料表名稱相同規則的名稱。名稱可以與目標共用資料表相同。  
**資料庫**  
本機 Data Catalog 中要包含資源連結的資料庫。  
**共用資料表擁有者區域**  
如果您要在不同區域中建立資源連結，請選取目標共用資料表的區域。  
**共用資料表**  
從清單中選擇共用資料表，或輸入本機 （擁有） 或共用資料表名稱。  
此清單包含與您的帳戶共用的所有資料表。請注意與每個資料表一起列出的資料庫和擁有者帳戶 ID。如果您沒有看到您知道已與 帳戶共用的資料表，請檢查下列項目：  
   + 如果您不是資料湖管理員，請檢查資料湖管理員是否授予資料表上的 Lake Formation 許可。
   + 如果您是資料湖管理員，而且您的帳戶與授予帳戶不在同一個 AWS 組織中，請確定您已接受資料表的 AWS Resource Access Manager (AWS RAM) 資源共享邀請。如需詳細資訊，請參閱[從 接受資源共享邀請 AWS RAM](accepting-ram-invite.md)。  
**共用資料表的資料庫**  
如果您從清單中選取共用資料表，則此欄位會填入外部帳戶中共用資料表的資料庫。否則，請在外部帳戶中輸入本機資料庫 （用於本機資料表的資源連結） 或共用資料表的資料庫。  
**共用資料表擁有者**  
如果您從清單中選取共用資料表，則此欄位會填入共用資料表的擁有者帳戶 ID。否則，請輸入 AWS 您的帳戶 ID （適用於本機資料表的資源連結） 或共用資料表 AWS 的帳戶 ID。

1. 選擇**建立**以建立資源連結。

   然後，您可以在**資料表**頁面的名稱欄下檢視資源連結**名稱**。

1. （選用） 將資源連結上的 Lake Formation `DESCRIBE`許可授予必須能夠檢視連結和存取目標資料表的主體。

   不過，授予資源連結的許可並不會授予目標 （連結） 資料庫或資料表的許可。您必須分別授予目標資料庫的許可，才能在 Athena 中顯示資料表/資源連結。

**若要在相同區域中建立共用資料表的資源連結 (AWS CLI)**

1. 輸入與以下相似的命令。

   ```
   aws glue create-table --database-name myissues --table-input '{"Name":"my_customers","TargetTable":{"CatalogId":"111122223333","DatabaseName":"issues","Name":"customers"}}'
   ```

   此命令會建立名為 的資源連結`my_customers`至共用資料表 `customers`，該資料表位於帳戶 1111-2222-3333 `issues`中的 AWS 資料庫中。資源連結會存放在本機資料庫 中`myissues`。

1. （選用） 將資源連結上的 Lake Formation `DESCRIBE`許可授予必須能夠檢視連結和存取目標資料表的主體。

   不過，授予資源連結的許可並不會授予目標 （連結） 資料表的許可。您必須分別授予目標資料庫的許可，才能在 Athena 中顯示資料表/資源連結。

**若要在不同區域中建立共用資料表的資源連結 (AWS CLI)**

1. 輸入與以下相似的命令。

   ```
   aws glue create-table --region eu-west-1 --cli-input-json '{
       "CatalogId": "111122223333",
       "DatabaseName": "ireland_db",
       "TableInput": {
           "Name": "rl_useast1salestb_ireland",
           "TargetTable": {
               "CatalogId": "444455556666",
               "DatabaseName": "useast1_salesdb",
               "Region": "us-east-1",
               "Name":"useast1_salestb"
           }
       }
   }‘
   ```

   此命令`rl_useast1salestb_ireland`會在歐洲 （愛爾蘭） 區域中建立名為 的資源連結至共用資料表 `useast1_salestb`，該資料表位於美國東部 （維吉尼亞北部） 區域中`useast1_salesdb` AWS 帳戶 444455556666 的資料庫中。資源連結會存放在本機資料庫 中`ireland_db`。

1. 將 Lake Formation `DESCRIBE`許可授予必須能夠檢視連結並透過連結存取連結目標的主體。

   不過，授予資源連結的許可並不會授予目標 （連結） 資料表的許可。您必須分別授予目標資料表的許可，才能在 Athena 中顯示資料表/資源連結。

**另請參閱：**  
[資源連結在 Lake Formation 中如何運作](resource-links-about.md)
[`DESCRIBE`](lf-permissions-reference.md#perm-describe)

# 建立共用 Data Catalog 資料庫的資源連結
<a name="create-resource-link-database"></a>

您可以使用 AWS Lake Formation 主控台、API 或 AWS Command Line Interface () 建立共用資料庫的資源連結AWS CLI。

**建立共用資料庫的資源連結 （主控台）**

1. 在 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 AWS Lake Formation 主控台。以資料湖管理員或資料庫建立者身分登入。

   資料庫建立者是已獲授予 Lake Formation `CREATE_DATABASE`許可的主體。

1. 在導覽窗格中，選擇**資料庫**，然後選擇**建立**、**資源連結**。

1. 在**建立資源連結**頁面上，提供下列資訊：  
**資源連結名稱**  
輸入與資料庫名稱遵守相同規則的名稱。名稱可以與目標共用資料庫相同。  
**目的地目錄**  
選取資料庫資源連結的目的地目錄。  
**共用資料庫擁有者區域**  
如果您要在不同區域中建立資源連結，請選取目標共用資料庫的區域。  
**共用資料庫**  
從清單中選擇資料庫，或輸入本機 （擁有） 或共用資料庫名稱。  
此清單包含與您的帳戶共用的所有資料庫。請注意與每個資料庫一起列出的擁有者帳戶 ID。如果您沒有看到已知已與 帳戶共用的資料庫，請檢查下列項目：  
   + 如果您不是資料湖管理員，請檢查資料湖管理員是否已授予資料庫上的 Lake Formation 許可。
   + 如果您是資料湖管理員，而且您的帳戶與授予帳戶不在同一個 AWS 組織中，請確定您已接受資料庫的 AWS Resource Access Manager (AWS RAM) 資源共享邀請。如需詳細資訊，請參閱[從 接受資源共享邀請 AWS RAM](accepting-ram-invite.md)。  
**共用資料庫擁有者**  
如果您從清單中選取共用資料庫，則此欄位會填入共用資料庫的擁有者帳戶 ID。否則，請輸入 AWS 您的帳戶 ID （適用於本機資料庫的資源連結） 或共用資料庫 AWS 的帳戶 ID。  
**共用資料庫的目錄 ID**  
輸入共用資料庫的目錄 ID。建立從另一個 AWS 帳戶共用之 databse 的資源連結時，您需要指定此目錄 ID，以識別哪個帳戶的 Data Catalog 包含來源資料庫。  
當您從下拉式功能表中選取共用資料庫時，系統會自動填入擁有該資料庫且已與您共用該資料庫之帳戶的目錄 ID。  
![\[資料庫詳細資訊對話方塊已選取資源連結選項按鈕，並已填入下列欄位：資源連結名稱、共用資料庫、共用資料庫擁有者 ID。共用資料庫擁有者 ID 已停用 （唯讀）。\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/create-resource-link-db.png)

1. 選擇**建立**以建立資源連結。

   然後，您可以在**資料庫**頁面的名稱欄下檢視資源連結**名稱**。

1. （選用） 將資源連結的 Lake Formation `DESCRIBE`許可授予必須能夠檢視連結和存取目標資料庫的歐洲 （愛爾蘭） 區域的主體。

   不過，授予資源連結的許可並不會授予目標 （連結） 資料庫或資料表的許可。您必須分別授予目標資料庫的許可，才能在 Athena 中顯示資料表/資源連結。

**若要在相同 區域中建立共用資料庫的資源連結 (AWS CLI)**

1. 輸入與以下相似的命令。

   ```
   aws glue create-database --database-input '{"Name":"myissues","TargetDatabase":{"CatalogId":"111122223333","DatabaseName":"issues"}}'
   ```

   此命令會建立名為 的資源連結`myissues`至共用資料庫 `issues`，該資料庫位於 AWS 帳戶 1111-2222-3333 中。

1. （選用） 將 Lake Formation `DESCRIBE`許可授予資源連結上必須能夠檢視連結和存取目標資料庫或資料表的主體。

   不過，授予資源連結的許可並不會授予目標 （連結） 資料庫或資料表的許可。您必須分別授予目標資料庫的許可，才能在 Athena 中顯示資料表/資源連結。

**若要在不同區域中建立共用資料庫的資源連結 (AWS CLI)**

1. 輸入與以下相似的命令。

   ```
   aws glue create-database --region eu-west-1 --cli-input-json '{
       "CatalogId": "111122223333",
       "DatabaseInput": {
         "Name": "rl_useast1shared_irelanddb",
         "TargetDatabase": {
             "CatalogId": "444455556666",
             "DatabaseName": "useast1shared_db",
             "Region": "us-east-1"
          }
       }
   }'
   ```

   此命令會建立在歐洲 （愛爾蘭） 區域中 AWS 帳戶 111122223333 `rl_useast1shared_irelanddb`中名為 的資源連結至共用資料庫 `useast1shared_db`，該資料庫位於美國東部 （維吉尼亞北部） 區域中 AWS 的帳戶 444455556666。

1. 將 Lake Formation `DESCRIBE`許可授予來自歐洲 （愛爾蘭） 區域的主體，這些主體必須能夠檢視連結並透過連結存取連結目標。

**另請參閱：**  
[資源連結在 Lake Formation 中如何運作](resource-links-about.md)
[`DESCRIBE`](lf-permissions-reference.md#perm-describe)

# AWS Glue APIs中的資源連結處理
<a name="resource-links-glue-apis"></a>

下表說明 AWS Glue Data Catalog APIs如何處理資料庫和資料表資源連結。對於所有 `Get*` API 操作，只有發起人在 上具有許可的資料庫和資料表才會傳回。此外，透過資源連結存取目標資料庫或資料表時，您必須同時擁有目標和資源連結的 AWS Identity and Access Management (IAM) 和 Lake Formation 許可。資源連結上所需的 Lake Formation 許可為 `DESCRIBE`。如需詳細資訊，請參閱[`DESCRIBE`](lf-permissions-reference.md#perm-describe)。


**資料庫 API 操作**  

| API 操作 | 資源連結處理 | 
| --- | --- | 
| CreateDatabase | 如果資料庫是資源連結， 會建立指定目標資料庫的資源連結。 | 
| UpdateDatabase | 如果指定的資料庫是資源連結， 會遵循連結並更新目標資料庫。如果必須修改資源連結以連結至不同的資料庫，您必須將其刪除並建立新的資料庫。 | 
| DeleteDatabase | 刪除資源連結。它不會刪除連結的 （目標） 資料庫。 | 
| GetDatabase | 如果發起人對目標具有許可， 會遵循連結來傳回目標的屬性。否則，它會傳回連結的屬性。 | 
| GetDatabases | 傳回資料庫清單，包括資源連結。對於結果集中的每個資源連結，操作會遵循連結來取得連結目標的屬性。您必須指定 ResourceShareType = ALL才能查看與您的帳戶共用的資料庫。 | 


**資料表 API 操作**  

| API 操作 | 資源連結處理 | 
| --- | --- | 
| CreateTable | 如果資料庫是資源連結， 會遵循資料庫連結，並在目標資料庫中建立資料表。如果資料表是資源連結，操作會在指定的資料庫中建立資源連結。不支援透過資料庫資源連結建立資料表資源連結。 | 
| UpdateTable | 如果資料表或指定的資料庫是資源連結， 會更新目標資料表。如果資料表和資料庫都是資源連結，則操作會失敗。 | 
| DeleteTable | 如果指定的資料庫是資源連結， 會遵循連結，並刪除目標資料庫中的資料表或資料表資源連結。如果資料表是資源連結，操作會刪除指定資料庫中的資料表資源連結。刪除資料表資源連結不會刪除目標資料表。 | 
| BatchDeleteTable | 與 DeleteTable 相同。 | 
| GetTable | 如果指定的資料庫是資源連結， 會遵循資料庫連結，並從目標資料庫傳回資料表或資料表資源連結。否則，如果資料表是資源連結，操作會遵循連結並傳回目標資料表屬性。 | 
| GetTables | 如果指定的資料庫是資源連結， 會遵循資料庫連結，並從目標資料庫傳回資料表和資料表資源連結。如果目標資料庫是來自另一個 AWS 帳戶的共用資料庫，則操作只會傳回該資料庫中的共用資料表。它不會遵循目標資料庫中的資料表資源連結。否則，如果指定的資料庫是本機 （擁有） 資料庫， 操作會傳回本機資料庫中的所有資料表，並遵循每個資料表資源連結來傳回目標資料表屬性。 | 
| SearchTables | 傳回資料表和資料表資源連結。它不會遵循連結來傳回目標資料表屬性。您必須指定 ResourceShareType = ALL才能查看與您的帳戶共用的資料表。 | 
| GetTableVersion | 與 GetTable 相同。 | 
| GetTableVersions | 與 GetTable 相同。 | 
| DeleteTableVersion | 與 DeleteTable 相同。 | 
| BatchDeleteTableVersion | 與 DeleteTable 相同。 | 


**分割區 API 操作**  

| API 操作 | 資源連結處理 | 
| --- | --- | 
| CreatePartition | 如果指定的資料庫是資源連結， 會遵循資料庫連結，並在目標資料庫中的指定資料表中建立分割區。如果資料表是資源連結，則操作會遵循資源連結，並在目標資料表中建立分割區。不支援透過資料表資源連結和資料庫資源連結建立分割區。 | 
| BatchCreatePartition | 與 CreatePartition 相同。 | 
| UpdatePartition | 如果指定的資料庫是資源連結， 會遵循資料庫連結，並在目標資料庫中的指定資料表中更新分割區。如果資料表是資源連結，操作會遵循資源連結，並更新目標資料表中的分割區。不支援透過資料表資源連結和資料庫資源連結更新分割區。 | 
| DeletePartition | 如果指定的資料庫是資源連結， 會遵循資料庫連結，並在目標資料庫中的指定資料表中刪除分割區。如果資料表是資源連結，操作會遵循資源連結，並刪除目標資料表中的分割區。不支援透過資料表資源連結和資料庫資源連結刪除分割區。 | 
| BatchDeletePartition | 與 DeletePartition 相同。 | 
| GetPartition | 如果指定的資料庫是資源連結， 會遵循資料庫連結，並從指定的資料表傳回分割區資訊。否則，如果資料表是資源連結，操作會遵循連結並傳回分割區資訊。如果資料表和資料庫都是資源連結，則會傳回空的結果集。 | 
| GetPartitions | 如果指定的資料庫是資源連結， 會遵循資料庫連結，並傳回指定資料表中所有分割區的分割區資訊。否則，如果資料表是資源連結，操作會遵循連結並傳回分割區資訊。如果資料表和資料庫都是資源連結，則會傳回空的結果集。 | 
| BatchGetPartition | 與 GetPartition 相同。 | 


**使用者定義的函數 API 操作**  

| API 操作 | 資源連結處理 | 
| --- | --- | 
| （所有 API 操作） | 如果資料庫是資源連結， 會遵循資源連結，並在目標資料庫上執行 操作。 | 

**另請參閱：**  
[資源連結在 Lake Formation 中如何運作](resource-links-about.md)

# 跨區域存取資料表
<a name="data-access-across-region"></a>

Lake Formation 支援跨 AWS 區域查詢 Data Catalog 資料表。您可以使用 Amazon Athena、Amazon EMR 和 AWS Glue ETL 從其他區域存取區域中的資料，方法是在其他區域中[建立指向來源資料庫和資料表的資源連結](creating-resource-links.md)。透過跨區域資料表存取，您可以跨區域存取資料，而無需將基礎資料或中繼資料複製到 Data Catalog。

例如， 您可以在生產者帳戶中與區域 A 中的取用者帳戶共用資料庫或資料表。接受區域 A 中的資源共用邀請後， 消費者帳戶的資料湖管理員可以建立區域 B 中共用資源的資源連結。消費者帳戶管理員可以將共用資源的許可授予區域 A 中該帳戶中的 IAM 主體，並授予區域 B 中的資源連結許可。使用資源連結， 消費者帳戶中的主體可以查詢來自區域 B 的共用資料。

 您也可以在生產者帳戶中的區域 A 中託管 Amazon S3 資料來源，並在區域 B 的中央帳戶中註冊資料位置。您可以在中央帳戶中建立 Data Catalog 資源、設定 Lake Formation 許可，以及與帳戶中的取用者或區域 B 的外部帳戶共用資料。跨區域功能允許使用者使用資源連結從區域 C 存取這些資料目錄資料表。

使用此功能，您可以在跨區域的 Apache Hive 中繼存放區中查詢聯合資料庫，也可以在執行查詢時將本機區域中的資料表與另一個區域中的資料表聯結。

Lake Formation 支援具有跨區域資料表存取權的下列功能：
+ LF 標籤型存取控制
+ 精細存取控制許可
+ 在具有適當許可的共用資料庫或資料表上寫入操作 
+ 在帳戶層級跨帳戶資料共用，並使用 IAM 委託人層級直接共用

具有 `Create_Database`和 `Create_Table`許可的非管理使用者可以建立跨區域資源連結。

**注意**  
 您可以在任何區域中建立跨區域資源連結並存取資料，而無需套用 Lake Formation 許可。對於未向 Lake Formation 註冊的 Amazon S3 中的來源資料，存取權取決於 Amazon S3 的 IAM 許可政策和 AWS Glue 動作。

如需限制的詳細資訊，請參閱[跨區域資料存取限制](x-region-considerations.md)。

## 工作流程
<a name="cross-region-workflow"></a>

下圖顯示從相同 AWS 帳戶和外部帳戶跨 AWS 區域存取資料的工作流程。

### 存取相同 AWS 帳戶中共用資料表的工作流程
<a name="cross-region-workflow-same-account"></a>

 在下圖中，資料會與美國東部 （維吉尼亞北部） 區域中相同 AWS 帳戶中的使用者共用，而使用者會從歐洲 （愛爾蘭） 區域查詢共用資料。

![\[Diagram showing data sharing between AWS 帳戶 across regions with numbered steps.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/cross-region-same-account.png)


資料湖管理員執行下列活動 （步驟 1-2)：

1. 資料湖管理員使用 Data Catalog 資料庫和資料表設定 AWS 帳戶，並在美國東部 （維吉尼亞北部） 區域向 Lake Formation 註冊 Amazon S3 資料位置。

   將 Data Catalog 資源 （圖表中的產品資料表） 的`Select`許可授予相同帳戶中的委託人 （使用者）。

1. 在歐洲 （愛爾蘭） 區域中建立指向美國東部 （維吉尼亞北部） 區域中來源資料表的資源連結。`DESCRIBE` 准許從歐洲 （愛爾蘭） 區域到委託人的資源連結。

1. 使用者使用 Athena 從歐洲 （愛爾蘭） 區域查詢資料表。

### 存取與外部 AWS 帳戶共用之資料表的工作流程
<a name="cross-region-workflow-x-account"></a>

在下圖中，生產者帳戶 （帳戶 A) 託管 Amazon S3 儲存貯體、註冊資料位置，以及與美國東部 （維吉尼亞北部） 區域中的取用者帳戶 （帳戶 B) 和取用者帳戶 （帳戶 B) 的使用者共用資料目錄資料表，查詢來自歐洲 （愛爾蘭） 區域的資料表。

![\[Diagram showing data sharing between AWS 帳戶 across regions using Amazon S3 and Data Catalog.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/cross-region-x-account.png)


1. 資料湖管理員使用 Data Catalog 資源設定 AWS 帳戶 （生產者帳戶），以及在美國東部 （維吉尼亞北部） 區域向 Lake Formation 註冊的 Amazon S3 資料位置。

1.  生產者帳戶的資料湖管理員會將 Data Catalog 資料表分享給取用者帳戶。

1. 消費者帳戶的資料湖管理員接受美國東部 （維吉尼亞北部） 區域中的資料共用邀請，並將共用資料表的`Select`許可授予相同區域的委託人。

1. 消費者帳戶的資料湖管理員在歐洲 （愛爾蘭） 區域中建立指向美國東部 （維吉尼亞北部） 區域中目標共用資料表的資源連結，並授予來自歐洲 （愛爾蘭） 區域資源連結的使用者`DESCRIBE`許可。

1.  使用者使用 Athena 查詢來自歐洲 （愛爾蘭） 區域的資料。

# 設定跨區域資料表存取
<a name="setup-cross-region-access"></a>

若要從不同區域存取資料，您必須先在註冊 Amazon S3 資料位置的區域中設定 Data Catalog 資料庫和資料表。您可以與帳戶中的主體或其他帳戶中的主體共用 Data Catalog 資料庫和資料表。然後，您需要建立資料湖管理員，他們可以建立指向使用者查詢資料之區域中目標共用資料位置的資源連結。

**查詢來自不同 區域的相同 帳戶中共用的資料**

在本節中，目標共用資料表區域稱為區域 A，使用者從區域 B 執行查詢。

1. 

**區域 A 中的帳戶設定 （您在其中建立和共用資料）**

   資料湖管理員需要完成下列動作：

   1. 註冊 Amazon S3 資料位置。

      如需詳細資訊，請參閱[將 Amazon S3 位置新增至您的資料湖](register-data-lake.md)。

   1.  在帳戶中建立資料庫和資料表。這也可以由具有建立資料庫和資料表許可的非管理使用者完成。

   1. 使用 將資料表上的資料許可授予委託人`Grantable permissions`。

      如需詳細資訊，請參閱 [授予 Data Catalog 資源的許可](granting-catalog-permissions.md)。

1. 

**區域 B 中的帳戶設定 （您在其中存取資料）**

   資料湖管理員需要完成下列動作：

   1. 在區域 B 中建立指向區域 A 中目標共用資料表的資源連結。在建立資料表畫面上指定**共用資料表擁有者區域**。 ****  
![\[Create table interface showing options for resource link creation and shared table details.\]](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/cross-region-resource-link.png)

      如需建立資料庫和資料表資源連結的說明，請參閱 [建立資源連結](creating-resource-links.md)。

   1. 將`Describe`許可授予區域 B 中資源連結上的 IAM 主體。

      如需授予資源連結許可的詳細資訊，請參閱 [授予資源連結許可](granting-link-permissions.md)。

      區域 B 中的 IAM 主體可以使用 Athena 透過連結查詢目標資料表。

**從不同區域存取跨帳戶資料**

1. 

**Producer/grantor 帳戶設定**

   資料湖管理員需要完成下列動作：

   1. 在區域 A 中設定生產者/移植者帳戶。

   1.  在區域 A 中註冊 Amazon S3 資料位置。

   1.  建立資料庫和資料表。這可由具有建立資料表許可的非管理使用者完成。

   1. 使用 將資料許可授予區域 A 中資料表上的取用者/承授者帳戶`Grantable permissions`。

      如需詳細資訊，請參閱[從外部帳戶跨 AWS 帳戶 或 IAM 主體共用 Data Catalog 資料表和資料庫](cross-account-data-share-steps.md)。

1. 

**消費者/承授者帳戶設定**

   資料湖管理員需要完成下列動作：

   1.  接受區域 A AWS RAM 中來自 的資源共用邀請。

   1. 在指向共用資料表的區域 B 中建立資源連結。區域 B 是使用者想要查詢資料表的地方。

   1. 將共用資料表上的資料許可授予區域 A 中的 IAM 主體。
**注意**  
您必須將許可授予共用資料表所在相同區域中的共用資料表。

   1. 授予許可給區域 B 中資源連結的主體。

      然後，區域 B 中消費者帳戶中的主體會使用 Athena 從區域 B 查詢共用資料表。