使用 Amazon EMR 管理的安全组 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon EMR 管理的安全组

注意

Amazon EMR 旨在使用包容性替代方案来处理可能令人反感或非包容性的行业术语,例如“主”和“从属”。我们已过渡到新的术语,以营造更具包容性的体验并促进您对服务组件的理解。

我们现在将“节点”描述为实例,将 Amazon EMR 实例类型描述为实例、核心实例和任务实例。在过渡期间,您可能仍会发现对过时术语的旧引用,例如与 Amazon EMR 安全组相关的术语。

不同的托管安全组与集群中的主实例以及核心和任务实例相关联。在私有子网中创建集群时,需要用于服务访问的其它托管安全组。有关网络配置的托管安全组角色的更多信息,请参阅 启动集群时的 Amazon VPC 选项

当您为集群指定托管安全组时,必须对所有托管安全组使用相同类型的安全组(默认或自定义)。例如,您无法为主实例指定自定义安全组,也无法为核心和任务实例指定自定义安全组。

如果您使用默认托管安全组,则无需在创建集群时指定它们。Amazon EMR 会自动使用默认托管安全组。此外,如果集群的 VPC 中尚不存在默认托管安全组,则 Amazon EMR 将会创建。如果您显式地指定默认托管安全组但它们还不存在,Amazon EMR 也会进行创建。

您可以在创建集群时,在托管安全组中编辑规则。在创建新集群时,Amazon EMR 会检查托管安全组中指定的规则,然后创建新集群需要的任何缺失的入站规则以及之前可能已添加的规则。除非另有明确说明,否则,默认 Amazon EMR 托管安全组的每个规则也会添加到您指定的自定义 Amazon EMR 托管安全组。

默认托管安全组如下所示:

适用于主实例(公有子网)的 Amazon EMR 托管的安全组

公有子网中主实例的默认托管安全组的组名称ElasticMapReduce-primary。它具有以下规则:如果您指定自定义托管安全组,Amazon EMR 将向您的自定义安全组添加所有相同规则。

类型 协议 端口范围 来源 详细信息
入站规则
All ICMP-IPv4 (所有 ICMP-IPv4) 所有 不适用 主实例的托管安全组的组 ID。换句话说,规则出现在相同安全组内。

这些反身规则允许来自与指定安全组关联的任何实例的入站流量。对多个集群使用默认 ElasticMapReduce-primary 允许这些集群的核心和任务节点通过 ICMP 或者任何 TCP 或 UDP 端口相互通信。指定自定义托管安全组以限制跨集群访问。

所有 TCP TCP 全部
所有 UDP UDP 全部
All ICMP-IPV4 (所有 ICMP-IPV4) 所有 不适用 为核心和任务节点指定的托管安全组的组 ID。

这些规则允许所有入站 ICMP 流量以及来自与指定安全组关联的任何核心和任务实例的通过任何 TCP 或 UDP 端口的流量,即使这些实例位于不同的集群中。

所有 TCP TCP 全部
所有 UDP UDP 全部
自定义 TCP 8443 各种 Amazon IP 地址范围 这些规则允许集群管理器与主节点通信。
使用控制台向受信任来源授予对主要安全组的 SSH 访问权限

要编辑安全组,您必须具有权限来管理集群所在 VPC 的安全组。有关更多信息,请参阅《IAM 用户指南》中的更改用户的权限和允许管理 EC2 安全组的示例策略

  1. 登录 Amazon Web Services Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr

  2. 选择 Clusters (集群)。选择要修改的集群的 ID

  3. 网络和安全窗格中,展开 EC2 安全组(防火墙)下拉列表。

  4. 主节点下,选择您的安全组。

  5. 选择编辑入站规则

  6. 通过以下设置检查允许公有访问的入站规则。如果存在,请选择 Delete (删除) 以将其删除。

    • 类型

      SSH

    • 端口

      22

    • 自定义 0.0.0.0/0

    警告

    2020 年 12 月之前,有一条预配置规则,允许端口 22 上来自所有来源的入站流量。创建此规则可简化与主节点的初始 SSH 客户端连接。我们强烈建议您移除此入站规则,限制流量进入可信来源。

  7. 滚动到规则列表的底部并选择 Add Rule (添加规则)

  8. 对于Type (类型),选择 SSH

    选择 SSH,自动为 Protocol (协议) 输入 TCP,为 Port Range (端口范围) 输入 22

  9. 针对源,选择 My IP(我的 IP),自动添加您的 IP 地址作为源地址。您也可以添加一系列 Custom (自定义) 可信客户端 IP 地址,或创建针对其他客户端的其他规则。许多网络环境动态分配 IP 地址,因此您以后可能需要更新受信任客户端的 IP 地址。

  10. 选择保存

  11. 或者,在网络和安全窗格中的核心和任务节点下选择其他安全组,然后重复上述步骤以允许 SSH 客户端访问核心和任务节点。

