在 Amazon VPC 中,VPC 创建向导允许创建单个“公共子网”,或者让向导创建“公共子网”和“私有子网”。最初,出于安全原因,公共和私有子网选项似乎不错,允许将 Web 服务器放在公共子网中,将数据库服务器放在私有子网中。
但后来我了解到,除非您将 Amazon ElasticIP 与 EC2 实例关联,否则无法从 Internet 访问公共子网中的 EC2 实例。因此,似乎只需一个公共子网配置,就可以选择不将 ElasticIP 与数据库服务器关联,最终获得同样的安全性。
有人能解释一下公有子网 + 私有子网配置的优点吗?这种配置的优点是否更多地与自动扩展有关,还是实际上只有一个公有子网不太安全?
答案1
拥有一个可以使用与公共子网不同的安全组进行控制的私有子网是一个安全边界。如果公共子网中的某个实例遭到黑客攻击,那么如果您的访问策略不是太宽松,那么入侵私有子网中的实例将变得更加困难。
答案2
除了安全问题之外,还有另一个方面需要考虑:如果您想允许没有弹性 IP 的实例访问互联网,则可能需要 2 个(或更多)不同的子网。
解释一下AWS 文档在 VPC 内,有三种方法可以允许实例访问互联网:
- 弹性 IP - 但我认为默认情况下你只能获得 5 个,然后你必须支付更多费用
- 通过虚拟专用网关路由流量 - 这要求您与公司(或家庭)网络建立硬件 VPN 连接
- 设置 NAT 实例并通过 NAT 路由所有出站流量
第三个选项很有趣,因为 NAT 实例必须位于“公共”子网内,所有出站流量都被路由到 Internet 网关,但所有其他实例都必须位于“私有”子网中,所有出站流量都被路由到 NAT 实例。
简而言之,如果您打算使用 NAT,则至少需要 2 个子网。