何时使用 Public 子网与私有子网?

When to use Public Subnet vs Private Subnet?

我有一个要向全世界开放的 Web 应用程序。我应该简单地创建 public 子网并将此实例添加到其中,还是应该创建私有子网、NAT、负载平衡器并将此实例添加到其中?

我希望此应用程序只能由某些 IP 访问。

您推荐哪种方式,为什么? 哪种方法最安全且成本效益高?

我会推荐私有子网中的实例,因为这是安全的方法,即在私有子网中启动一个实例并将 LB 放在实例的顶部。

  • 这种方法的最大优势是您的实例是安全的,并且无法从 public.
  • 访问

具有私有实例的高级外观或一般示例可以是

要访问您的私有实例,您应该在 public 子网中有一个实例,您可以从中访问该实例,通常 AWS 将其称为堡垒。

securing-your-vpc-using-public-and-private-subnets-with-network-acl

如果您只有一个实例:

  • 不需要负载平衡器,因为不需要平衡流量
  • 不需要私有子网,但它需要public可以访问
  • 使用安全组 限制访问应可访问的最少端口(例如端口 80、443)以及登录能力(但仅限于 您的 IP地址)

如果您有多个实例,则需要负载均衡器。在这种情况下:

  • 将负载平衡器放在 public 子网中
  • 将实例放在私有子网中以提高安全性

但是,您实际上可以将 所有内容 保留在 public 子网中,并且仅使用安全组来控制访问。安全性的正常目标是 多层安全性让事情变得更安全。但是,设计选择取决于您。