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

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

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

使用 Athena 查询在 Lake Farmation 中注册的数据时,请考虑以下因素。有关其他信息,请参阅的已知问题Amazon Lake Formation中的Amazon Lake Formation开发人员指南.

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

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

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

使用 Lake Formation 成权限查看视图

对于在 Lake Formation 成注册的数据,Athena 用户可以创建VIEW仅当他们对面向的表、列和源 Amazon S3 数据位置具有 Lake Formation 成权限,此权限可在该位置上使用VIEW基于。经过VIEW在 Athena 中创建,Lake Formation 成权限可以应用于VIEW. 列级权限不可用于 VIEW。具有 Lake Formation 成权限的用户VIEW但对视图所基于的表和列没有权限,不能使用VIEW查询数据。但是,具有此权限组合的用户可以使用语句(如 DESCRIBE VIEWSHOW CREATE VIEWSHOW COLUMNS)查看 VIEW 元数据。因此,请确保 Lake Formation 每个VIEW具有基础表权限。

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

Amazon S3 中针对 Athena 的查询结果位置无法注册到 Lake Formation。Lake Formation 成权限不限制对这些位置的访问权限。除非您限制访问权限,否则 Athena 用户可以访问查询结果文件和元数据,如果他们没有数据的 Lake Formation 状权限。为避免这种情况,我们建议您使用工作组指定查询结果的位置,并将工作组成员身份与 Lake Formation 权限对齐。然后,您可以使用 IAM 权限策略限制对查询结果位置的访问。有关查询结果的更多信息,请参阅使用查询结果、输出文件和查询历史记录.

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

Athena 查询历史记录显示已保存查询和完整查询字符串的列表。除非您使用工作组来分离查询历史记录的访问权限,否则 Athena 用户没有授权查询 Lake Formation 中的数据,可以查看对该数据运行的查询字符串,包括列名称、选择条件等。我们建议您使用工作组来分隔查询历史记录,并将 Athena 工作组成员资格与 Lake Formation 权限对齐以限制访问。有关更多信息,请参阅使用工作组控制查询访问和成本

跨账户数据目录访问

要访问另一个账户中的数据目录,可以使用以下方法之一:

设置跨账户访问

Amazon Lake Formation允许您使用单个帐户来管理中央数据目录。您可以使用此功能来实施跨账户访问设置为数据目录元数据和基础数据。例如,所有者帐户可以授予另一个(收件人)帐户SELECT权限。要在 Athena 查询编辑器中显示共享数据库或表,您可以创建资源链路添加到共享数据库或表中。当 Lake Formation 成中的收件人帐户查询所有者的表格时,CloudTrail将数据访问事件添加到收件人帐户和所有者帐户的日志中。

有关详细信息,请参阅Amazon Lake Formation开发人员指南:

跨账户访问

资源链接在 Lake Formation 中的工作原理

跨账户 CloudTrail 日志记录

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

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

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

向注册的 Lake Formation 区表必须在作为 Amazon S3 中该表的子目录的目录中具有分区数据。例如,位置为s3://mydata/mytable和分区s3://mydata/mytable/dt=2019-07-11s3://mydata/mytable/dt=2019-07-12,等可以在 Lake Formation 成注册并使用 Athena 进行查询。另一方面,与位置的表s3://mydata/mytable和分区位于s3://mydata/dt=2019-07-11s3://mydata/dt=2019-07-12,等等,无法在 Lake Formation 注册。因为这样的分区不是s3://mydata/mytable,它们也无法从 Athena 读取。

将表作为选择 (CTAS) 查询需要 Amazon S3 写入权限

创建表为语句 (CTAS) 需要对表的 Amazon S3 位置进行写入访问。要对注册到 Lake Formation 成的数据运行 CTAS 查询,Athena 用户除了具有相应的 Lake Formation 权限以读取数据位置以外,还必须具有写入表 Amazon S3 位置的 IAM 权限。有关更多信息,请参阅从查询结果创建表 (CTAS)

缺省数据库需要 “描述” 权限

Lake Lake Lake Ormation描述权限是必需的default数据库。以下示例Amazon CLI命令授予DESCRIBE权限default数据库传送给用户datalake_user1在Amazon账户111122223333.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DESCRIBE" --resource '{ "Database": {"Name":"default"}}

有关更多信息,请参阅 。Lake Formation 权限参考中的Amazon Lake Formation开发人员指南.