本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
管理 EC2 安全组
Elastic Beanstalk 在创建环境时会为随该环境一同启动的 EC2 实例分配一个默认安全组。附加到您实例的安全组决定允许哪些流量到达和离开实例。
Elastic Beanstalk 创建的默认 EC2 安全组允许来自互联网或负载均衡器的所有传入流量通过 HTTP(80)和 SSH(22)的标准端口。您也可以定义自己的自定义安全组来指定 EC2 实例的防火墙规则。安全组可以允许来自其他端口或其他来源的流量。例如,您可以为 SSH 访问创建安全组,允许来自限定 IP 地址范围的端口 22 上的入站流量。或者,为了增强安全性,您可以创建一个只允许来自于您有权访问的堡垒主机的流量。
您可以通过将 aws:autoscaling:launchconfiguration 命名空间中的 DisableDefaultEC2SecurityGroup 选项设置为 true,让环境不使用默认的 EC2 安全组。使用 AWS CLI 或配置文件将此选项应用于环境并将自定义安全组附加到 EC2 实例。
管理多实例环境中的 EC2 安全组
如果在多实例环境中创建自定义 EC2 安全组,您还必须考虑负载均衡器和传入流量规则如何确保实例的安全性和可访问性。
流入具有多个 EC2 实例的环境的流量由负载均衡器管理,该负载均衡器会将传入流量定向到所有 EC2 实例。当 Elastic Beanstalk 创建默认 EC2 安全组时,它同时会定义入站规则,允许来自负载均衡器的传入流量。如果安全组中没有此入站规则,则不允许传入流量进入实例。此条件本质上是阻止实例接收外部请求。
如果您为负载均衡环境禁用默认 EC2 安全组,Elastic Beanstalk 会验证某些配置规则。如果配置不符合验证检查,则 Elastic Beanstalk 会发出消息,指示您提供所需的配置。验证检查如下:
-
根据负载均衡器的类型(应用程序负载均衡器或经典负载均衡器),必须使用 aws:elbv2:loadbalancer 或 aws:elb:loadbalancer 的
SecurityGroups选项向负载均衡器分配至少一个安全组。有关 AWS CLI 的示例,请参阅使用 AWS CLI 进行配置。 -
必须存在允许 EC2 实例接收来自负载均衡器的流量的入站流量规则。EC2 安全组和负载均衡器安全组都必须引用这些入站规则。有关更多信息,请参阅下面的流量的入站规则部分。
流量的入站规则
多实例环境的 EC2 安全组必须包含引用负载均衡器安全组的入站规则。这适用于具有任何类型的负载均衡器(专用或共享)以及自定义或默认负载均衡器安全组的环境。
您可以在 EC2 控制台中查看连接到环境组件的所有安全组。下图展示了 EC2 控制台中的列表,其中列出了 Elastic Beanstalk 在创建环境操作期间默认创建的安全组。
安全组屏幕展示了环境及其关联的安全组。GettingStarted-env 和 GettingStarted3-env 均是具有专用负载均衡器的多实例环境。这其中的每个环境都列出了两个安全组,一个用于 EC2 实例,另一个用于负载均衡器。Elastic Beanstalk 会在创建环境时创建这些安全组。GettingStarted5-env 没有负载均衡器安全组,因为它只有一个 EC2 实例,因此没有负载均衡器。
入站规则屏幕进一步展示了 GettingStarted3-env 实例的 EC2 安全组。此示例展示了定义 EC2 安全组的入站规则。请注意,入站规则中的来源列中列出了上图中列出的负载均衡器安全组的安全组 ID。此入站规则允许 GettingStarted3-env 的 EC2 实例在端口 80 上接收来自该特定负载均衡器的入站流量。
有关更多信息,请参阅《Amazon EC2 用户指南》中的更改实例的安全组和弹性负载均衡。