本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
如果集群的安全配置允许来自公有 IP 地址的入站流量通过某个端口,Amazon EMR 阻止公有访问(BPA)会阻止您在公有子网中启动该集群。
重要
默认情况下,阻止公有访问处于启用状态。为了增强账户保护,我们建议您将其保持启用状态。
了解阻止公有访问
您可以使用阻止公有访问账户级别配置,来 Amazon EMR 集群的公有网络访问进行集中管理。
当您的用户 AWS 账户 启动集群时,Amazon EMR 会检查该集群的安全组中的端口规则,并将其与您的入站流量规则进行比较。如果安全组有向公有 IP 地址 IPv4 0.0.0.0/0 或 IPv6 :: /0 开放端口的入站规则,并且这些端口未被指定为账户的例外情况,则 Amazon EMR 不允许用户创建集群。
如果用户修改了公有子网中正在运行的集群的安全组规则,使其具有违反您账户的 BPA 配置的公有访问规则,则 Amazon EMR 将撤销新规则,前提是它有权这样做。如果 Amazon EMR 无权撤销该规则,它会在 AWS Health 控制面板中创建一个描述违规行为的事件。要向 Amazon EMR 授予撤销规则权限,请参阅 配置 Amazon EMR 以撤销安全组规则。
默认情况下,您的 AWS 账户中每个 AWS 区域 的所有集群都启用了阻止公有访问权限。BPA 适用于集群的整个生命周期,但不适用于您在私有子网中创建的集群。您可以配置 BPA 规则的例外;默认情况下,端口 22 是例外。有关设置例外的更多信息,请参阅 配置阻止公有访问。
配置阻止公有访问
您可以随时更新账户中的安全组和阻止公有访问配置。
您可以使用 AWS Management Console、() 和 Amazon EMR API 开启和关闭屏蔽公共访问 AWS Command Line Interface (BPA AWS CLI) 设置。设置会Region-by-Region 根据具体情况应用于您的账户。为了保障集群安全性,建议您使用 BPA。
使用控制台配置阻止公有访问
-
在顶部导航栏中,如果还未选中,则选中要配置的区域。
-
EC2在左侧导航窗格的 EMR 开启下,选择阻止公共访问。
-
在 Block public access settings (阻止公有访问设置) 下,完成以下步骤。
要…… 请执行此操作... 打开或关闭阻止公有访问
选择 Edit(编辑),根据需要选择 Turn on(打开)或 Turn off(关闭),然后选择 Save(保存)。
编辑例外列表中的端口
-
选择 Edit(编辑),然后找到 Port range exceptions(端口范围例外)部分。
-
要将端口添加到例外列表,请选择 Add a port range (添加端口范围) 并输入新端口或端口范围。对要添加的每个端口或端口范围重复此过程。
-
要删除端口或端口范围,请选择端口范围列表中条目旁边的 Remove(删除)。
-
选择保存。
-
配置 Amazon EMR 以撤销安全组规则
Amazon EMR 需要权限才能撤销安全组规则并遵守您的阻止公有访问配置。您可以使用以下方法之一向 Amazon EMR 授予其所需的权限:
-
(建议)将
AmazonEMRServicePolicy_v2
托管的策略附加到服务角色。有关更多信息,请参阅 Amazon EMR 的服务角色(EMR 角色)。 -
创建允许对安全组执行
ec2:RevokeSecurityGroupIngress
操作的新内联策略。有关如何修改角色权限策略的更多信息,请参阅《IAM 用户指南》中的使用 IAM 控制台、AWS API 和 AWS CLI 修改角色权限策略。
解决阻止公有访问违规问题
如果发生阻止公有访问违规,则可以通过以下操作之一来缓解违规:
-
如果要访问集群上的 Web 界面,请使用 查看 Amazon EMR 集群上托管的 Web 界面 中所述的选项之一通过 SSH(端口 22)访问该界面。
-
要允许来自特定 IP 地址而不是公有 IP 地址的流量进入集群,请添加安全组规则。有关更多信息,请参阅《Amazon EC2 入门指南》中的向安全组添加规则。
-
(不推荐)您可以将 Amazon EMR BPA 例外配置为包括所需的端口或端口范围。指定 BPA 例外时,未受保护的端口会带来风险。如果您计划指定例外,则应在不再需要该例外时立即将其删除。有关更多信息,请参阅 配置阻止公有访问。
识别与安全组规则关联的集群
您可能需要识别与给定安全组规则关联的所有集群,或者找到给定集群的安全组规则。
-
如果您知道安全组,则可以在找到安全组的网络接口时识别其关联的集群。有关更多信息,请参阅如何找到与 Amazon EC2 安全组关联的资源?
上 AWS re:Post。连接到这些网络接口的 Amazon EC2 实例将使用它们所属集群的 ID 进行标记。 -
如果要查找已知集群的安全组,请按照 查看 Amazon EMR 集群状态和详细信息 中的步骤操作。您可以在控制台的网络和安全面板中找到集群的安全组,也可以从 AWS CLI的
Ec2InstanceAttributes
字段中找到集群的安全组。