使用 Lake Formation 管理对表或数据库的访问权限 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Lake Formation 管理对表或数据库的访问权限

在表存储桶与 Amazon 分析服务集成后,Lake Formation 将管理对表资源的访问权限。Lake Formation 使用其自己的权限模型(Lake Formation 权限),该模型可以对数据目录资源进行精细的访问控制。Lake Formation 要求向每个 IAM 主体(用户或角色)授权对 Lake Formation 管理的资源执行操作。有关更多信息,请参阅《Amazon Lake Formation 开发人员指南》中的 Lake Formation 权限概览。有关跨账户数据共享的信息,请参阅《Amazon Lake Formation Developer Guide》中的 Cross-account data sharing in Lake Formation

在 IAM 主体可以访问 Amazon 分析服务中的表之前,您必须向这些主体授予对这些资源的 Lake Formation 权限。

注意

如果您是执行表存储桶集成的用户,则您已经拥有对表的 Lake Formation 权限。如果您是唯一将访问表的主体,则可以跳过此步骤。您只需向其它 IAM 主体授予对表的 Lake Formation 权限即可。这可让其它主体在运行查询时访问该表。有关更多信息,请参阅 授予对表或数据库的 Lake Formation 权限

您必须向其它 IAM 主体授予对表资源的 Lake Formation 权限,才能在以下服务中使用这些资源:

  • Amazon Redshift

  • Amazon Data Firehose

  • Amazon QuickSight

  • Amazon Athena

授予对表或数据库的 Lake Formation 权限

您可以通过 Lake Formation 控制台或 Amazon CLI,向主体授予对表存储桶中表或数据库的 Lake Formation 权限。

注意

当您将对数据目录资源的 Lake Formation 权限授予外部账户或直接授予其他账户中的 IAM 主体时,Lake Formation 会使用 Amazon Resource Access Manager (Amazon RAM) 服务共享该资源。如果被授权者账户与授予者账户在同一个组织中,则被授权者立即可以使用共享资源。如果被授权者账户不在同一个组织中,则 Amazon RAM 会向被授权者账户发送邀请,以便其接受或拒绝资源授权。然后,要使共享资源可用,被授权者账户中的数据湖管理员必须使用 Amazon RAM 控制台或 Amazon CLI 接受邀请。有关跨账户数据共享的更多信息,请参阅《Amazon Lake Formation Developer Guide》中的 Cross-account data sharing in Lake Formation

Console
  1. 打开 Amazon Lake Formation 控制台(网址为 https://console.amazonaws.cn/lakeformation/),并以数据湖管理员身份登录。有关如何创建数据湖管理员的更多信息,请参阅《Amazon Lake Formation Developer Guide》中的 Create a data lake administrator

  2. 在导航窗格中,选择数据权限,然后选择授予

  3. 授予权限页面的主体下,执行以下操作之一:

    • 对于 Amazon Athena 或 Amazon Redshift,选择 IAM 用户和角色,然后选择您用于查询的 IAM 主体。

    • 对于 Amazon Data Firehose,选择 IAM 用户和角色,然后选择您创建的服务角色以流式传输到表中。

    • 对于 QuickSight,选择 SAML 用户和组,然后输入 QuickSight 管理员用户的 Amazon 资源名称(ARN)。

    • 要访问 Amazon Glue Iceberg REST 端点,请选择 IAM 用户和角色,然后选择您为客户端创建的 IAM 角色。有关更多信息,请参阅 为客户端创建 IAM 角色

  4. LF 标签或目录资源下,选择命名 Data Catalog 资源

  5. 对于目录,请选择您在集成表存储桶时创建的子目录,例如 account-id:s3tablescatalog/amzn-s3-demo-bucket

  6. 对于数据库,选择您创建的 S3 表存储桶命名空间。

  7. (可选)对于,请选择您在表存储桶中创建的 S3 表。

    注意

    如果您要在 Athena 查询编辑器中创建新表,请不要选择表。

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

    • 如果您在之前的步骤中指定了表,请为表权限选择 Super

    • 如果您未在之前的步骤中指定表,请转到数据库权限。对于跨账户数据共享,您不能选择 Super 来向另一个主体授予对数据库的所有权限。而是应选择更精细的权限,例如描述

  9. 选择授权

CLI
  1. 务必要以数据湖管理员身份运行以下 Amazon CLI 命令。有关更多信息,请参阅《Amazon Lake Formation Developer Guide》中的 Create a data lake administrator

  2. 运行以下命令,向 IAM 主体授予对 S3 表存储桶中表的 Lake Formation 权限以访问该表。要使用此示例,请将 user input placeholders 替换为您自己的信息。

    aws lakeformation grant-permissions \ --region us-east-1 \ --cli-input-json \ '{ "Principal": { "DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role" }, "Resource": { "Table": { "CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket", "DatabaseName": "S3 table bucket namespace, for example, test_namespace", "Name": "S3 table bucket table name, for example test_table" } }, "Permissions": [ "ALL" ] }'