本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Amazon EMR 与 Lake Formation 结合使用时的注意事项
将 Amazon EMR 与 Lake Formation 结合使用已在所有可用区域推出。
Amazon EMR 7.9 及更早版本与 Lake Formation 结合使用时的注意事项
在 EMR 7.9 及更早 AWS Lake Formation 版本上使用时,请考虑以下几点。
-
行、列和单元格级别的精细访问控制在 Amazon EMR 6.15 及更高版本的集群上可用。
-
具有表访问权限的用户可以访问该表的所有属性。如果您对表具有基于 Lake Formation 的访问控制,则请查看该表以确保属性不包含任何敏感数据或信息。
-
当 Spark 收集表统计数据时,带有 Lake Formation 的 Amazon EMR 集群不支持 Spark 回退到 HDFS。这通常有助于优化查询性能。
-
通过不受监管的 Apache Spark 表支持基于 Lake Formation 的访问控制的操作包括
INSERT INTO和INSERT OVERWRITE。 -
通过 Apache Spark 和 Apache Hive 支持基于 Lake Formation 的访问控制的操作包括
SELECT、DESCRIBE、SHOW DATABASE、SHOW TABLE、SHOW COLUMN和SHOW PARTITION。 -
Amazon EMR 不支持对以下基于 Lake Formation 的操作进行访问控制:
-
写入受监管表
-
Amazon EMR 不支持
CREATE TABLE。Amazon EMR 6.10.0 及更高版本支持ALTER TABLE。 -
除
INSERT命令之外的 DML 语句。
-
-
使用和不使用基于 Lake Formation 的访问控制的同一查询之间存在性能差异。
-
您只能将 Amazon EMR 与 Lake Formation 结合使用来执行 Spark 作业。
-
Glue Data Catalog 中的多目录层次结构不支持可信身份传播。有关更多信息,请参阅 AWS Glue 数据目录中的使用多目录层次结构。
Amazon EMR 7.10 及更高版本与 Lake Formation 结合使用时的注意事项
在 EMR 7.10 及更高版本中使用 Amazon AWS Lake Formation EMR 时,请考虑以下几点。
-
Amazon EMR 仅支持通过 Lake Formation 对 Apache Hive、Apache Iceberg、Apache Delta 和 Apache Hudi 表进行精细访问控制。Apache Hive 格式包括 Parquet、ORC 和 xSV CSV。
-
对于启用 Lake Formation 的应用程序,Spark 日志会分两组写入 Amazon S3:系统空间日志和用户空间日志。系统空间日志可能包含敏感信息,例如完整的表结构。为了保护这些数据,Amazon EMR 将系统空间日志与用户空间日志存储在不同的位置。强烈建议账户管理员不要授予用户访问系统空间日志的权限。
-
如果您向 Lake Formation 注册表位置,则数据访问将完全由用于注册的角色的权限控制,而不是由 Amazon EMR 作业运行时角色控制。如果注册角色配置错误,尝试访问该表的作业将会失败。
-
您不能为 Lake Formation 作业关闭
DynamicResourceAllocation。 -
您只能将 Lake Formation 与 Spark 作业结合使用。
-
将 Amazon EMR 与 Lake Formation 结合使用在整个作业中仅支持单个 Spark 会话。
-
将 Amazon EMR 与 Lake Formation 结合使用仅支持通过资源链接共享的跨账户表查询。
-
不支持以下项:
-
弹性分布式数据集(RDD)
-
Spark 流
-
使用 Lake Formation 授予的权限写入
-
嵌套列的访问控制
-
-
Amazon EMR 阻止可能破坏系统驱动程序完全隔离的功能,包括:
-
UDTs、Hive UDFs 以及任何涉及自定义类的用户定义函数
-
自定义数据来源
-
为 Spark 扩展、连接器或元存储提供额外的 jar
-
ANALYZE TABLE命令
-
-
为了强制执行访问控制,
EXPLAIN PLAN和 DDL 操作(如DESCRIBE TABLE)不会公开受限信息。 -
Amazon EMR 限制访问启用 Lake Formation 的应用程序上的系统驱动程序 Spark 日志。由于系统驱动程序以提升的权限运行,因此系统驱动程序生成的事件和日志可能包含敏感信息。为防止未经授权的用户或代码访问此敏感数据,Amazon EMR 禁止访问系统驱动程序日志。
系统配置文件日志始终保存在托管存储中:这是一项强制性设置,无法禁用。这些日志使用客户托管 KMS 密钥或托管 KMS 密钥 AWS 进行安全存储和加密。
如果您的 Amazon EMR 应用程序位于带有 Amazon S3 的 VPC 终端节点的私有子网中,并且您附加了终端节点策略来控制访问权限,那么在您的任务可以将日志数据发送到 AWS 托管 Amazon S3 之前,您必须在 VPC 策略中包含托管存储中详述的权限到 S3 网关终端节点。如需疑难解答请求,请联系 AWS 支持人员。
-
如果您在 Lake Formation 中注册了表位置,则无论 Amazon EMR 作业运行时角色的 IAM 权限如何,数据访问路径都会经过 Lake Formation 存储的凭证。如果错误配置了在表位置注册的角色,那么使用具有 S3 IAM 权限的角色提交到表位置的作业就会失败。
-
写入 Lake Formation 表使用的是 IAM 权限,而不是 Lake Formation 授予的权限。如果作业运行时角色拥有必要的 S3 权限,就可以使用该权限来运行写操作。
以下是使用 Apache Iceberg 时的注意事项和限制:
-
您只能在会话目录中使用 Apache Iceberg,而不能使用任意命名的目录。
-
在 Lake Formation 中注册的 Iceberg 表仅支持元数据表
history、metadata_log_entries、snapshots、files、manifests和refs。Amazon EMR 会隐藏可能包含敏感数据的列,例如partitions、path和summaries。此限制不适用于未在 Lake Formation 中注册的 Iceberg 表。 -
未在 Lake Formation 中注册的表支持所有 Iceberg 存储过程。任何表都不支持
register_table和migrate程序。 -
我们建议您使用 Iceberg DataFrameWriter V2 而不是 V1。
7.12 及更高版本中带有 Lake Formation 的亚马逊 EMR 的注意事项
General
在亚马逊 EMR 中使用 Lake Formation 时,请查看以下限制。
-
您不能为 Lake Formation 作业关闭
DynamicResourceAllocation。 -
您只能将 Lake Formation 与 Spark 作业结合使用。
-
将 Amazon EMR 与 Lake Formation 结合使用在整个作业中仅支持单个 Spark 会话。
-
将 Amazon EMR 与 Lake Formation 结合使用仅支持通过资源链接共享的跨账户表查询。
-
不支持以下项:
-
弹性分布式数据集(RDD)
-
Spark 流
-
嵌套列的访问控制
-
-
Amazon EMR 阻止可能破坏系统驱动程序完全隔离的功能,包括:
-
UDTs、Hive UDFs 以及任何涉及自定义类的用户定义函数
-
自定义数据来源
-
为 Spark 扩展、连接器或元存储提供额外的 jar
-
ANALYZE TABLE命令
-
-
如果您的 Amazon EMR 应用程序位于带有 Amazon S3 的 VPC 终端节点的私有子网中,并且您附加了终端节点策略来控制访问权限,那么在您的任务可以将日志数据发送到 AWS 托管 Amazon S3 之前,您必须在 VPC 策略中包含托管存储中详述的权限到 S3 网关终端节点。如需疑难解答请求,请联系 AWS 支持人员。
-
从 Amazon EMR 7.9.0 开始,Spark FGAC 在与 s3a://方案一起使用时支持 S3 AFile 系统。
-
亚马逊 EMR 7.11 支持使用 CTAS 创建托管表。
-
Amazon EMR 7.12 支持使用 CTAS 创建托管表和外部表。
Permissions
-
为了强制执行访问控制,EXPLAIN PLAN 和 DDL 操作(例如 DESCRIBE TABLE)不会泄露受限信息。
-
当您向 Lake Formation 注册表位置时,数据访问将使用 Lake Formation 存储的证书,而不是 EMR Serverless 作业运行时角色的 IAM 权限。如果表位置的注册角色配置错误,即使运行时角色对该位置拥有 S3 IAM 权限,任务也会失败。
-
从 Amazon EMR 7.12 开始,你可以在追加模式下使用 DataFrameWriter (V2) 和 Lake Formation 凭证写入现有 Hive 和 Iceberg 表。对于覆盖操作或创建新表时,EMR 使用运行时角色凭据来修改表数据。
-
使用视图或缓存表作为源数据时,存在以下限制(这些限制不适用于 AWS Glue 数据目录视图):
-
用于合并、删除和更新操作
-
支持:使用视图和缓存表作为源表。
-
不支持:在赋值和条件子句中使用视图和缓存表。
-
-
对于创建或替换和替换表作为选择操作:
-
不支持:使用视图和缓存表作为源表。
-
-
-
仅当启用删除向量时,包含 UDFs 源数据的 Delta Lake 表才支持合并、删除和更新操作。
日志和调试
-
Amazon EMR 限制访问启用 Lake Formation 的应用程序上的系统驱动程序 Spark 日志。由于系统驱动程序以提升的权限运行,因此系统驱动程序生成的事件和日志可能包含敏感信息。为防止未经授权的用户或代码访问此敏感数据,Amazon EMR 禁止访问系统驱动程序日志。
系统配置文件日志始终保存在托管存储中:这是一项强制性设置,无法禁用。这些日志使用客户托管 KMS 密钥或托管 KMS 密钥 AWS 进行安全存储和加密。
Iceberg
使用 Apache Iceberg 时,请查看以下注意事项:
-
您只能在会话目录中使用 Apache Iceberg,而不能使用任意命名的目录。
-
在 Lake Formation 中注册的 Iceberg 表仅支持元数据表
history、metadata_log_entries、snapshots、files、manifests和refs。Amazon EMR 会隐藏可能包含敏感数据的列,例如partitions、path和summaries。此限制不适用于未在 Lake Formation 中注册的 Iceberg 表。 -
未在 Lake Formation 中注册的表支持所有 Iceberg 存储过程。任何表都不支持
register_table和migrate程序。 -
我们建议你使用 Iceberg DataFrameWriter V2 而不是 V1。