了解传输中加密 - Amazon EMR

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

了解传输中加密

您可以将 EMR 集群配置为运行开源框架,例如 Apache Spark、A pache Hiv e 和 Prest o。这些开源框架中的每一个都有一组在集群实例上运行的进程。 EC2 这些进程中的每一个都可以托管用于网络通信的网络端点。

如果在 EMR 集群上启用了传输中加密,不同的网络端点将使用不同的加密机制。请参阅以下部分,了解有关传输中加密支持的特定开源框架网络端点、相关加密机制以及哪个 Amazon EMR 发行版添加了该支持的更多信息。每个开源应用程序还可能有不同的最佳实践和您可以更改的开源框架配置。

为了获得最大的传输中加密覆盖范围,我们建议您同时启用传输中加密和 Kerberos。如果您仅启用传输中加密,则传输中加密仅适用于支持 TLS 的网络端点。之所以需要 Kerberos,是因为某些开源框架网络端点使用简单身份验证和安全层(SASL)进行传输中加密。

请注意,不包括 Amazon EMR 7.x.x 发行版中不支持的任何开源框架。

Spark

在安全配置中启用传输中加密时,spark.authenticate 会自动设置为 true 并对 RPC 连接使用基于 AES 的加密。

从 Amazon EMR 7.3.0 开始,如果使用传输中加密和 Kerberos 身份验证,则无法使用依赖于 Hive 元存储的 Spark 应用程序。Hive 3 在 HIVE-16340 中修复了此问题。当开源 Spark 可以升级到 Hive 3 时,HIVE-44114 可完全解决此问题。同时,您可以将 hive.metastore.use.SSL 设置为 false 以解决此问题。有关更多信息,请参阅配置应用程序

有关更多信息,请参阅 Apache Spark 文档中的 Spark 安全性

组件 Endpoint 端口 传输中加密机制 发行版支持

Spark 历史记录服务器

ssl.history.port

18480

TLS

emr-5.3.0+、emr-6.0.0+、emr-7.0.0+

Spark UI

spark.ui.port

4440

TLS

emr-5.3.0+、emr-6.0.0+、emr-7.0.0+

Spark 驱动程序

spark.driver.port

动态

Spark AES 加密

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

Spark 执行程序

执行程序端口(无命名配置)

动态

Spark AES 加密

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

纱 NodeManager

spark.shuffle.service.port1

7337

Spark AES 加密

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

1 托管spark.shuffle.service.port在 YARN 上 NodeManager ,但只有 Apache Spark 使用。

Hadoop YARN

Secure Hadoop RPC 设置为 privacy,使用基于 SASL 的传输中加密。这需要在安全配置中启用 Kerberos 身份验证。如果不想对 Hadoop RPC 进行传输中加密,请配置 hadoop.rpc.protection = authentication。建议使用默认配置,以获得最大的安全性。

如果 TLS 证书不符合 TLS 主机名验证要求,则可以配置 hadoop.ssl.hostname.verifier = ALLOW_ALL。建议使用 hadoop.ssl.hostname.verifier = DEFAULT 的默认配置,即强制执行 TLS 主机名验证。

要禁用 YARN Web 应用程序端点的 HTTPS,请配置 yarn.http.policy = HTTP_ONLY。这样,这些端点的流量就不会加密。建议使用默认配置,以获得最大的安全性。

有关更多信息,请参阅 Apache Hadoop 文档中的 Hadoop in secure mode(安全模式下的 Hadoop)。

组件 Endpoint 端口 传输中加密机制 发行版支持

ResourceManager

yarn.resourcemanager.webapp.address

8088

TLS

emr-7.3.0+

ResourceManager

yarn.resourcemanager.resource-tracker.address

8025

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

ResourceManager

yarn.resourcemanager.scheduler.address

8030

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

ResourceManager

yarn.resourcemanager.address

8032

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

ResourceManager

yarn.resourcemanager.admin.address

8033

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

TimelineServer

yarn.timeline-service.address

10200

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

