使用基于属性的访问控制来授予权限 - AWS Lake Formation

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

使用基于属性的访问控制来授予权限

本主题介绍对 Data Catalog 资源授予基于属性的访问权限所需遵循的步骤。你可以使用 Lake Formation 控制台或 AWS 命令行界面 (AWS CLI)。

  1. 在上打开 Lake Formation 控制台 https://console.aws.amazon.com/lakeformation/,然后以数据湖管理员、资源创建者或对资源拥有可授予权限的 IAM 用户身份登录。

  2. 请执行以下操作之一:

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

    • 在导航窗格的 Data Catalog 下,选择目录。然后,选择一个目录对象(目录、数据库、表和数据筛选条件),然后从权限下的操作菜单中选择授予

  3. 授予权限页面上,选择按属性划分的主体

  4. 指定属性键和值。如果选择多个值,则将使用 OR 运算符来创建属性表达式。这意味着,如果分配给 IAM 角色或用户的任何属性标签值匹配,则该角色或用户将 role/user 获得对资源的访问权限。

    如果指定多个属性标签,则将使用 AND 运算符来创建属性表达式。只有在属性表达式中的每个属性标签为 IAM 分配了匹配的标签 role/user 时,才会向委托人授予对数据目录资源的权限。

    查看控制台中显示的生成 Cedar 策略表达式。

    在“授予权限”对话框中,创建了一个属性表达式。
  5. 选择权限范围。如果被授权者属于外部账户,请选择外部账户并输入 AWS 账户 ID。

  6. 接下来,在外部账户中选择 Data Catalog 账户。您必须对资源拥有相应的可授予权限才能成功完成权限授予。

  7. 指定要允许具有匹配属性的主体(用户或角色)执行哪些操作。如果为 IAM 实体分配的标签和值至少与您指定的其中一个属性表达式相匹配,则向 IAM 实体授予访问权限。在控制台中查看 Cedar 策略表达式。有关 Cedar 的更多信息,请参阅 What is Cedar? | Cedar 政策语言参考 GuideLink

  8. 接下来,选择要授予访问权限的 Data Catalog 资源。您可以为各种 Data Catalog 资源(包括目录、数据库、表和数据筛选条件)定义这些权限。

  9. 选择授权

    通过这种方法,您可以根据属性控制访问权限,确保只有具有相应标签的用户或角色才能对指定资源执行特定操作。

以下示例显示了一个属性表达式,必须满足该表达式条件才能获得资源的所有可用权限。您也可以指定单个权限,例如 SelectDescribeDrop。该表达式使用 Cedar 策略表达式。有关 Cedar 的更多信息,请参阅 What is Cedar? | Cedar 政策语言参考 GuideLink

此条件检查 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\""}'