

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 LF-TBAC 方法授予数据湖权限
<a name="granting-catalog-perms-TBAC"></a>

您可以向主体授予对 LF 标签的 `DESCRIBE` 和 `ASSOCIATE` Lake Formation 权限，以便他们可以查看 LF 标签并将其分配给数据目录资源（数据库、表、视图和列）。将 LF 标签分配给数据目录资源时，您可以使用 Lake Formation 基于标签的访问控制 (LF-TBAC) 方法来保护这些资源。有关更多信息，请参阅 [Lake Formation 基于标签的访问控制](tag-based-access-control.md)。

首先，只有数据湖管理员才能授予这些权限。如果数据湖管理员通过授予选项授予这些权限，则其他主体可以授予这些权限。[Lake Formation 基于标签的访问控制最佳实践和注意事项](lf-tag-considerations.md)中介绍了 `DESCRIBE` 和 `ASSOCIATE` 权限。

您可以向外部 Amazon 账户授予 LF-Tag 的`DESCRIBE`和`ASSOCIATE`权限。然后，该账户中的数据湖管理员可以将这些权限授予给该账户中的其他主体。接着，外部账户中的数据湖管理员向其授予 `ASSOCIATE` 权限的主体可以将 LF 标签分配给您与其账户共享的数据目录资源。

向外部账户授予权限时，您必须包括授予选项。

您可以使用 Amazon Lake Formation 控制台、API 或 Amazon Command Line Interface ()Amazon CLI授予对 LF 标签的权限。

**注意**  
S3 表目录不需要执行以下步骤。您可以使用 LF 标签对现有 S3 表目录授予权限，而无需删除和重新创建表。

**为使用 Lake Formation 权限的现有联合目录启用 LF 标签支持**

如果您有使用 Lake Formation 权限的现有联合目录，例如 Amazon Redshift Amazon DynamoDB 或在联合目录提供 LF 标签支持之前创建的目录，请按照以下步骤操作。

1. 删除现有目录 - 调用 `deleteCatalog` API 操作以移除使用 Lake Formation 权限的现有联合目录。

1.  创建新的联合目录 - 创建新目录并将新目录指向现有命名空间/数据共享。

   为目录使用新名称 - 此过程会更新预先存在的联合目录以支持 LF 标签功能。如果您想使用相同的目录名称，请联系 Amazon 支持团队寻求帮助。

