使用 Amazon EMR 管理的安全组
注意
Amazon EMR 旨在使用包容性替代方案来处理可能令人反感或非包容性的行业术语,例如“主”和“从属”。我们已过渡到新的术语,以营造更具包容性的体验并促进您对服务组件的理解。
我们现在将“节点”描述为实例,将 Amazon EMR 实例类型描述为主实例、核心实例和任务实例。在过渡期间,您可能仍会发现对过时术语的旧引用,例如与 Amazon EMR 安全组相关的术语。
不同的托管安全组与集群中的主实例以及核心和任务实例相关联。在私有子网中创建集群时,需要用于服务访问的其它托管安全组。有关网络配置的托管安全组角色的更多信息,请参阅 启动集群时的 Amazon VPC 选项。
当您为集群指定托管安全组时,必须对所有托管安全组使用相同类型的安全组(默认或自定义)。例如,您无法为主实例指定自定义安全组,也无法为核心和任务实例指定自定义安全组。
如果您使用默认托管安全组,则无需在创建集群时指定它们。Amazon EMR 会自动使用默认托管安全组。此外,如果集群的 VPC 中尚不存在默认托管安全组,则 Amazon EMR 将会创建。如果您显式地指定默认托管安全组但它们还不存在,Amazon EMR 也会进行创建。
您可以在创建集群时,在托管安全组中编辑规则。在创建新集群时,Amazon EMR 会检查托管安全组中指定的规则,然后创建新集群需要的任何缺失的入站规则以及之前可能已添加的规则。除非另有明确说明,否则,默认 Amazon EMR 托管安全组的每个规则也会添加到您指定的自定义 Amazon EMR 托管安全组。
默认托管安全组如下所示:
-
ElasticMapReduce-primary
有关此安全组中的规则,请参阅适用于主实例(公有子网)的 Amazon EMR 托管的安全组。
-
ElasticMapReduce-core
有关此安全组中的规则,请参阅适用于核心和任务实例(公有子网)的 Amazon EMR 托管的安全组。
-
ElasticMapReduce-Primary-Private
有关此安全组中的规则,请参阅适用于主实例(私有子网)的 Amazon EMR 托管的安全组。
-
ElasticMapReduce-Core-Private
有关此安全组中的规则,请参阅适用于核心和任务实例(私有子网)的 Amazon EMR 托管的安全组。
-
ElasticMapReduce-ServiceAccess
有关此安全组中的规则,请参阅适用于服务访问(私有子网)的 Amazon EMR 托管的安全组。
适用于主实例(公有子网)的 Amazon EMR 托管的安全组
公有子网中主实例的默认托管安全组的组名称为 ElasticMapReduce-primary。它具有以下规则:如果您指定自定义托管安全组,Amazon EMR 将向您的自定义安全组添加所有相同规则。
类型 | 协议 | 端口范围 | 来源 | 详细信息 |
---|---|---|---|---|
入站规则 | ||||
All ICMP-IPv4 (所有 ICMP-IPv4) | 所有 | 不适用 | 主实例的托管安全组的组 ID。换句话说,规则出现在相同安全组内。 | 这些反身规则允许来自与指定安全组关联的任何实例的入站流量。对多个集群使用默认 |
所有 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 安全组的示例策略。
登录 AWS Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr
。 选择 Clusters (集群)。选择要修改的集群的 ID。
在网络和安全窗格中,展开 EC2 安全组(防火墙)下拉列表。
在主节点下,选择您的安全组。
选择编辑入站规则。
通过以下设置检查允许公有访问的入站规则。如果存在,请选择 Delete (删除) 以将其删除。
-
类型
SSH
-
端口
22
-
源
自定义 0.0.0.0/0
警告
2020 年 12 月之前,有一条预配置规则,允许端口 22 上来自所有来源的入站流量。创建此规则可简化与主节点的初始 SSH 客户端连接。我们强烈建议您移除此入站规则,限制流量进入可信来源。
-
滚动到规则列表的底部并选择 Add Rule (添加规则)。
-
对于Type (类型),选择 SSH。
选择 SSH,自动为 Protocol (协议) 输入 TCP,为 Port Range (端口范围) 输入 22。
-
针对源,选择 My IP(我的 IP),自动添加您的 IP 地址作为源地址。您也可以添加一系列 Custom (自定义) 可信客户端 IP 地址,或创建针对其他客户端的其他规则。许多网络环境动态分配 IP 地址,因此您以后可能需要更新受信任客户端的 IP 地址。
选择保存。
或者,在网络和安全窗格中的核心和任务节点下选择其他安全组,然后重复上述步骤以允许 SSH 客户端访问核心和任务节点。
适用于核心和任务实例(公有子网)的 Amazon EMR 托管的安全组
公有子网中核心和任务实例的默认托管安全组的组名称为ElasticMapReduce-core。默认托管安全组具有以下规则,如果您指定自定义托管安全组,则 Amazon EMR 将添加相同规则。
类型 | 协议 | 端口范围 | 来源 | 详细信息 |
---|---|---|---|---|
入站规则 | ||||
All ICMP-IPV4 (所有 ICMP-IPV4) | 所有 | 不适用 | 核心和任务实例托管安全组的组 ID。换句话说,规则出现在相同安全组内。 | 这些反身规则允许来自与指定安全组关联的任何实例的入站流量。对多个集群使用默认 |
所有 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。换句话说,规则出现在相同安全组内。 | 这些反身规则允许来自与指定安全组关联且可从私有子网中进行访问的任何实例的入站流量。对多个集群使用默认 |
所有 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。换句话说,规则出现在相同安全组内。 | 这些反身规则允许来自与指定安全组关联的任何实例的入站流量。对多个集群使用默认 |
所有 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. 。 |
所有流量 | 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。 |
这些规则允许集群管理器与主节点以及核心节点和任务节点进行通信。 |