Amazon web services 为什么专用子网中的EMR需要完全出站internet访问

Amazon web services 为什么专用子网中的EMR需要完全出站internet访问,amazon-web-services,amazon-emr,aws-security-group,private-subnet,Amazon Web Services,Amazon Emr,Aws Security Group,Private Subnet,下面链接上的AWS文档要求允许在专用子网中的群集的EMR主安全组上完全出站internet访问 但是,完全出站访问会带来风险。这种完全出站internet访问背后的基本原理是什么?该文档指出,如果您不提供完全出站访问,最低要求是向“专用子网中服务访问的托管安全组的组ID”提供TCP 9443 这意味着该实例将需要与Amazon EMR“服务”通信,很可能是为了建立一个可以接收命令以运行作业的连接。以下是我在与AWS支持进行连接后可以收集到的信息: 安全组上的出站规则仅在群集节点启动到外部IP(

下面链接上的AWS文档要求允许在专用子网中的群集的EMR主安全组上完全出站internet访问


但是,完全出站访问会带来风险。这种完全出站internet访问背后的基本原理是什么?

该文档指出,如果您不提供完全出站访问,最低要求是向“专用子网中服务访问的托管安全组的组ID”提供TCP 9443


这意味着该实例将需要与Amazon EMR“服务”通信,很可能是为了建立一个可以接收命令以运行作业的连接。

以下是我在与AWS支持进行连接后可以收集到的信息:

安全组上的出站规则仅在群集节点启动到外部IP(即任何IP,而不是本地主机/其自己的专用IP)的新连接时适用。这就是为什么我们提供对出站连接的无限制访问,因为它们是由节点本身启动的

重要的是要了解,当您的群集启动时,它需要连接到S3以下载必要的repo、上载/下载日志、群集信息等。此外,EMR中的应用程序配置阶段包括成功配置许多内部服务/组件(如资源管理器、名称节点、节点管理器、数据节点等),它们都在群集本身的不同随机端口上运行,因此有必要允许主节点和从节点/核心节点安全组之间的所有TCP通信。此外,主节点通过SSL进行大多数实例控制器通信和其他群集管理器组件的通信,以配置必要的软件并且还交换心跳信号,因此需要打开443和80个端口

此外,Hadoop与不同的应用程序对话,其中每个应用程序都运行在各自独特的端口以及不同的专用IP地址上,因为群集添加或删除了更多节点。因此,我们无法提供可为群集操作打开的特定端口的列表,因为端口和协议要求因应用程序而异如果节点无法相互通信,或在所需端口(包括临时端口范围)上存在任何其他外部依赖关系,则在EMR群集上配置的离子和EMR群集上的任务可能会失败

因此,请注意,托管安全组出口规则的建议配置为0.0.0.0/0,特别是在群集启动期间,因为限制它可能会使EMR无法下载所需的应用程序,从而导致群集供应失败

但是,我知道您正在寻找最低建议设置,以便在“Amazon EMR–托管安全组”上配置出站规则,而不是0.0.0.0/0(所有流量),因为这可能会带来安全风险

<> P>在群集启动期间不做任何更改是非常可取的。即使在启动群集之后,如果出站安全组规则没有被正确配置,它也可能产生问题。在群集成功启动之后,您可以更新安全组规则。但下面是我们需要考虑的几件事情:BeFo。我们正在这样做-

不建议在群集启动期间进行任何更改:
  • 允许主节点和从节点安全组之间的所有TCP、UDP、ICMP v4通信,以便它们能够成功地相互通信
  • 当根据您的用例场景使用EMR时,EMR节点将与服务的端点(如S3、Dynamo DB、VPC、KMS端点)进行通信,并与AWS端点进行通信,这将需要出站HTTP和HTTPS连接。因此,您应该拥有S3端点、DynamoDB端点、KMS端点等,这取决于您的VPC所连接的用例在主管理安全组和从管理安全组的出站规则中明确显示到这些端点的HTTP和HTTPS连接
  • 所有流量都应该允许在出站规则中运行集群的区域的s3端点,以便从s3获取所需的EMR包
  • 如果在EMR中启用调试,则应将该区域的SQS端点CIDR范围添加到出站规则中
  • 如果启用了EMRFS一致性视图,则应将DynamoDB端点CIDR范围添加到出站出口规则中
  • 除此之外,根据您的应用程序特定要求,您可以根据要求添加任何其他端口
  • 因此,一旦集群成功启动,您可以尝试根据您的用例场景来限制出站规则,它可能看起来像-

    ElasticMapReduce主配置的出站规则: 类型协议端口范围目标 HTTP TCP 80 0.0.0.0/0 HTTPS TCP 443 0.0.0.0/0 AllTraffic TCP 0-65535 ElasticMapReduce主安全组ID AllTraffic TCP 0-65535 ElasticMapReduce从属安全组ID ElasticMapReduce从属配置的出站规则: 类型协议端口范围目标 HTTP TCP 80 0.0.0.0/0 HTTPS TCP 443 0.0.0.0/0 AllTraffic TCP 0-65535 ElasticMapReduce主安全组ID AllTraffic TCP 0-65535 ElasticMapReduce从属安全组ID 注意:AllTraffic包括从节点安全组和主节点安全组的所有TCP、UDP、ICMP v4。对于任何其他特定于应用程序的要求,您可以根据需要添加任何其他端口

    另外,请注意,准确确定EMR集群中需要哪些路由是一个非常困难的过程,因为移动部件太多,因此不建议使用。我们无法概述特定集群需要哪些规则,因为每个集群都因ap而异