**Topics**
+ [授予数据目录权限](#granting-cat-perms-TBAC-console)

**另请参阅**  
[管理 LF 标签值权限](TBAC-granting-tags.md)
[管理 LF 标签以实现元数据访问控制](managing-tags.md)
[Lake Formation 基于标签的访问控制](tag-based-access-control.md)

## 授予数据目录权限
<a name="granting-cat-perms-TBAC-console"></a>

使用 Lake Formation 控制台，或者 Amazon CLI 使用基于 Lake Formation 标签的访问控制 (LF-TBAC) 方法授予 Lake Formation 对数据目录数据库、表、视图和列的权限。

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

以下步骤说明如何使用 Lake Formation 基于标签的访问控制（LF-TBAC）方法和 Lake Formation 控制台上的**授予数据湖权限**页面来授予权限。该页面分为以下几个部分：
+  **委托人**-用户、角色和 Amazon Web Services 账户 向其授予权限。
+  **LF 标签或目录资源** – 要对其授予权限的数据库、表或资源链接。
+  **权限**：要授予的 Lake Formation 权限。

1. 

**打开“授予数据湖权限”页面。**

   在打开 Amazon Lake Formation 控制台 [https://console.aws.amazon.com/lakeformation/](https://console.amazonaws.cn/lakeformation/)，然后以数据湖管理员或通过 LF-TBAC 获得数据目录资源的 Lake Formation 权限的用户身份登录，并使用授权选项。

   在导航窗格的**权限**下，选择**数据湖权限**。然后选择**授予**。

1. 

**指定主体。**

    在**主体**部分中，选择主体类型，然后指定要向其授予权限的主体。  
![\[“主体”部分包含以下文本中命名的四个磁贴。每个磁贴包含一个选项按钮和文本。IAM Identity Center 磁贴处于选中状态，“用户和组”下拉列表位于磁贴下方。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/identity-center-grant-perm.png)  
**IAM 用户和角色**  
从 **IAM 用户和角色**列表中选择一个或多个用户或角色。  
**IAM Identity Center **  
从**用户和组**列表中选择一个或多个用户或组。  
**SAML 用户和组**  
对于 **SAML 和 Quick 用户和群组**，请为通过 SAML 联合的用户或群组或快速用户或群组输入一个或 ARNs 多个 Amazon 资源名称 (ARNs)。在每个 ARN 后按 Enter。  
有关如何构造的信息 ARNs，请参见[Lake Formation 授予和撤销命令 Amazon CLI](lf-permissions-reference.md#perm-command-format)。  
仅Quick 企业版支持 Lake Formation 与 Quick 集成。  
**外部账户**  
对于**Amazon Web Services 账户、 Amazon 组织**或 **IAM 委托人** Amazon Web Services 账户 IDs，请为 IAM 用户或角色输入一个或多个有效的组织 IDs IDs、组织单位或 ARN。在每个 ID 后按 **Enter**。  
组织 ID 由“o-”后跟 10 到 32 个小写字母或数字组成。  
单位 ID 以“ou-”开头，后跟 4 到 32 个小写字母或数字（包含 OU 的根的 ID）。该字符串后跟第二个“-”短横线和 8 到 32 个额外的小写字母或数字。

1. 

**指定 LF 标签。**

   确保选择**与 LF 标签匹配的资源**选项。选择 **LF 标签键值对**或**已保存的 LF 标签表达式**。

   1. 如果选择 **LF 标签键值对**选项，请选择键和值。

      如果选择多个值，则将使用 `OR` 运算符创建 LF 标签表达式。这意味着，如果任何 LF 标签值与分配给数据目录资源的 LF 标签相匹配，则将授予您对该资源的权限。  
![\[“LF 标签或目录资源”部分包含两个水平排列的磁贴，其中每个磁贴包含一个选项按钮和描述性文本。选项包括“通过 LF 标签匹配的资源（推荐）”和“命名数据目录资源”。“通过 LF 标签匹配的资源”处于选中状态。磁贴下方是水平排列的“键”字段和“值”字段。“键”字段包含“module”，“值”字段是一个下拉列表，其中包含三个条目：“Orders”、“Sales”和“Customers”。每个条目都有一个关联的复选框。“Customers”对应的复选框处于选中状态。这两个字段的右侧是“移除”按钮。底部是“添加 LF 标签”按钮，表示您可以再添加一行，其中包含“键”和“值”字段以及“移除”按钮。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/grant-data-permissions-tags-2.png)

   1. （可选）再次选择**添加 LF 标签键值对**以指定其他 LF 标签。

      如果指定多个值，则将使用 `AND` 运算符创建 LF 标签表达式。仅在为 LF 标签表达式中的每个 LF 标签分配了匹配的 LF 标签时，才会向主体授予对数据目录资源的权限。

   1. 选择**另存为新表达式**选项可重复使用该表达式。

      您需要具有 `Create LF-Tag expression` 权限才能保存表达式。

      有关 LF 标签表达式的更多信息，请参阅[管理 LF 标签表达式以实现元数据访问控制](managing-tag-expressions.md)。

1. 

**指定权限。**

   指定向主体授予的对匹配数据目录资源的权限。匹配的资源是指那些分配了 LF 标签的资源，这些标签与向主体授予的其中一个 LF 标签表达式相匹配。

   您可以指定要授予的对匹配数据库、匹配表和匹配视图的权限。  
![\[显示了页面的两个部分。“数据库权限”部分包含“数据库权限”和“可授予的权限”对应的复选框。在“数据库”部分下方，“表权限”部分显示“表权限”和“可授予的权限”对应的复选框。\]](http://docs.amazonaws.cn/lake-formation/latest/dg/images/grant-TBAC-DB-table-permissions.png)

   在**数据库权限**下，选择要向主体授予的对匹配数据库的数据库权限。

   在**表权限**下，选择要向主体授予的对匹配表和匹配视图的表或视图权限。

   您也可以从**表权限**中选择要对视图应用的 `Select`、`Describe` 和 `Drop` 权限。

1. 选择**授权**。

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

您可以使用 Amazon Command Line Interface (Amazon CLI) 和基于 Lake Formation 标签的访问控制 (LF-TBAC) 方法授予 Lake Formation 对数据目录数据库、表和列的权限。

**使用 Amazon CLI 和 LF-TBAC 方法授予数据湖权限**
+ 使用 `grant-permissions` 命令。  
**Example**  

  以下示例向用户 `datalake_user1` 授予 LF 标签表达式“`module=*`”（LF 标签键 `module` 的所有值）。该用户将具有对所有匹配数据库（即分配了带有键 `module` 及任何值的 LF 标签的数据库）的 `CREATE_TABLE` 权限。

  ```
  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**  

  下一个示例向用户 `datalake_user1` 授予 LF 标签表达式“`(level=director) AND (region=west OR region=south)`”。该用户将通过授予选项具有对匹配表（即分配了 `level=director` 和 `region=west` 或`region=south` 的表）的 `SELECT`、`ALTER` 和 `DROP` 权限。

  ```
  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`” 授予 Amazon 账户 1234-5678-9012。然后，该账户中的数据湖管理员可以向其账户中的主体授予“`module=orders`”表达式。接着，这些主体将具有对匹配数据库的 `CREATE_TABLE` 权限，这些数据库由账户 1111-2222-3333 拥有并通过使用命名资源方法或 LF-TBAC 方法与账户 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"]}]}}'
  ```

------