负载均衡器后面的 public 实例是否比 NAT 网关后面的私有实例安全得多?由于什么风险?

Is a public instance behind a Load Balancer that much less secure than a private instance behind a NAT Gateway? Due to what risks?

我想了解在比较受 NAT 网关保护的私有实例和仅接受来自其负载均衡器的连接的 public 实例时获得的相对安全性

为什么(由于具体的风险)后者不如前者安全?

首先,我的动机是了解如何在我的 AWS 网络基础设施中最小化成本 以获得可接受的安全性。 NAT 网关会增加成本,我想在购买它们之前确信成本是必要的。

我从 AWS 的参考 三层架构 开始,用于 VPC,其中:

我知道如何消除其 public IP 来保护实例免受未经请求的外部连接。

但是:我不能通过为具有 public IP 的实例配置安全组(这是直接使用互联网网关所必需的)来仅接受来自其负载均衡器的传入连接来做同样的事情吗?

我想了解:是否有 足够安全 的替代网络架构 取消 NAT 网关 (或 NAT 实例 — 基本上, NAT 税)?是否有足够安全的两层架构

例如,这种两层架构的安全性(由于哪些特定风险)?

感谢您的宝贵时间。我是 AWS(和 Whosebug)的新手,期待了解更多。

在具有安全组 (SG) 的 public 子网中设置实例,允许来自 ALB 或 CLB 的 SG 的传入连接通常就足够了。

将实例放在私有子网中并使用 NAT 仍然更好,因为在 public 子网中意外更改实例的 SG 并允许直接访问互联网,然后将实例从私有移动到 public 个子网。

此外,NAT 为私有子网中的所有实例提供了一个静态 public IP。如果您使用需要单个 IP 到白名单的外部 API,这通常是无能为力的。

想要使用私有子网有两个原因:

  1. 更多的安全层 = 更好的安全性
  2. 这是 non-Cloud 网络中的传统方式,安全从业者喜欢以传统方式做事

事实是,使用安全组是阻止访问 Amazon EC2 实例的一种完全可以接受的方式。这是传统网络中不可用的一种安全形式,因为它们通常在 subnet-level 应用安全,而安全组可以在 resource-level.

应用

您可以将 EC2 实例的安全组中的入站规则配置为仅接受来自负载均衡器安全组的传入连接。这将停止任何其他连接——无论是在 VPC 内还是来自 Internet,即使实例具有 Public IP 地址。

在许多公司中,提高安全性比成本 更重要,因此他们很乐意支付额外费用以获得更多 'layers' 安全性。这样,如果某一层配置不正确并且有人获得了他们不应该被允许访问的东西的访问权限,则有额外的安全性可以(希望)阻止他们进一步访问。成本和 'risk appetite' 之间总是 trade-off。

哦,使用私有子网还有第三个原因,即通过 NAT 网关将所有传出流量路由到 使所有流量看起来都来自单个 IP 地址,这在使用外部服务将 IP 地址列入白名单时很有用。