使用 Amazon EMR 阻止公有访问 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon EMR 阻止公有访问

如果集群的安全配置允许来自公有 IP 地址的入站流量通过某个端口,Amazon EMR 阻止公有访问(BPA)会阻止您在公有子网中启动该集群。

重要

默认情况下,阻止公有访问处于启用状态。为了增强账户保护,我们建议您将其保持启用状态。

了解阻止公有访问

您可以使用阻止公有访问账户级别配置,来 Amazon EMR 集群的公有网络访问进行集中管理。

当来自您的 Amazon Web Services 账户 的用户启动集群时,Amazon EMR 会检查该集群的安全组中的端口规则,并将其与您的入站流量规则进行比较。如果安全组具有向公有 IP 地址 IPv4 0.0.0.0/0 或 IPv6 ::/0 开放端口的入站规则,且这些端口并未指定为您账户的例外,则 Amazon EMR 不允许用户创建集群。

如果用户修改了公有子网中正在运行的集群的安全组规则,使其具有违反您账户的 BPA 配置的公有访问规则,则 Amazon EMR 将撤销新规则,前提是它有权这样做。如果 Amazon EMR 无权撤销该规则,它会在 Amazon Health 控制面板中创建一个描述违规行为的事件。要向 Amazon EMR 授予撤销规则权限,请参阅 配置 Amazon EMR 以撤销安全组规则

默认情况下,您的 Amazon Web Services 账户 中每个 Amazon Web Services 区域 的所有集群都启用了阻止公有访问权限。BPA 适用于集群的整个生命周期,但不适用于您在私有子网中创建的集群。您可以配置 BPA 规则的例外;默认情况下,端口 22 是例外。有关设置例外的更多信息,请参阅 配置阻止公有访问

配置阻止公有访问

您可以随时更新账户中的安全组和阻止公有访问配置。

您可以使用 Amazon Web Services Management Console、 Amazon Command Line Interface(Amazon CLI)和 Amazon EMR API 开启和关闭阻止共有访问(BPA)设置。设置按区域适用于您的账户。为了保障集群安全性,建议您使用 BPA。

New console
注意

我们重新设计了 Amazon EMR 控制台,以便其易于使用。请参阅 控制台中的新增功能,以了解有关新旧控制台体验差异的信息。

使用新控制台配置阻止公有访问
  1. 登录 Amazon Web Services Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr/

  2. 在顶部导航栏中,如果还未选中,则选中要配置的区域

  3. 在左侧导航窗格中的 EMR on EC2 下,选择 Block public access(阻止公有访问)。

  4. Block public access settings (阻止公有访问设置) 下,完成以下步骤。

    要…… 请执行此操作...

    打开或关闭阻止公有访问

    选择 Edit(编辑),根据需要选择 Turn on(打开)或 Turn off(关闭),然后选择 Save(保存)。

    编辑例外列表中的端口

    1. 选择 Edit(编辑),然后找到 Port range exceptions(端口范围例外)部分。

    2. 要将端口添加到例外列表,请选择 Add a port range (添加端口范围) 并输入新端口或端口范围。对要添加的每个端口或端口范围重复此过程。

    3. 要删除端口或端口范围,请选择端口范围列表中条目旁边的 Remove(删除)。

    4. 选择 Save(保存)。

Old console
使用旧控制台查看配置阻止公有访问
  1. 通过以下链接打开 Amazon EMR 控制台:https://console.aws.amazon.com/emr

  2. 在顶部导航栏中,确认要配置的区域已选中。

  3. 选择 Block public access (阻止公有访问)

  4. Block public access settings (阻止公有访问设置) 下,完成以下步骤。

    要…… 请执行此操作...

    打开或关闭阻止公有访问

    选择 Change(更改),根据需要选择 On(开)或 Off(关),然后选择对勾标记进行确认。

    编辑例外列表中的端口

    1. Exceptions (例外) 下,选择 Edit (编辑)

    2. 要将端口添加到例外列表,请选择 Add a port range (添加端口范围) 并输入新端口或端口范围。对要添加的每个端口或端口范围重复此过程。

    3. 要删除端口或端口范围,请选择 Port ranges (端口范围) 列表中条目旁边的 x

    4. 选择 Save Changes