适用于核心和任务实例(公有子网)的 Amazon EMR 托管的安全组

公有子网中核心和任务实例的默认托管安全组的组名称ElasticMapReduce-core。默认托管安全组具有以下规则,如果您指定自定义托管安全组,则 Amazon EMR 将添加相同规则。

类型 协议 端口范围 来源 详细信息
入站规则
All ICMP-IPV4 (所有 ICMP-IPV4) 所有 不适用 核心和任务实例托管安全组的组 ID。换句话说,规则出现在相同安全组内。

这些反身规则允许来自与指定安全组关联的任何实例的入站流量。对多个集群使用默认 ElasticMapReduce-core 允许这些集群的核心和任务实例通过 ICMP 或者任何 TCP 或 UDP 端口相互通信。指定自定义托管安全组以限制跨集群访问。

所有 TCP TCP 全部
所有 UDP UDP 全部
All ICMP-IPV4 (所有 ICMP-IPV4) 所有 不适用 主实例的托管安全组的组 ID。

这些规则允许所有入站 ICMP 流量以及来自与指定安全组关联的任何主实例的通过任何 TCP 或 UDP 端口的流量,即使这些实例位于不同的集群中。

所有 TCP TCP 全部
所有 UDP UDP 全部

适用于主实例(私有子网)的 Amazon EMR 托管的安全组

私有子网中主实例的默认托管安全组的组名称ElasticMapReduce-Primary-Private。默认托管安全组具有以下规则,如果您指定自定义托管安全组,则 Amazon EMR 将添加相同规则。

类型 协议 端口范围 来源 详细信息
入站规则
All ICMP-IPv4 (所有 ICMP-IPv4) 所有 不适用 主实例的托管安全组的组 ID。换句话说,规则出现在相同安全组内。

这些反身规则允许来自与指定安全组关联且可从私有子网中进行访问的任何实例的入站流量。对多个集群使用默认 ElasticMapReduce-Primary-Private 允许这些集群的核心和任务节点通过 ICMP 或者任何 TCP 或 UDP 端口相互通信。指定自定义托管安全组以限制跨集群访问。

所有 TCP TCP 全部
所有 UDP UDP 全部
All ICMP-IPV4 (所有 ICMP-IPV4) 所有 不适用 核心和任务节点的托管安全组的组 ID。

这些规则允许所有入站 ICMP 流量以及来自与指定安全组关联且从私有子网内进行访问的任何核心和任务实例的通过任何 TCP 或 UDP 端口的流量,即使这些实例位于不同的集群中。

所有 TCP TCP 全部
所有 UDP UDP 全部
HTTPS (8443) TCP 8443 私有子网中用于服务访问的托管安全组的组 ID。 此规则允许集群管理器与主节点通信。
出站规则
所有流量 All 全部 0.0.0.0/0 提供对 Internet 的出站访问。
自定义 TCP TCP 9443 私有子网中用于服务访问的托管安全组的组 ID。

如果删除了上述“所有流量”的默认出站规则,则该规则是 Amazon EMR 5.30.0 及更高版本的最低要求。

注意

当您使用自定义托管安全组时,Amazon EMR 不会添加此规则。

自定义 TCP TCP 80(http)或 443(https) 私有子网中用于服务访问的托管安全组的组 ID。

如果删除了上述“所有流量”的默认出站规则,则该规则是 Amazon EMR 5.30.0 及更高版本通过 https 连接到 Amazon S3 的最低要求。

注意

当您使用自定义托管安全组时,Amazon EMR 不会添加此规则。

