

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

# 使用 Amazon EMR 管理的安全组
<a name="emr-man-sec-groups"></a>

**注意**  
Amazon EMR 旨在使用包容性替代方案来处理可能令人反感或非包容性的行业术语，例如“主”和“从属”。我们已过渡到新的术语，以营造更具包容性的体验并促进您对服务组件的理解。  
我们现在将“节点”描述为**实例**，将 Amazon EMR 实例类型描述为**主**实例、**核心**实例和**任务**实例。在过渡期间，您可能仍会发现对过时术语的旧引用，例如与 Amazon EMR 安全组相关的术语。

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

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

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

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

默认托管安全组如下所示：
+ **ElasticMapReduce-主要**

  有关此安全组中的规则，请参阅[适用于主实例（公有子网）的 Amazon EMR 托管的安全组](#emr-sg-elasticmapreduce-master)。
+ **ElasticMapReduce-核心**

  有关此安全组中的规则，请参阅[适用于核心和任务实例（公有子网）的 Amazon EMR 托管的安全组](#emr-sg-elasticmapreduce-slave)。
+ **ElasticMapReduce-主要-私有**

  有关此安全组中的规则，请参阅[适用于主实例（私有子网）的 Amazon EMR 托管的安全组](#emr-sg-elasticmapreduce-master-private)。
+ **ElasticMapReduce-核心私有**

  有关此安全组中的规则，请参阅[适用于核心和任务实例（私有子网）的 Amazon EMR 托管的安全组](#emr-sg-elasticmapreduce-slave-private)。
+ **ElasticMapReduce-ServiceAccess**

  有关此安全组中的规则，请参阅[适用于服务访问（私有子网）的 Amazon EMR 托管的安全组](#emr-sg-elasticmapreduce-sa-private)。

## 适用于主实例（公有子网）的 Amazon EMR 托管的安全组
<a name="emr-sg-elasticmapreduce-master"></a>

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-man-sec-groups.html)

**使用控制台向受信任来源授予对主要安全组的 SSH 访问权限**

要编辑安全组，您必须具有权限来管理集群所在 VPC 的安全组。有关更多信息，请参阅《IAM 用户指南》**中的[更改用户的权限](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html)和允许管理 EC2 安全组的[示例策略](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_examples_ec2_securitygroups-vpc.html)。

1. [登录 AWS 管理控制台，然后在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. 选择**集群**。选择要修改的集群的 **ID**。

1. 在**网络和安全**窗格中，展开 **EC2 安全组（防火墙）**下拉列表。

1. 在**主节点**下，选择您的安全组。

1. 选择**编辑入站规则**。

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

     SSH
   + **端口**：

     22
   + **源**

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

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

1. 对于**Type (类型)**，选择 **SSH**。

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

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

1. 选择**保存**。

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

## 适用于核心和任务实例（公有子网）的 Amazon EMR 托管的安全组
<a name="emr-sg-elasticmapreduce-slave"></a>

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-man-sec-groups.html)

## 适用于主实例（私有子网）的 Amazon EMR 托管的安全组
<a name="emr-sg-elasticmapreduce-master-private"></a>

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-man-sec-groups.html)

## 适用于核心和任务实例（私有子网）的 Amazon EMR 托管的安全组
<a name="emr-sg-elasticmapreduce-slave-private"></a>

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-man-sec-groups.html)

### 编辑出站规则
<a name="private-sg-egress-rules"></a>

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


| Type | 协议 | 端口范围 | 目标位置 | Details | 
| --- | --- | --- | --- | --- | 
| 所有 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 托管的安全组
<a name="emr-sg-elasticmapreduce-sa-private"></a>

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


| Type | 协议 | 端口范围 | 来源 | Details | 
| --- | --- | --- | --- | --- | 
| 入站规则对于使用 Amazon EMR 版本 5.30.0 及更高版本的 Amazon EMR 集群是必需条件。 | 
| 自定义 TCP | TCP | 9443 | 主实例的托管安全组的组 ID。 |  此规则允许在主实例的安全组与服务访问安全组之间进行通信。 | 
| 所有 Amazon EMR 集群都需要出站规则 | 
| 自定义 TCP | TCP | 8443 | 主实例的托管安全组的组 ID。 |  这些规则允许集群管理器与主节点以及核心节点和任务节点进行通信。 | 
| 自定义 TCP | TCP | 8443 | 核心和任务实例托管安全组的组 ID。 |  这些规则允许集群管理器与主节点以及核心节点和任务节点进行通信。 | 