使用 Athena 查询向 Lake Formation 注册的数据时的注意事项和限制 - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Athena 查询向 Lake Formation 注册的数据时的注意事项和限制

使用 Athena 查询在 Lake Formation 中注册的数据时,请考虑以下因素。有关更多信息,请参阅 AWS Lake Formation Developer Guide 中的AWS Lake Formation 的已知问题

在使用 Avro 和自定义 SerDe 的某些情况下,未经授权的用户可以看到列元数据

Lake Formation 列级授权可防止用户访问自己没有 Lake Formation 权限的列中的数据。但是,在某些情况下,用户可以访问描述表中所有列的元数据,包括他们对其中的数据没有权限的列。

当列元数据使用 Avro 存储格式或使用自定义串行器/解串器 (SerDe) 存储在表的表属性中(其中表架构在表属性中与 SerDe 定义一起定义)时,会发生这种情况。在将 Athena 与 Lake Formation 一起使用时,我们建议您查看向 Lake Formation 注册的表属性的内容,并在可能的情况下限制存储在表属性中的信息,以防止任何敏感元数据对用户可见。

使用 Lake Formation 权限查看视图

对于向 Lake Formation 注册的数据,Athena 用户只有在对 VIEW 所基于的表、列和源 Amazon S3数据位置具有 Lake Formation 权限时,才能创建 VIEW。在 Athena 中创建 VIEW 后,Lake Formation 权限可以应用于 VIEW。列级权限不可用于 VIEW。对 VIEW 具有 Lake Formation 权限但对视图所基于的表和列没有权限的用户无法使用 VIEW 查询数据。但是,具有此权限组合的用户可以使用语句(如 DESCRIBE VIEWSHOW CREATE VIEWSHOW COLUMNS)查看 VIEW 元数据。因此,请确保对于每个 VIEW 的 Lake Formation 权限与基础表权限一致。

未向 Lake Formation 注册的 Amazon S3 中的 Athena 查询结果位置

The query results locations in Amazon S3 for Athena cannot be registered with Lake Formation. Lake Formation permissions do not limit access to these locations. Unless you limit access, Athena users can access query result files and metadata when they do not have Lake Formation permissions for the data. To avoid this, we recommend that you use workgroups to specify the location for query results and align workgroup membership with Lake Formation permissions. You can then use IAM permissions policies to limit access to query results locations. For more information about query results, see 使用查询结果、输出文件和查询历史记录.

使用 Athena 工作组限制对查询历史记录的访问

Athena query history exposes a list of saved queries and complete query strings. Unless you use workgroups to separate access to query histories, Athena users who are not authorized to query data in Lake Formation are able to view query strings run on that data, including column names, selection criteria, and so on. We recommend that you use workgroups to separate query histories, and align Athena workgroup membership with Lake Formation permissions to limit access. For more information, see 使用工作组控制查询访问和成本.

不支持跨账户 Data Catalog

An Athena user from one account can not query databases and tables in the Data Catalog of a different account, even when Lake Formation is used. To query an Amazon S3 data location in a different account, a resource-based IAM policy (bucket policy) must allow access to the location. For more information, see 跨账户访问. You can use Lake Formation to register an accessible bucket location in an external account with the Data Catalog in the local account.

无法在 Athena 中查询向 Lake Formation 注册的 CSE-KMS 加密的 Amazon S3 位置

注册到 Lake Formation 并使用客户端加密 (CSE) 以及 AWS KMS 客户管理的密钥进行加密的 Amazon S3 位置,不能使用 Athena 来查询。您仍然可以使用 Athena 查询未向 Lake Formation 注册的 CSE-KMS 加密的 Amazon S3 数据位置,并使用 IAM 策略以允许或拒绝访问。

向 Lake Formation 注册的分区数据位置必须在表子目录中

向 Lake Formation 注册的分区表必须在作为 Amazon S3 中该表的子目录的目录中具有分区数据。例如,可以向 Lake Formation 注册并使用 Athena 查询具有位置 s3://mydata/mytable 和分区 s3://mydata/mytable/dt=2019-07-11s3://mydata/mytable/dt=2019-07-12 等的表。另一方面,无法向 Lake Formation 注册具有位置 s3://mydata/mytable 和分区(位于s3://mydata/dt=2019-07-11s3://mydata/dt=2019-07-12 等等中)的表。您可以使用 Lake Formation 以外的 IAM 权限为这些表设置访问权限以在 Athena 中查询它们。有关更多信息,请参阅分区数据

CREATE TABLE AS SELECT (CTAS) 查询需要 Amazon S3 写入权限

Create Table As Statements (CTAS) require write access to the Amazon S3 location of tables. To run CTAS queries on data registered with Lake Formation, Athena users must have IAM permissions to write to the table Amazon S3 locations in addition to the appropriate Lake Formation permissions to read the data locations. For more information, see 从查询结果创建表 (CTAS).