适用于核心和任务实例(私有子网)的 Amazon EMR 托管的安全组

私有子网中核心和任务实例的默认托管安全组的组名称ElasticMapReduce-Core-Private。默认托管安全组具有以下规则,如果您指定自定义托管安全组,则 Amazon EMR 将添加相同规则。

类型 协议 端口范围 来源 详细信息
入站规则
All ICMP-IPV4 (所有 ICMP-IPV4) 所有 不适用 核心和任务实例托管安全组的组 ID。换句话说,规则出现在相同安全组内。

这些反身规则允许来自与指定安全组关联的任何实例的入站流量。对多个集群使用默认 ElasticMapReduce-core 允许这些集群的核心和任务实例通过 ICMP 或者任何 TCP 或 UDP 端口相互通信。指定自定义托管安全组以限制跨集群访问。

所有 TCP TCP 全部
所有 UDP UDP 全部
All ICMP-IPV4 (所有 ICMP-IPV4) 所有 不适用 主实例的托管安全组的组 ID。

这些规则允许所有入站 ICMP 流量以及来自与指定安全组关联的任何主实例的通过任何 TCP 或 UDP 端口的流量,即使这些实例位于不同的集群中。

所有 TCP TCP 全部
所有 UDP UDP 全部
HTTPS (8443) TCP 8443 私有子网中用于服务访问的托管安全组的组 ID。 此规则允许集群管理器与核心和任务节点通信。
出站规则
所有流量 All 全部 0.0.0.0/0 请参阅下面的编辑出站规则
自定义 TCP TCP 80(http)或 443(https) 私有子网中用于服务访问的托管安全组的组 ID。

如果删除了上述“所有流量”的默认出站规则,则该规则是 Amazon EMR 5.30.0 及更高版本通过 https 连接到 Amazon S3 的最低要求。

注意

当您使用自定义托管安全组时,Amazon EMR 不会添加此规则。

编辑出站规则

默认情况下,Amazon EMR 使用出站规则创建这个安全组,这些规则允许所有协议和端口上的所有出站流量。之所以选择允许所有出站流量,是因为可以在 Amazon EMR 集群上运行的各种 Amazon EMR 和客户应用程序可能需要不同的出站规则。创建默认安全组时,Amazon EMR 无法预测这些特定设置。您可以缩小安全组中的出站范围,以便仅包括那些适合您的使用案例和安全策略的规则。这个安全组至少需要以下出站规则,但是一些应用程序可能需要额外的出口。

类型 协议 端口范围 目标位置 详细信息
所有 TCP TCP 全部 pl-xxxxxxxx 托管式 Amazon S3 前缀列表 com.amazonaws.MyRegion.s3
所有流量 All 全部 sg-xxxxxxxxxxxxxxxxx ElasticMapReduce-Core-Private 安全组的 ID
所有流量 All 全部 sg-xxxxxxxxxxxxxxxxx ElasticMapReduce-Primary-Private 安全组的 ID
自定义 TCP TCP 9443 sg-xxxxxxxxxxxxxxxxx ElasticMapReduce-ServiceAccess 安全组的 ID

适用于服务访问(私有子网)的 Amazon EMR 托管的安全组

私有子网中服务访问的默认托管安全组的 Group Name (组名称)ElasticMapReduce-ServiceAccess。它具有入站规则和允许流量通过 HTTPS(端口 8443、端口 9443)到私有子网中其它托管安全组的出站规则。这些规则允许集群管理器与主节点以及核心节点和任务节点进行通信。如果您使用的是自定义安全组,则需要相同的规则。

类型 协议 端口范围 来源 详细信息
入站规则对于使用 Amazon EMR 版本 5.30.0 及更高版本的 Amazon EMR 集群是必需条件。
自定义 TCP TCP 9443 主实例的托管安全组的组 ID。

此规则允许在主实例的安全组与服务访问安全组之间进行通信。

所有 Amazon EMR 集群都需要出站规则
自定义 TCP TCP 8443 主实例的托管安全组的组 ID。

这些规则允许集群管理器与主节点以及核心节点和任务节点进行通信。

自定义 TCP TCP 8443 核心和任务实例托管安全组的组 ID。

这些规则允许集群管理器与主节点以及核心节点和任务节点进行通信。