Aurora RDS PostgreSQL的AWS网络配置

💡 原文英文,约1700词,阅读约需6分钟。
📝

内容提要

本文介绍在AWS上部署Aurora RDS PostgreSQL前需掌握的网络概念。核心包括:VPC定义私有IP范围(如10.0.0.0/16),子网按可用区划分,公共子网通过互联网网关访问,私有子网经NAT网关出站。安全组控制流量,数据库子网组需跨至少两个可用区以实现高可用。Aurora数据库应置于私有子网,通过堡垒机或VPN访问,确保安全。

🔎

延伸解读

网络设计的关键决策

在创建Aurora RDS PostgreSQL之前,网络设计直接影响高可用性和安全性。文章强调,VPC的CIDR块选择需避免与本地网络重叠,否则无法通过VPC Peering或VPN连接。同时,数据库子网组必须跨至少两个可用区,这是Aurora实现故障转移和六副本存储的基础。因此,规划时应预留足够的IP空间,并确保子网分布合理。

安全组与路由的协同作用

安全组和路由表是两层独立的控制机制。路由决定流量能否到达资源,安全组决定资源是否接受流量。文章指出,安全组可以引用其他安全组而非IP,这样即使实例IP变化,规则依然有效。这种设计简化了管理,但需注意安全组默认拒绝所有入站流量,必须显式允许来自应用层或堡垒机的访问。

无需公网子网的替代方案

虽然堡垒机加公网子网是常见模式,但并非必需。文章提到,通过VPN、AWS Systems Manager Session Manager或同VPC内的应用服务器,可以完全避免公网子网。这意味着整个VPC可以保持私有,仅需两个私有子网用于数据库子网组。这减少了攻击面,但需确保运维通道的可用性。

Q&A

在AWS上部署Aurora RDS PostgreSQL之前,需要掌握哪些核心网络概念?

需要掌握VPC、子网、互联网网关、NAT网关、路由表、安全组和数据库子网组等概念。VPC定义私有IP范围,子网按可用区划分,公共子网通过互联网网关访问,私有子网通过NAT网关出站,安全组控制流量,数据库子网组需跨至少两个可用区。

CIDR表示法中,/16和/24分别代表多少个IP地址?

/16表示前16位固定,即前两个八位组固定,提供65,536个IP地址;/24表示前24位固定,即前三个八位组固定,提供256个IP地址。

为什么在AWS VPC中应该使用私有IP范围而不是公共IP范围?

使用私有IP范围(如RFC 1918定义的10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)可以避免IP冲突和IP shadowing问题。如果使用公共IP范围,内部流量可能会错误地路由到本地,而无法到达真正的公共目的地。

公共子网和私有子网的区别是什么?

公共子网的路由表包含指向互联网网关(IGW)的默认路由,允许资源与互联网通信;私有子网没有这样的路由,通常通过NAT网关进行出站访问,但不允许入站互联网流量。这种区别是路由配置的结果,而非子网本身的固有属性。

为什么Aurora RDS需要数据库子网组跨越至少两个可用区?

为了高可用性。如果跨多个可用区,当某个可用区发生故障时,数据库可以故障转移到另一个可用区。Aurora的存储层还会在三个可用区中自动复制六份数据,因此需要子网分布在多个可用区。

NAT网关的作用是什么?

NAT网关位于公共子网中,允许私有子网中的资源发起出站连接(如下载补丁、调用外部API),但阻止外部主动发起入站连接。它充当单向门,确保私有资源安全地访问互联网。

安全组与路由表在流量控制中分别扮演什么角色?

路由表控制流量能否物理到达资源(通过路由规则),而安全组作为虚拟防火墙,控制资源是否接受到达的流量。两者必须同时允许流量,流量才能成功到达资源。安全组是有状态的,默认拒绝入站,默认允许出站,并且可以引用其他安全组作为源。

如何通过安全组引用实现仅允许应用服务器访问数据库?

在数据库的安全组中添加入站规则,允许来自应用服务器安全组(如sg-app)的流量。这样,任何附加了sg-app的实例都可以访问数据库,无需指定IP地址,且IP变化时规则不会失效。

是否必须使用公共子网和堡垒机来访问Aurora数据库?

不是必须的。如果使用VPN、AWS Systems Manager Session Manager或同一VPC内的应用服务器,则无需公共子网或堡垒机。整个VPC可以完全私有,只需确保数据库子网组包含至少两个不同可用区的私有子网。

🏷️

标签

➡️

继续阅读