保障数据库的安全隔离是云上架构的基础要求。在部署 AWS 环境时,若为了调试方便而开启 Amazon RDS 的公网访问,会将核心数据暴露在互联网中,增加被扫描和攻击的风险。
本文介绍如何利用 Amazon VPC 和安全组,配置 Amazon EC2 到 RDS 的纯内网连接,从而阻断公网暴露风险。该配置适用于需要连接数据库的后端开发人员及负责网络规划的架构师。
一、 业务安全要求:为何应禁止 RDS 公网访问
在 AWS 安全最佳实践中,禁止 RDS 公网访问是基本的合规要求:
- 减少攻击面:关闭公网访问可避免数据库端口(如 MySQL 3306、PostgreSQL 5432)被自动化脚本扫描或暴力破解。
- 满足合规基线:多数行业安全标准(如 PCI-DSS、等保等)均要求核心存储位于私有网络,禁止互联网直接路由。
- 优化传输路径:内网连接通过 AWS 骨干网通信,延迟更低且能规避公网嗅探风险。
二、 核心架构:VPC 内网连接的逻辑
实现 EC2 访问 RDS 的内网互通,通常依托 VPC 的公私子网隔离架构:
- 公有子网 (Public Subnet):部署 EC2 实例,通过 Internet Gateway (IGW) 接收外部请求。
- 私有子网 (Private Subnet):部署 RDS 实例,不配置指向 IGW 的路由,外部无法直接访问。
- 安全组 (Security Group):作为虚拟防火墙,通过配置 RDS 安全组,仅允许来自特定 EC2 安全组的流量进入。
三、 操作步骤:实现 EC2 内网连接 RDS
1. 环境确认
登录 AWS 管理控制台,确认以下资源位于同一区域(Region)及同一 VPC 下:
* 运行中的 EC2 实例(记录其安全组 ID,如 sg-ec2)。
* 运行中的 RDS 实例(记录其安全组 ID,如 sg-rds)。
* 确认 VPC 包含公有与私有子网。
提示:若企业在 AWS 账户注册、VPC 网络规划或基础排障时遇到困难,翼龙云/Yilongcloud 作为渠道合作伙伴可提供开户协助与售后指导,帮助梳理注册事项及架构规划。
2. 关闭 RDS 公开访问属性
若 RDS 实例已开启公网访问,需按以下步骤调整:
(注:2026 年 AWS 控制台 UI 可能有微调,请以实际界面为准)
- 在 RDS 控制台点击 Databases。
- 选中目标实例,点击 Modify。
- 在 Connectivity 栏目下,将 Publicly Accessible 设为 No。
- 点击 Continue,选择 Apply immediately 并确认。
3. 配置安全组规则
步骤 A:检查 EC2 安全组 (sg-ec2)
确保 EC2 的出站规则允许访问数据库端口。默认通常为允许所有出站流量。
步骤 B:修改 RDS 安全组 (sg-rds)
1. 在 EC2 控制台选择 Security Groups。
2. 选中 RDS 关联的安全组 sg-rds。
3. 在 Inbound rules 中点击 Edit inbound rules。
4. 删除来源为 0.0.0.0/0 的规则。
5. 添加新规则:
* Type:选择对应的数据库引擎(如 MySQL/Aurora 或 PostgreSQL)。
* Source:选择 Custom,输入 EC2 的安全组 ID(sg-ec2)。
6. 保存设置。
四、 连接验证与排障
连接验证
通过 SSH 登录 EC2 实例,使用命令行工具测试连接。以 MySQL 为例:
mysql -h <RDS端点地址> -P 3306 -u <用户名> -p
若能进入数据库提示符,则说明内网连接成功。
常见排障
- 连接超时:检查 RDS 安全组入站规则是否正确引用了 EC2 的安全组 ID;确认两者是否在同一 VPC 内;检查网络 ACL(NACL)是否有拦截。
- 权限拒绝:若网络已通但无法登录,请核对数据库账号密码或 IAM 身份验证配置。
五、 方案对比
| 维度 | 公网访问 (不推荐) | VPC 内网访问 (推荐) |
|---|---|---|
| 安全性 | 低。易受扫描和暴力破解。 | 高。外部不可路由,仅限内网访问。 |
| 性能 | 受公网波动影响。 | 稳定。低延迟、高吞吐。 |
| 成本 | 产生公网流量费用。 | 同可用区内网传输通常免费。 |
| 合规性 | 难以满足严苛合规要求。 | 符合主流行业安全标准。 |
六、 常见问题 (FAQ)
1. AWS VPC 是什么,适合哪些场景,选型时要确认什么?
AWS 的逻辑隔离虚拟网络,可配置网段、子网、路由、网关和访问控制并承载云资源。采购前应核对地域、版本、配额、计费项和开通条件,不能只按产品名称判断。先明确业务规模、性能、可用性、数据保护、网络和运维要求,再核对当前产品支持矩阵。价格、活动、支付、可用性和渠道政策具有时效性,应以当期控制台、官方文档和可核验渠道信息为准。
2. AWS 云服务器适合哪些业务场景,选型时应关注什么?
AWS 云服务器是否适合,取决于业务类型、用户地区、性能、数据、可用性、预算和运维能力。应先明确约束,再用小规模验证结果决定。选型时需关注:用户位置与延迟要求;应用类型(网站、API、AI 等);并发与数据量;高可用与安全要求;团队运维能力;以及整体预算。具体可用性、价格和产品能力会随账号地区及厂商规则变化,应以当期控制台或官方文档为准。
3. AWS 云数据库与自建数据库怎么选?
AWS 云数据库适合希望降低部署、备份和高可用运维负担的团队;自建数据库灵活度更高,但需要自行承担补丁、备份、监控、容灾和恢复。对比时应考量:数据库引擎兼容性、高可用架构、备份恢复能力(RPO/RTO)、性能扩展性以及包含运维人力在内的总成本。重要系统应先做兼容性和恢复测试。
4. 如何配置 AWS 安全组允许 EC2 访问 RDS?
最佳实践是采用“安全组引用”的方式。在 RDS 绑定的安全组入站规则中,将目标端口(如 3306 或 5432)的来源(Source)设置为 EC2 实例所绑定的安全组 ID,而不是具体的 IP 地址。这样即使 EC2 的内网 IP 发生变化,或者该安全组下新增了多台 EC2 实例,网络授权依然自动生效,既安全又易于维护。
七、 总结与资源清理
通过 VPC 私有子网和安全组的精细化配置,可以有效降低 RDS 的安全风险。在生产环境中,应始终坚持最小权限原则。
资源清理提醒:若为测试操作,完成后请及时删除或停止不再使用的 EC2 和 RDS 实例,并清理弹性 IP (EIP) 及自动快照,以避免产生额外费用。