我什么时候应该创建不同的 VPC 而不仅仅是不同的子网?

When should I create different VPCs and not just different subnets?

我假设我正在处理一个项目。

创建不同的子网并使用 NACL 保护它们比创建不同的 VPC 更容易。

此外,如果您有 2 个 VPC,您可能需要通过 VPN 连接到它们...因此您需要 2 个 VPN 连接或 1 个 VPN + Transit Gateway。

我的问题是:

如果我正在处理一个项目,什么时候创建多个 VPC 才真正有趣?

您可能想要使用单独的 VPC 的原因有很多,最终由您自行决定是否使用它们。

多个环境

如果您有多个环境,例如dev、UAT、production 然后通过共享相同的 VPC 存在在不正确的环境中使用资源的风险,甚至将对生产数据库的访问权限授予非生产资源。

虽然授予访问权限可能不是有意的,但如果您没有生产代码接触这些资源,或者可以让生产资源与非生产资源对话。

通过将它们分开,您可以保证没有跨环境通信。通过将您的环境拆分为多个帐户,这可以更进一步。

合规

如果您有基于合规性的要求,例如 PCI-DSS 或 HIPAA,您可能需要查看 运行 一个 VPC 仅用于资源,运行 应用程序堆栈的一部分访问此敏感数据。

此 VPC 可以增强安全性以防止侵入任何这些资源,包括仅向有限数量的团队成员授予访问权限,而不是更广泛的团队。

跨多个应用程序的项目

您可能有一个跨多个应用程序拆分的项目,例如,与后端通信的前端层 API。为了防止前端直接与数据库通信,项目可以拆分为2个VPC。

然后,与其通过 VPC 对等直接使用其他 VPC 的资源,不如利用 VPC Endpoints 等功能与您的后端应用程序通信,从而防止前端访问完整的 VPC。

总结

总而言之,它是关于创建边界以保护您的数据并强制执行更严格的应用程序到应用程序通信。

它会增加您管理 VPC 的开销,但是使用 AWS Config 等服务,您将能够在需要时执行一组更严格的规则。