Amazon CLI
使用 Amazon CLI 配置阻止公有访问
  • 使用 aws emr put-block-public-access-configuration 命令可配置阻止公有访问,如以下示例所示。

    要…… 请执行此操作...

    打开阻止公有访问

    BlockPublicSecurityGroupRules 设置为 true,如以下示例所示。要启动集群,与集群关联的安全组不得具有允许公有访问的入站规则。

    aws emr put-block-public-access-configuration --block-public-access-configuration BlockPublicSecurityGroupRules=true

    关闭阻止公有访问

    BlockPublicSecurityGroupRules 设置为 false,如以下示例所示。与集群关联的安全组可以具有允许在任何端口上进行公有访问的入站规则。不推荐您使用此配置。

    aws emr put-block-public-access-configuration --block-public-access-configuration BlockPublicSecurityGroupRules=false

    打开阻止公有访问并将端口指定为例外

    以下示例将打开阻止公有访问,并将端口 22 和端口 100-101 指定为例外。这样,如果关联的安全组具有允许在端口 22、端口 100 或端口 101 上进行公有访问的入站规则,则允许创建集群。

    aws emr put-block-public-access-configuration --block-public-access-configuration '{ "BlockPublicSecurityGroupRules": true, "PermittedPublicSecurityGroupRuleRanges": [ { "MinRange": 22, "MaxRange": 22 }, { "MinRange": 100, "MaxRange": 101 } ] }'

配置 Amazon EMR 以撤销安全组规则

Amazon EMR 需要权限才能撤销安全组规则并遵守您的阻止公有访问配置。您可以使用以下方法之一向 Amazon EMR 授予其所需的权限:

  • (建议)AmazonEMRServicePolicy_v2 托管的策略附加到服务角色。有关更多信息,请参阅Amazon EMR 的服务角色(EMR 角色)

  • 创建允许对安全组执行 ec2:RevokeSecurityGroupIngress 操作的新内联策略。有关如何修改角色权限策略的更多信息,请参阅《IAM 用户指南》中的使用 IAM 控制台Amazon APIAmazon CLI 修改角色权限策略

解决阻止公有访问违规问题

如果发生阻止公有访问违规,则可以通过以下操作之一来缓解违规:

  • 如果要访问集群上的 Web 界面,请使用 查看 Amazon EMR 集群上托管的 Web 界面 中所述的选项之一通过 SSH(端口 22)访问该界面。

  • 要允许来自特定 IP 地址而不是公有 IP 地址的流量进入集群,请添加安全组规则。有关更多信息,请参阅《Amazon EC2 入门指南》中的向安全组添加规则

  • (不推荐)您可以将 Amazon EMR BPA 例外配置为包括所需的端口或端口范围。指定 BPA 例外时,未受保护的端口会带来风险。如果您计划指定例外,则应在不再需要该例外时立即将其删除。有关更多信息,请参阅配置阻止公有访问

识别与安全组规则关联的集群

您可能需要识别与给定安全组规则关联的所有集群,或者找到给定集群的安全组规则。

  • 如果您知道安全组,则可以在找到安全组的网络接口时识别其关联的集群。有关更多信息,请参阅 Amazon Web Services re:Post 上的 如何查找与 Amazon EC2 安全组关联的资源?。连接到这些网络接口的 Amazon EC2 实例,将使用它们所属集群的 ID 进行标记。

  • 如果要查找已知集群的安全组,请按照 查看集群状态和详细信息 中的步骤操作。您可以在控制台的网络和安全面板中找到集群的安全组,也可以从 Amazon CLI 的 Ec2InstanceAttributes 字段中找到集群的安全组。