TimelineServer

yarn.timeline-service.webapp.address

8188

TLS

emr-7.3.0+

WebApplicationProxy

yarn.web-proxy.address

20888

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

NodeManager

yarn.nodemanager.address

8041

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

NodeManager

yarn.nodemanager.localizer.address

8040

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

NodeManager

yarn.nodemanager.webapp.address

8044

TLS

emr-7.3.0+

NodeManager

mapreduce.shuffle.port1

13562

TLS

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

NodeManager

spark.shuffle.service.port2

7337

Spark AES 加密

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

1 托管mapreduce.shuffle.port在 YARN 上 NodeManager ,但只有 Hadoop MapReduce 使用。

2 托管spark.shuffle.service.port在 YARN 上 NodeManager ,但只有 Apache Spark 使用。

Hadoop HDFS

如果在 EMR 集群中启用了传输中加密,Hadoop 名称节点、数据节点和日志节点默认都支持 TLS。

Secure Hadoop RPC 设置为 privacy,使用基于 SASL 的传输中加密。这需要在安全配置中启用 Kerberos 身份验证。

建议保留用于 HTTPS 端点的默认端口。

HDFS 块传输的数据加密使用 AES 256,要求在安全配置中启用静态加密。

有关更多信息,请参阅 Apache Hadoop 文档中的 Hadoop in secure mode(安全模式下的 Hadoop)。

组件 Endpoint 端口 传输中加密机制 发行版支持

Namenode

dfs.namenode.https-address

9871

TLS

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

Namenode

dfs.namenode.rpc-address

8020

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

Datanode

dfs.datanode.https.address

9865

TLS

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

Datanode

dfs.datanode.address

9866

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

Journal Node

dfs.journalnode.https-address

8481

TLS

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

Journal Node

dfs.journalnode.rpc-address

8485

SASL + Kerberos

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

DFSZKFailover控制器

dfs.ha.zkfc.port

8019

只有 Hadoop 3.4.0 支持 TLS for ZKFC。有关更多信息,请参阅 HADOOP-18919。Amazon EMR 7.1.0 目前在 Hadoop 3.3.6 上运行。未来将在 Hadoop 3.4.0 上运行的更高 Amazon EMR 版本

Hadoop MapReduce

在 EMR 集群中启用传输加密时 MapReduce,Hadoop、任务历史服务器和 sh MapReduce uffle 默认都支持 TLS。

Hadoop MapReduce 加密的随机播放使用 TLS。

建议保留用于 HTTPS 端点的默认端口。

有关更多信息,请参阅 Apache Hadoop 文档中的 Hadoop in secure mode(安全模式下的 Hadoop)。

组件 Endpoint 端口 传输中加密机制 发行版支持

JobHistoryServer

mapreduce.jobhistory.webapp.https.address

19890

TLS

emr-7.3.0+

纱 NodeManager

mapreduce.shuffle.port1

13562

TLS

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+、emr-7.0.0+

1 托管mapreduce.shuffle.port在 YARN 上 NodeManager ,但只有 Hadoop MapReduce 使用。

Presto

在 Amazon EMR 5.6.0 及更高版本中,Presto 协调器和工作线程之间的内部通信使用 TLS,Amazon EMR 会设置所有必需的配置,以便在 Presto 中启用安全内部通信

如果连接器使用 Hive 元存储作为元数据存储,则通信器与 Hive 元存储之间的通信也使用 TLS 加密。

组件 Endpoint 端口 传输中加密机制 发行版支持

Presto Coordinator

http-server.https.port

8446

TLS

emr-5.6.0+、emr-6.0.0+、emr-7.0.0+

Presto Worker

http-server.https.port

8446

TLS

emr-5.6.0+、emr-6.0.0+、emr-7.0.0+

Trino

在 Amazon EMR 6.1.0 及更高版本中,Presto 协调器和工作线程之间的内部通信使用 TLS,Amazon EMR 会设置所有必需的配置,以便在 Presto 中启用安全内部通信

