

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

# 使用 Amazon EMR 集群的安全组控制网络流量
<a name="emr-security-groups"></a>

安全组充当您的集群中 EC2 实例的虚拟防火墙，以控制入站和出站流量。每个安全组都有一组规则来控制入站流量，并有另外一组规则来控制出站流量。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[适用于 Linux 实例的 Amazon EC2 安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)。

您将两种类型的安全组与 Amazon EMR 结合使用：*Amazon EMR 管理的安全组*和*其它安全组*。

每个集群都有与其关联的托管安全组。您可以使用 Amazon EMR 创建的默认托管式安全组，或指定自定义托管式安全组。无论哪种方式，Amazon EMR 都会自动向托管安全组添加规则，集群需要这些规则才能在集群实例和 AWS 服务之间进行通信。

其它安全组是可选的。除了托管安全组以外，您还可以指定这些规则，以定制访问权限。其它安全组仅包含您定义的规则。Amazon EMR 不会对其进行修改。

Amazon EMR 在托管安全组中创建的规则允许集群在内部组件间进行通信。要允许用户和应用程序从该集群外部访问某集群，您可以在托管安全组中编辑规则和/或使用其它规则创建其它安全组。

**重要**  
在托管安全组中编辑规则可能会造成意外后果。您可能无意中阻止了集群要正常运行所需的流量，并且由于无法访问节点而导致错误。请在实施前仔细计划并测试安全组配置。

您只能在创建集群时指定安全组。它们不能在集群正在运行时被添加到集群或集群实例，但您可以从现有安全组编辑、添加和删除规则。规则在您保存后立即生效。

默认情况下，安全组是限制性的。除非添加了允许流量的规则，否则流量会被拒绝。如果有多个规则应用于相同流量和相同源，则使用最宽松的规则。例如，如果有一条规则允许来自 IP 地址 192.0.2.12/32 的 SSH，而另一条规则允许访问来自地址范围 192.0.2.0/24 的所有 TCP 流量，则优先使用允许来自包含 192.0.2.12 的地址范围的所有 TCP 流量的规则。在这种情况下，192.0.2.12 处的客户端的访问数可能会超出您的预期数量。

**重要**  
在编辑安全组规则以打开端口时要小心。请务必为运行工作负载所需的协议和端口添加仅允许来自可信和经过身份验证的客户的流量的规则。

您可以在每个区域中配置 Amazon EMR *阻止公有访问*，以便如果有规则允许在未添加到例外列表的任何端口上进行公有访问时，阻止创建集群。对于 2019 年 7 月之后创建的 AWS 账户，Amazon EMR 禁止公开访问默认处于开启状态。对于在 2019 年 7 月之前创建集群的 AWS 账户，Amazon EMR 禁止公开访问默认处于关闭状态。有关更多信息，请参阅 [使用 Amazon EMR 阻止公有访问](emr-block-public-access.md)。

**Topics**
+ [使用 Amazon EMR 管理的安全组](emr-man-sec-groups.md)
+ [为 Amazon EMR 集群使用其他安全组](emr-additional-sec-groups.md)
+ [指定 Amazon EMR 托管的安全组和其它安全组](emr-sg-specify.md)
+ [为 EMR Notebooks 指定 EC2 安全组](emr-managed-notebooks-security-groups.md)
+ [使用 Amazon EMR 阻止公有访问](emr-block-public-access.md)

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