我想将我预置的 Amazon Aurora 数据库集群配置为可公开访问。此外,我想保护我的 Aurora 数据库集群与外部连接的安全。
简短描述
**先决条件:**要从 Amazon Virtual Private Cloud (Amazon VPC) 连接外部连接到数据库集群,集群实例必须具有公共 IP 地址。Aurora 数据库实例还必须在可公开访问的子网中运行。
您可以使用 TLS 保护来自 VPC 外部的连接。
解决方法
为您的数据库实例设置公共 IP 地址
要为数据库实例设置公共 IP 地址,请修改数据库实例。在 Modify DB instance(修改数据库实例)页面的 Connectivity(连接)下,展开 Additional configuration(其他配置)。在 Run the DB instance in a public subnet(在公有子网中运行数据库实例)下,选择 Publicly accessible(可公开访问)。
在公有子网中运行数据库实例
为确保您的数据库实例的子网可以访问互联网,请完成以下步骤:
- 验证您的 VPC 是否已连接互联网网关。
- 验证数据库子网组中的所有子网是否使用具有互联网网关的路由表。如果子网使用 VPC 的主路由表,请添加指向互联网网关 (0.0.0.0/0) 的路由。您还可以创建一个包含指向互联网网关路由的自定义路由表,然后将其关联至子网。
- 修改安全组的入站规则,以添加您要从中连接到数据库实例的源公共 IP 地址。配置您的规则设置:
对于 Type(类型),根据您的引擎选择 MySQL/Aurora 或 PostgreSQL。
对于 Source(源),手动输入 CIDR 范围,或选择 My IP(我的 IP)以从同一工作站连接到数据库实例。
保护数据库集群与 VPC 外部连接的安全
使用 TLS 加密来自 VPC 外部的连接。数据传输通过互联网进行。因此,最佳做法是使用 ssl-ca 参数传递 CA 证书,然后激活主机名验证。
要测试 TLS 连接,请根据您使用的 Aurora 版本运行以下命令。
Aurora MySQL 兼容版 5.7 及更高版本:
mysql -h Your-aurora-cluster-endpoint.cluster-abcdefghxyz.us-east-1.rds.amazonaws.com -u your-db-user --ssl-ca=rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY
**注意:**请将 Your-aurora-cluster-endpoint.cluster-abcdefghxyz.us-east-1.rds.amazonaws.com 替换为您的集群端点的 ARN,将 your-db-user 替换为您的数据库用户。
Amazon Aurora PostgreSQL 兼容版:
psql -h your-aurora-cluster-endpoint.cluster-abcdefghxyz.us-east-1.rds.amazonaws.com -p 5432 "dbname=postgres user=your-db-user sslrootcert=rds-combined-ca-bundle.pem sslmode=verify-full"
**注意:**请将 Your-aurora-cluster-endpoint.cluster-abcdefghxyz.us-east-1.rds.amazonaws.com 替换为您的集群端点的 ARN,将 your-db-user 替换为您的数据库用户。
您还可以对数据库集群强制使用 TLS。对于 Aurora MySQL 兼容版,请在数据库用户级别设置 TLS。对于 Aurora PostgreSQL 兼容版,请将 rds.force_ssl 参数设置为 1。
相关信息
与 Aurora MySQL 数据库集群的 TLS 连接
利用 SSL/TLS 保护 Aurora PostgreSQL 数据
如何使用堡垒主机从我的 Linux 或 macOS 计算机连接到我的 Amazon RDS 数据库实例?
如何在 Amazon RDS 控制台中配置私有和公有 Aurora 端点?