数据库集群必须通过安全组严格隔离,仅允许可信业务安全组内网访问,禁用公网暴露与默认放通规则,并定期验证权限配置。

数据库集群不应暴露在公网,必须严格限制访问来源,安全组是最直接、最有效的第一道隔离手段。核心思路是:只放行业务服务器所在安全组的内网流量,拒绝所有其他来源,包括0.0.0.0/0和未授权IP段。
明确访问关系,划分安全组边界
数据库实例和业务应用实例不能共用同一个安全组。 - 为数据库集群单独创建一个安全组(例如命名为 `sg-db-prod`) - 为业务服务器(如Web服务、API服务)创建另一个安全组(例如 `sg-app-prod`) - 不要给数据库安全组绑定任何公网IP或“全部允许”规则
配置入方向规则:仅允许可信内网源访问
在 `sg-db-prod` 中添加一条入方向规则: - 方向:**入方向** - 协议类型:TCP(或按实际数据库协议选,如MySQL用3306,PostgreSQL用5432,Redis用6379) - 端口范围:填写对应数据库端口(如 `3306/3306`) - 授权对象:**填写业务服务器所在安全组ID**(例如 `sg-app-prod`),不是IP地址 - 说明:该方式基于安全组ID授权,自动适配组内所有ECS实例的内网IP,无需手动维护IP列表
如果业务服务器不在同一安全组,或需更精细控制,可改用内网IP段授权: - 授权对象填 `172.16.0.0/12` 或 `192.168.0.0/16`(根据VPC实际网段) - 切勿使用 0.0.0.0/0 或公网IP段
关闭默认放通,禁用出方向风险外连
- 检查数据库安全组的出方向规则:默认通常为“全部允许”,应改为 **自定义规则 + 显式拒绝高危目标** - 可添加一条出方向规则:协议TCP,目的端口80/443,目的地址为已知恶意IP段(如有),动作设为“拒绝” - 更稳妥做法是:将出方向策略设为“拒绝全部”,再按需添加白名单(如仅允许访问内部监控服务、NTP服务器等)
验证与日常维护要点
- 创建后,从非授权服务器(如跳板机或测试ECS)尝试 telnet 数据库IP 端口,应不通 - 从授权业务服务器执行连接测试,确认可正常通信 - 定期检查安全组绑定关系,避免误将数据库实例加入开放型安全组 - 若使用RDS等托管数据库,同样需在其网络白名单中只添加业务VPC内网段,而非开启公网或全内网放通
不复杂但容易忽略











