使用 LF-TBAC 方法授予数据湖权限 - AWS Lake Formation

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

使用 LF-TBAC 方法授予数据湖权限

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

首先,只有数据湖管理员才能授予这些权限。如果数据湖管理员通过授予选项授予这些权限,则其他主体可以授予这些权限。Lake Formation 基于标签的访问控制最佳实践和注意事项中介绍了 DESCRIBEASSOCIATE 权限。

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

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

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

注意

S3 表目录不需要执行以下步骤。您可以使用 LF-Tags 授予对现有 S3 表目录的权限,而无需删除和重新创建它们。

为使用 Lake Formation 权限的现有联合目录启用 LF-tag 支持

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

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

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

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

授予数据目录权限

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

Console

以下步骤说明如何使用 Lake Formation 基于标签的访问控制(LF-TBAC)方法和 Lake Formation 控制台上的授予数据湖权限页面来授予权限。该页面分为以下几个部分:

  • 委托人-用户、角色和 AWS 账户 向其授予权限。

  • LF 标签或目录资源 – 要对其授予权限的数据库、表或资源链接。

  • 权限 – 要授予的 Lake Formation 权限。

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

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

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

  2. 指定主体。

    主体部分中,选择主体类型,然后指定要向其授予权限的主体。

    “主体”部分包含以下文本中命名的四个磁贴。每个磁贴包含一个选项按钮和文本。IAM Identity Center 磁贴处于选中状态,“用户和组”下拉列表位于磁贴下方。
    IAM 用户和角色

    IAM 用户和角色列表中选择一个或多个用户或角色。

    IAM Identity Center

    用户和组列表中选择一个或多个用户或组。

    SAML 用户和组

    对于 SAML 和 Quick Suite 用户和群组,请为通过 SAML 联合的用户或群组或 Quick Suite 用户或群组输入一个或 ARNs 多个 Amazon 资源名称 (ARNs)。在每个 ARN 之后按 Enter

    有关如何构造的信息 ARNs,请参见Lake Formation 授予和撤销命令 AWS CLI

    注意

    仅Quick Suite 企业版支持 Lake Formation 与 Quick Suite 的集成。

    外部账户

    对于AWS 账户、 AWS 组织IAM 委托人 AWS 账户 IDs,请为 IAM 用户或角色输入一个或多个有效的组织 IDs IDs、组织单位或 ARN。在每个 ID 后按 Enter

    组织 ID 由“o-”后跟 10 到 32 个小写字母或数字组成。

    单位 ID 以“ou-”开头,后跟 4 到 32 个小写字母或数字(包含 OU 的根的 ID)。该字符串后跟第二个“-”短横线和 8 到 32 个额外的小写字母或数字。

  3. 指定 LF 标签。

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

    1. 如果选择 LF-Tag 键值对选项,请选择键和值。

      如果选择多个值,则将使用 OR 运算符创建 LF 标签表达式。这意味着,如果任何 LF 标签值与分配给数据目录资源的 LF 标签相匹配,则将授予您对该资源的权限。

      “LF 标签或目录资源”部分包含两个水平排列的磁贴,其中每个磁贴包含一个选项按钮和描述性文本。选项包括“通过 LF 标签匹配的资源(推荐)”和“命名数据目录资源”。“通过 LF 标签匹配的资源”处于选中状态。磁贴下方是水平排列的“键”字段和“值”字段。“键”字段包含“module”,“值”字段是一个下拉列表,其中包含三个条目:“Orders”、“Sales”和“Customers”。每个条目都有一个关联的复选框。“Customers”对应的复选框处于选中状态。这两个字段的右侧是“移除”按钮。底部是“添加 LF 标签”按钮,表示您可以再添加一行,其中包含“键”和“值”字段以及“移除”按钮。
    2. (可选)再次选择 “添加 LF-Tag 键值对” 以指定另一个 LF- Tag。

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

    3. 选择 “另存为新表达式” 选项可重复使用该表达式。

      您需要Create LF-Tag expression保存表达式。

      有关 LF-Tag 表达式的更多信息,请参阅。管理 LF-Tag 表达式以实现元数据访问控制

  4. 指定权限。

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

    您可以指定要授予的对匹配数据库、匹配表和匹配视图的权限。

    显示了页面的两个部分。“数据库权限”部分包含“数据库权限”和“可授予的权限”对应的复选框。在“数据库”部分下方,“表权限”部分显示“表权限”和“可授予的权限”对应的复选框。

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

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

    您也可以从表权限中选择要对视图应用的 SelectDescribeDrop 权限。

  5. 选择授权

AWS CLI

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

使用 AWS CLI 和 LF-TBAC 方法授予数据湖权限
  • 使用 grant-permissions 命令。

    以下示例向用户 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":["*"]}]}}'

    下一个示例向用户 datalake_user1 授予 LF 标签表达式“(level=director) AND (region=west OR region=south)”。该用户将通过授予选项具有对匹配表(即分配了 level=directorregion=westregion=south 的表)的 SELECTALTERDROP 权限。

    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"]}]}}'

    下一个示例将 LF-Tag 表达式 “module=orders” 授予 AWS 账户 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"]}]}}'