本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Amazon EMR 与 Lake Formation 结合使用时的注意事项
带有 Lake Formation 的 Amazon EMR 适用于所有可用区域。
7.9 及更早版本中带有 Lake Formation 的亚马逊 EMR 注意事项
在 EMR 7.9 及更早 Amazon 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 数据目录中的多目录层次结构不支持可信身份传播。有关更多信息,请参阅 Amazon Glue 数据目录中的使用多目录层次结构。
7.10 及更高版本中带有 Lake Formation 的亚马逊 EMR 注意事项
在 EMR 7.10 及更高版本中使用 Amazon Amazon Lake Formation EMR 时,请考虑以下几点。
-
亚马逊 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 作业结合使用。
-
带有 Lake Formation 的 Amazon EMR 在整个作业中仅支持单个 Spark 会话。
-
带有 Lake Formation 的 Amazon EMR 仅支持通过资源链接共享的跨账户表格查询。
-
不支持以下项:
-
弹性分布式数据集(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 密钥 Amazon 进行安全存储和加密。
如果您的 Amazon EMR 应用程序位于带有 Amazon S3 的 VPC 终端节点的私有子网中,并且您附加了终端节点策略来控制访问权限,那么在您的任务可以将日志数据发送到 Amazon 托管 Amazon S3 之前,您必须在 VPC 策略中包含对 S3 网关终端节点的托管存储中详述的权限。如需疑难解答请求,请联系 Amazon 支持人员。
-
如果您在 Lake Formation 中注册了表位置,则无论亚马逊 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。