如果连接器使用 Hive 元存储作为元数据存储,则通信器与 Hive 元存储之间的通信也使用 TLS 加密。

组件 Endpoint 端口 传输中加密机制 发行版支持

Trino Coordinator

http-server.https.port

8446

TLS

emr-6.1.0+、emr-7.0.0+

Trino Worker

http-server.https.port

8446

TLS

emr-6.1.0+、emr-7.0.0+

Hive 和 Tez

默认情况下,在 EMR 集群中启用传输中加密时,Hive 服务器 2、Hive 元存储服务器、Hive LLAP Daemon Web UI 和 Hive LLAP shuffle 都支持 TLS。有关 Hive 配置的更多信息,请参阅配置属性

当 EMR 集群启用传输中加密时,Tomcat 服务器上托管的 Tez UI 也会启用 HTTPS。但是,Tez AM Web UI 服务禁用了 HTTPS,因此 AM 用户无权访问打开的 SSL 侦听器的密钥库文件。您还可以使用布尔配置 tez.am.tez-ui.webservice.enable.ssltez.am.tez-ui.webservice.enable.client.auth 来启用此行为。

组件 Endpoint 端口 传输中加密机制 发行版支持

HiveServer2

hive.server2.thrift.port

10000

TLS

emr-6.9.0+、emr-7.0.0+

HiveServer2

hive.server2.thrift.http.port

10001

TLS

emr-6.9.0+、emr-7.0.0+

HiveServer2

hive.server2.webui.port

10002

TLS

emr-7.3.0+

HiveMetastoreServer

hive.metastore.port

9083

TLS

emr-7.3.0+

LLAP Daemon

hive.llap.daemon.yarn.shuffle.port

15551

TLS

emr-7.3.0+

LLAP Daemon

hive.llap.daemon.web.port

15002

TLS

emr-7.3.0+

LLAP Daemon

hive.llap.daemon.output.service.port

15003

Hive 不支持此端点的传输中加密

LLAP Daemon

hive.llap.management.rpc.port

15004

Hive 不支持此端点的传输中加密

LLAP Daemon

hive.llap.plugin.rpc.port

动态

Hive 不支持此端点的传输中加密

LLAP Daemon

hive.llap.daemon.rpc.port

动态

Hive 不支持此端点的传输中加密

网页 HCat

templeton.port

50111

TLS

emr-7.3.0+

Tez Application Master

tez.am.client.am.port-range

tez.am.task.am.port-range

动态

Tez 不支持此端点的传输中加密

Tez Application Master

tez.am.tez-ui.webservice.port-range

动态

默认情况下禁用。可使用 emr-7.3.0+ 中的 Tez 配置启用

Tez Task

不适用:不可配置

动态

Tez 不支持此端点的传输中加密

Tez UI

可通过托管 Tez UI 的 Tomcat 服务器来配置

8080

TLS

emr-7.3.0+

在 EMR 集群中启用传输中加密时,Apache Flink REST 端点和 Flink 进程之间的内部通信默认支持 TLS。

security.ssl.internal.enabled 设置为 true,对 Flink 进程之间的内部通信使用传输中加密。如果不想在内部通信中使用传输中加密,请禁用该配置。建议使用默认配置,以获得最大的安全性。

Amazon EMR 将 security.ssl.rest.enabled 设置为 true,并对 REST 端点使用传输中加密。此外,Amazon EMR 还将 historyserver.web.ssl.enabled 设置为 true,以便与 Flink History Server 进行 TLS 通信。如果不想对 REST 点进行传输中加密,请禁用这些配置。建议使用默认配置,以获得最大的安全性。

Amazon EMR 使用 security.ssl.algorithms 来指定使用基于 AES 加密的密码列表。覆盖此配置以使用所需的密码。

有关更多信息,请参阅 Flink 文档中的 SSL 设置

组件 Endpoint 端口 传输中加密机制 发行版支持

Flink History Server

historyserver.web.port

8082

TLS

emr-7.3.0+

Job Manager Rest Server

