

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

# Lake Formation 基于标签的访问控制最佳实践和注意事项
<a name="lf-tag-considerations"></a>

您可以创建、维护和分配 LF 标签以控制对数据目录数据库、表和列的访问。

使用 Lake Formation 基于标签的访问控制时，请考虑以下最佳实践：
+ 必须先预定义所有 LF 标签，然后才能将其分配给数据目录资源 或授予给主体。

  数据湖管理员可以通过创建具有所需 IAM 权限的 *LF 标签创建者*来委派标签管理任务。数据工程师和分析师决定 LF 标签的特征和关系。然后，LF 标签创建者在 Lake Formation 中创建和维护 LF 标签。
+ 您可以将多个 LF 标签分配给数据目录资源。只能将特定键的一个值分配给特定资源。

  例如，您可以将 `module=Orders`、`region=West` 和 `division=Consumer` 等分配给数据库、表或列。您无法分配 `module=Orders,Customers`。
+ 创建资源时，您无法将 LF 标签分配给资源。您只能将 LF 标签添加到现有资源。
+ 您可以向主体授予 LF 标签表达式，而不仅仅是单个 LF 标签。

  LF 标签表达式如下所示（使用伪代码）。

  ```
  module=sales AND division=(consumer OR commercial)
  ```

  被授予此 LF 标签表达式的主体只能访问分配了 `module=sales` 和 `division=consumer` 或 `division=commercial` 的数据目录资源（数据库、表和列）。**如果您希望主体能够访问具有 `module=sales` 或 `division=commercial` 的资源，请不要将两者都包含在同一个授予中。**进行两次授予，一次用于 `module=sales`，一次用于 `division=commercial`。

  最简单的 LF 标签表达式仅包含一个 LF 标签，例如 `module=sales`。
+ 被授予对具有多个值的 LF 标签的权限的主体可以使用其中任一值访问数据目录资源。例如，如果用户被授予 key=`module` 和 values=`orders,customers` 的 LF 标签，则该用户有权访问分配了 `module=orders` 或 `module=customers` 的资源。
+ 您需要具有 `Grant with LF-Tag expressions` 权限，才能使用 LF-TBAC 方法授予对数据目录资源的数据权限。数据湖管理员和 LF 标签创建者会隐式接收此权限。具有 `Grant with LFTag expressions` 权限的主体可以使用以下方式授予对资源的数据权限
  + 命名资源方法
  + LF-TBAC 方法，但只能使用相同的 LF 标签表达式

    例如，假设数据湖管理员进行以下授予（使用伪代码）。

    ```
    GRANT (SELECT ON TABLES) ON TAGS module=customers, region=west,south TO user1 WITH GRANT OPTION
    ```

    在这种情况下，`user1` 可以使用 LF-TBAC 方法向其他主体授予对表的 `SELECT` 权限，但只能使用完整的 LF 标签表达式 `module=customers, region=west,south`。
+ 如果同时使用 LF-TBAC 方法和命名资源方法向主体授予对资源的权限，则主体对资源具有的权限是这两种方法授予的权限的联合。
+ Lake Formation 支持跨账户授予对 LF 标签的 `DESCRIBE` 和 `ASSOCIATE` 权限，以及支持使用 LF-TBAC 方法跨账户授予对数据目录资源的权限。在这两种情况下，本金都是 Amazon 账户 ID。
**注意**  
Lake Formation 支持使用 LF-TBAC 方法向组织和组织单位进行跨账户授予。要使用此功能，您需要将**跨账户版本设置**更新为**版本 3**。

  有关更多信息，请参阅 [Lake Formation 中的跨账户数据共享](cross-account-permissions.md)。
+ 在一个账户中创建的数据目录资源只能使用在同一账户中创建的 LF 标签进行标记。在一个账户中创建的 LF 标签不能与另一个账户中的共享资源关联。
+ 使用基于 Lake Formation 标签的访问控制 (LF-TBAC) 授予跨账户访问数据目录资源的权限，需要为您的账户添加数据目录资源策略。 Amazon 有关更多信息，请参阅 [先决条件](cross-account-prereqs.md)。
+ LF 标签键和 LF 标签值的长度不能超过 50 个字符。
+ 可以分配给数据目录资源的 LF 标签的最大数量为 50。
+ 以下限制是软限制：
  + 可以创建的 LF 标签的最大数量为 1000。
  + 可以为 LF 标签定义的值的最大数量为 1000。
+ 标签、键和值在存储时将全部转换为小写。
+ 只能将 LF 标签的一个值分配给特定资源。
+ 如果通过一次授予向主体授予多个 LF 标签，则该主体只能访问具有所有 LF 标签的数据目录资源。
+ 如果 LF 标签表达式计算仅导致访问表列的子集，但在匹配时授予的 Lake Formation 权限是需要完整列访问权限的权限之一，即 `Alter`、`Drop`、`Insert` 或 `Delete`，则不会授予这些权限。相反，仅会授予 `Describe` 权限。如果授予的权限为 `All` (`Super`)，则仅会授予 `Select` 和 `Describe` 权限。
+ 通配符不与 LF 标签一起使用。要将 LF 标签分配给某个表的所有列，请将 LF 标签分配给该表，并且表中的所有列都将继承该 LF 标签。要将 LF 标签分配给某个数据库中的所有表，请将 LF 标签分配给该数据库，并且数据库中的所有表都将继承该 LF 标签。
+  在一个账户中，最多可以创建 1000 个 LF 标签表达式。
+  您最多可以使用 50 个 LF 标签表达式向主体授予对 Data Catalog 资源的权限。
+  授予或撤消对内联 LF 标签表达式的权限时，LF 标签表达式的大小不能超过 900 个字节。要对较大的 LF 标签表达式授予权限，请使用已保存的 LF 标签表达式。有关更多信息，请参阅 [创建 LF 标签表达式](TBAC-creating-tag-expressions.md)。
+ 要将 LF-Tag 添加到联合目录 LF-Tag 支持正式发布之前创建的现有 Redshift 联合目录，您需要联系支持团队寻求帮助。 Amazon 