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

Why do we need a Private Subnet + NAT translation in AWS? Can't we just use a Public Subnet + a properly configured security group?

所以 AWS 中私有子网的目的是使其实例无法从外界直接访问。然而,在某些情况下(成功抵制了 'instances' 双关语),实例可以访问互联网是很有用的。例如,一个这样的用例可能是下载软件更新。

实现此目的的 "standard" 方法是使用 NAT 网关和路由中的规则 table 将所有出站流量指向它 (0.0.0.0/0 -> nat-gw) .

让我疑惑的是这个: 我们不能只使用具有正确配置的安全组 (SG) 的 public 子网来拒绝入站流量并允许特定的出站流量吗?由于 SG 是有状态的,因此它们应该允许对出站流量的响应通过,就像 NAT 网关一样。

我假设我只是遗漏了一些东西,或者上面的配置在某种程度上是有限的,我只是没有看到。但是我找不到这个问题的答案。

  1. 合规性是人们可能选择拥有的主要原因之一 私有子网。许多公司,尤其是金融机构,在无法满足的情况下都有严格的合规要求 不是任何 public 访问 到服务器。当你创建一个 public 子网时,有一个 分配 public IP 地址的可能性,它可以使任何 可从互联网访问的实例,(同样只要安全 组允许)。
  2. 安全组是 AWS 在逻辑层面提供的防火墙。 创建私有子网,确保即使实例属于 到安全组,允许访问某些端口和 协议,服务器仍然无法访问 publicly。
  3. 您可能选择私有子网的另一个原因是架构师 您的基础架构,所有 public 服务器始终处于 非军事区。只有 DMZ 可以访问互联网。其他一切都在 一个私有子网。如果出现问题,访问 可以关闭 DMZ,防止进一步的破坏。

简单的答案是......你是对的!

您当然可以在 Public 子网中启动所有内容并使用安全组来控制实例之间的流量并限制来自 Internet 的入站访问。

人们使用 public 和私有子网,因为这是网络的传统设计方式,当时防火墙仅存在于子网之间。安全组是在弹性网络接口上工作的额外安全层,但对于许多网络专业人员(包括设计合规性要求的人员)来说,这有点可怕和新鲜。