rest.bind-port

rest.port

动态

TLS

emr-7.3.0+

HBase

亚马逊 EMR 将 S ecure Hadoop RPC 设置为。privacy HMaster 并 RegionServer 使用基于 SASL 的传输中加密。这需要在安全配置中启用 Kerberos 身份验证。

Amazon EMR 将 hbase.ssl.enabled 设置为 true,对 UI 端点使用 TLS。如果您不想对 UI 端点使用 TLS,请禁用此配置。建议使用默认配置,以获得最大的安全性。

Amazon EMR 设置了 hbase.rest.ssl.enabledhbase.thrift.ssl.enabled,分别对 REST 和 Thirft 服务器端点使用 TLS。如果您不想对这些端点使用 TLS,请禁用此配置。建议使用默认配置,以获得最大的安全性。

从 EMR 7.6.0 开始,端点上支持 TLS。 HMaster RegionServer 亚马逊 EMR 还设置hbase.server.netty.tls.enabled和。hbase.client.netty.tls.enabled如果您不想对这些端点使用 TLS,请禁用此配置。我们建议您使用默认配置,该配置可提供加密功能,从而提高安全性。要了解更多信息,请参阅《Apache HBase 参考指南》中的 HBase RPC 通信中的传输级别安全 (TLS)

组件 Endpoint 端口 传输中加密机制 发行版支持

HMaster

HMaster

16000

SASL + Kerberos

TLS

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+ 和 emr-7.0.0+ 中的 SASL + Kerberos

emr-7.6.0+ 中的 TLS

HMaster

HMaster 用户界面

16010

TLS

emr-7.3.0+

RegionServer

RegionServer

16020

SASL + Kerberos

TLS

emr-4.8.0+、emr-5.0.0+、emr-6.0.0+ 和 emr-7.0.0+ 中的 SASL + Kerberos

emr-7.6.0+ 中的 TLS

RegionServer

RegionServer 信息

16030

TLS

emr-7.3.0+

HBase 休息服务器

Rest Server

8070

TLS

emr-7.3.0+

HBase 休息服务器

Rest UI

8085

TLS

emr-7.3.0+

Hbase Thrift Server

Thrift Server

9090

TLS

emr-7.3.0+

Hbase Thrift Server

Thrift Server UI

9095

TLS

emr-7.3.0+

Phoenix

如果您在 EMR 集群中启用了传输中加密,Phoenix Query Server 将支持 TLS phoenix.queryserver.tls.enabled 属性,该属性默认设置为 true

要了解更多信息,请参阅 Phoenix Query Server 文档中 HTTPS 相关的配置

组件 Endpoint 端口 传输中加密机制 发行版支持

Query Server

phoenix.queryserver.http.port

8765

TLS

emr-7.3.0+

Oozie

如果您在 Amazon EMR 7.3.0 及更高版本上运行 Oozie,则 OOZIE-3673 可在 Amazon EMR 上使用。如果在运行电子邮件操作时需要配置自定义 SSL 或 TLS 协议,则可以在 oozie-site.xml 文件中设置 oozie.email.smtp.ssl.protocols 属性。默认情况下,如果启用了传输中加密,Amazon EMR 将使用 TLS v1.3 协议。

如果您在 Amazon EMR 7.3.0 及更高版本上运行 Oozie,则 OOZIE-3677OOZIE-3674 可在 Amazon EMR 上使用。这允许在 oozie-site.xml 中指定属性 keyStoreTypetrustStoreType。OOZIE-3674 将参数 --insecure 添加到 Oozie 客户端,这样就可以忽略证书错误。

Oozie 强制执行 TLS 主机名验证,这意味着任何用于传输中加密的证书都必须满足主机名验证要求。如果证书不符合标准,集群可能会在 Amazon EMR 预置集群的 oozie share lib update 阶段卡住。建议您更新证书,确保其符合主机名验证要求。但如果无法更新证书,则可以在集群配置中将 oozie.https.enabled 属性设置为 false,为 Oozie 禁用 SSL。

