为什么在AWS中需要私有子网+ NAT转换?我们不能只使用公共子网+正确配置的安全组吗?

16
AWS中私有子网的目的是使其实例无法直接从外部访问。然而,有时候(成功地抵制了“实例”双关语),实例需要访问互联网才能完成某些操作,例如下载软件更新。实现这一点的“标准”方法是使用一个NAT网关和一条规则,在路由表中将所有出站流量指向它(0.0.0.0/0->nat-gw)。
令我感到困惑的是: 难道我们不能只使用具有适当配置的安全组(SG)的公共子网,该安全组拒绝入站流量并允许特定的出站流量吗?由于SG是有状态的,它们应该允许响应对出站流量进行处理,就像NAT网关一样。
我猜我可能漏掉了什么,或者上述配置在某些方面受到了限制,我没有注意到。但是我找不到答案。

“我们不能只使用一个具有正确配置的安全组的公共子网吗?” --> 对于每个问题,都有许多可能的解决方案。可以使用不同的子网(私有或公共)的原因有很多,例如可扩展性和支持大量资源/IP、分区以减轻风险和符合合规要求等等。如果您不关心这些要求,或者没有任何要求,那么您可以自由地设计架构。 - kosa
1
除了外部遵从原因之外,不这样做的理由是什么呢?我只是想更好地掌握情况,并获得辨别何时适用何时不适用的能力。 - Momchil Anachkov
1
正如我所评论的,如果您有像我列出的大多数大公司一样的要求,那么您将选择私有+公共子网方法。如果您只有单个(或)几个EC2实例大部分时间,只需使用公共子网+ SG即可。因此,哪种方法的具体答案取决于许多因素。总之,这个问题的答案不仅取决于技术堆栈,非技术环境也起着重要作用。 - kosa
2个回答

11
  1. 合规性是选择拥有私有子网的主要原因之一。许多公司,尤其是金融机构,在合规要求方面非常严格,不能有任何公共访问到服务器。创建公共子网时,可能会分配公共IP地址,这可以使任何实例都可以从互联网访问(只要安全组允许)。
  2. 安全组是AWS提供的逻辑级别防火墙。创建私有子网可确保即使实例属于允许访问某些端口和协议的安全组,该服务器仍无法公开访问。
  3. 您选择私有子网的另一个原因是将基础架构设计为所有公共服务器始终位于DMZ中。只有DMZ可以访问互联网,其他所有内容都位于私有子网中。如果出现问题,可以关闭对DMZ的访问,从而避免进一步损害。

11
简单的回答是...你说得对!
您可以将所有内容都部署在公共子网中,并使用安全组来控制实例之间的流量并限制从Internet进行的入站访问。
人们使用公共和私有子网,因为这是传统设计网络的方式,当时防火墙仅存在于子网之间。安全组是一种额外的安全层,可在弹性网络接口上工作,但对于许多网络专业人员(包括设计合规要求的人员)来说,这有点可怕和新颖。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接