AWS Lake Formation 的已知问题 - AWS Lake Formation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

AWS Lake Formation 的已知问题

查看 AWS Lake Formation 的以下已知问题。

表元数据筛选限制

AWS Lake Formation 列级别权限可用于限制对表中特定列的访问。当用户使用控制台或API(例如)检索有关表的元数据时 glue:GetTable,表对象中的列列表仅包含他们有权访问的字段。了解此元数据筛选的局限性非常重要。某些应用程序或格式可能将其他元数据(包括列名称和类型)存储在 Parameters 映射为表属性。这些属性未经修改即被返回,任何用户均可访问, SELECT 任何列的权限。

例如, 艾弗罗·塞德(AvroSerDe) 在名为的表属性中存储表框架的JSON表现形式 avro.schema.literal,其可供有权访问表的所有用户使用。我们建议您避免在表属性中存储敏感信息,并注意用户可以学习Avro格式表的完整框架。此限制特定于关于表的元数据。 Lake Formation 支持列级筛选的客户端,包括 Amazon Athena, Amazon Redshift Spectrum,和 Amazon EMR 根据注册的列权限过滤数据 Lake Formation. 用户将无法读取不应访问的任何数据。

注意

查询响应中的列的实际过滤由集成服务负责。EMR群集并非完全由 AWS. 因此,EMR管理员有责任正确保护群集,以避免未经授权访问数据。

有关更多信息,请参阅(可选)允许数据筛选 Amazon EMR 群集

AWS Lake Formation 删除任何表属性,以 spark.sql.sources.schema 在回应 glue:GetTable 或类似请求,如果来电者没有 SELECT 权限。这可防止用户访问有关使用ApacheSpark创建的表格的其他元数据。运行于 Amazon EMR,ApacheSpark应用程序仍可读取这些表,但某些优化可能不适用,且不支持区分大小写的列名称。如果用户可以访问表中的所有列, Lake Formation 返回未修改的表,其中包含所有表属性。

重命名已排除列的问题

如果您使用列级别权限来排除某列,然后重命名该列,该列将不再从查询中排除,例如 SELECT *.

删除CSV表中的列时出现问题

如果您创建了一个 Data Catalog 表格的格式为CSV,然后从框架中删除列,查询可能返回错误数据,且列级别权限可能无法符合。

解决方法: 创建新的表。

必须在通用路径下添加表分区

Lake Formation 期望表的所有分区位于在表的位置字段中设置的公共路径下。当您使用爬网器向目录添加分区时,这可无缝工作。但是,如果您手动添加分区,并且这些分区不在父表中设置的位置下方,则数据访问不起作用。

工作流创建期间创建数据库时出现问题

当使用LakeFormation控制台从蓝图中创建工作流程时,如果目标数据库不存在,则可以创建它。当您这样做时, IAM 已登录的用户会获得 CREATE_TABLE 已创建的数据库权限。但是,工作流生成的爬网器在尝试创建表时承担工作流的角色。这失败了,因为角色没有 CREATE_TABLE 数据库的权限。

解决方法: 如果在工作流设置期间通过控制台创建数据库,则在运行工作流之前,您必须为与工作流相关的角色提供 CREATE_TABLE 权限。

删除和重新创建用户时出现问题

以下场景导致错误 Lake Formation 权限返回者 lakeformation:ListPermissions:

  1. 创建用户并授予 Lake Formation 权限。

  2. 删除用户。

  3. 重新创建同名的用户。

ListPermissions 返回两个条目,一个用于旧用户,另一个用于新用户。如果您尝试撤销授予旧用户的权限,则新用户的权限将被撤销。