组件 Endpoint 端口 传输中加密机制 发行版支持

EmbeddedOozieServer

oozie.https.port

11443

TLS

emr-7.3.0+

EmbeddedOozieServer

oozie.email.smtp.port

25

TLS

emr-7.3.0+

Hue

默认情况下,当在 Amazon EMR 集群中启用传输中加密时,Hue 支持 TLS。有关 Hue 配置的更多信息,请参阅使用 HTTPS/SSL 配置 Hue

组件 Endpoint 端口 传输中加密机制 发行版支持

Hue

http_port

8888

TLS

emr-7.4.0+

Livy

默认情况下,当在 Amazon EMR 集群中启用传输加密时,Livy 支持 TLS。有关 Livy 配置的更多信息,请参阅使用 Ap ache Livy 启用 HTTPS

从 Amazon EMR 7.3.0 开始,如果您使用传输加密和 Kerberos 身份验证,则无法将 Livy 服务器用于依赖于 Hive 元存储的 Spark 应用程序。此问题已在 HIVE-16340 中修复,当开源 Spark 应用程序可以升级到 Hive 3 时,在 SPARK-44114 中已完全解决。同时,如果设置为hive.metastore.use.SSL,则可以解决此问题false。有关更多信息,请参阅配置应用程序

有关更多信息,请参阅使用 Ap ache Livy 启用 HTTPS

组件 Endpoint 端口 传输中加密机制 发行版支持

livy-server

livy.server.por

8998

TLS

emr-7.4.0+

JupyterEnterpriseGateway

默认情况下,当在 Amazon EMR 集群中启用传输加密时,Jupyter 企业网关支持 TLS。有关 Jupyter 企业网关配置的更多信息,请参阅保护企业网关服务器

组件 Endpoint 端口 传输中加密机制 发行版支持

jupyter_企业网关

c. EnterpriseGatewayApp .port

9547

TLS

emr-7.4.0+

JupyterHub

默认情况下,在 Amazon EMR 集群中启用传输中加密时 JupyterHub 支持 TLS。有关更多信息,请参阅 JupyterHub 文档中的启用 SSL 加密。不建议禁用加密。

组件 Endpoint 端口 传输中加密机制 发行版支持

jupyter_hub

c. JupyterHub .port

9443

TLS

emr-5.14.0+、emr-6.0.0+、emr-7.0.0+

Zeppelin

默认情况下,当您在 EMR 集群中启用传输中加密时,Zeppelin 支持 TLS。有关 Zeppelin 配置的更多信息,请参阅 Zeppelin 文档中的 SSL 配置

组件 Endpoint 端口 传输中加密机制 发行版支持

zeppelin

zeppelin.server.ssl.port

8890

TLS

7.3.0+

Zookeeper

Amazon EMR 设置serverCnxnFactoryorg.apache.zookeeper.server.NettyServerCnxnFactory为 Zookeeper 法定人数和客户端通信启用 TLS。

secureClientPort指定监听 TLS 连接的端口。如果客户端不支持与 Zookeeper 的 TLS 连接,则客户端可以连接到中指定的不安全端口 2181。clientPort您可以覆盖或禁用这两个端口。

Amazon EMR 将sslQuorum和设置为admin.forceHttps,以便为true法定人数和管理服务器启用 TLS 通信。如果您不想对法定人数和管理服务器进行传输加密,则可以禁用这些配置。为了最大限度地提高安全性,我们建议您使用默认配置。

有关更多信息,请参阅 Zookeeper 文档中的加密、身份验证、授权选项

组件 Endpoint 端口 传输中加密机制 发行版支持

Zookeeeper 服务器

secureClientPort

2281

TLS

emr-7.4.0+

Zookeeeper 服务器

法定端口

有 2 个:

关注者使用 2888 与领导者建立联系。

领导人选举使用 3888

TLS

emr-7.4.0+

Zookeeeper 服务器

管理员服务器端口

8341

TLS

emr-7.4.0+