02.28 RDS使用有疑问?我们为你解答

为了方便大家更好的使用 AWS 的各项产品,我们将开设答疑专栏帮助大家解决在 AWS 使用中遇到的问题。

本期答疑:关于近期 RDS 需要更新 SSL / TLS 证书说明排查连接不到 RDS 实例的可能原因


关于近期 RDS 需要更新SSL / TLS 证书说明:

  • 哪些⽤户需要采取措施:

在 2019.11.1 之前创建的 RDS 或者 Aurora 实例,并且利⽤ SSL 或者 TLS ⽅法登录的客户。⽤户收到的邮件⾥提及了在哪些 region 使⽤了 RDS 或者 Aurora。如果不使⽤ SSL 或者 TLS 协议连接实例,短期内也不打算使⽤,则⽆需采取措施。任何在 2019 年 11 ⽉ 1 号之后创建的新实例,都会默认使⽤新 的证书,也⽆需采取任何措施。

  • 为什么要更改CA证书:

遵循安全 Y 佳实践,AWS 会定期更换 CA 证书,来确保 RDS 的安全登陆。⽬前 AWS 发布了 Y 新的 CA 证书,现有证书(旧的 CA 证书:rds-ca-2015)会在 2020 年 3 ⽉ 5 号正式过期,届时,现有 CA 证书将⽆法⽤于 RDS 的 SSL /TLS 登录。

  • 如何更改以及需要注意的事项:

步骤:见附录

注意事项:

1.证书替换需要在 2020 年 2 ⽉ 5 ⽇之前完成, RDS 单 az 和 multi-az 的情况都需要更新证书。更新数据库实例的 CA 证书时会中断连接,建议放到维护时段。

2.RDS 的宕机时间取决于重启 RDS 实例的时间,⽆论是否有 Multi-AZ 设置。

3.如果应⽤程序不使⽤ SSL / TLS 进⾏连接 RDS,连接则不受影响。如果使⽤了 SSL / TLS,客户端应⽤程序必须先在其信任库中添加新的 CA 证书之后,再更新数据库实例以使⽤新的 CA 证书。

4.强烈建议先在开发或测试环境中测试这些步骤和评估宕机时间,然后再将这些步骤应⽤于⽣产环境。

5.如果⽤户在 2 ⽉ 5 ⽇之前没有完成,系统将在 2020 年 2 ⽉ 5 ⽇之后,以及 2020 年 3 ⽉ 5 ⽇截⽌⽇期之前开始为 RDS 数据库实例安排证书轮换。⾃动更新将安排在维护时段内。

  • 关于是否需要开启 SSL 连接的建议:

1.对于⾮常敏感核⼼的数据或者出于端对端加密合规性要求,可以采⽤ SSL ⽅式保障数据安全性;

2.对于不产⽣核⼼敏感数据的应⽤,或者纯内⽹访问,可以不采⽤ SSL ⽅式,毕竟 SSL 涉及加密也会有性能的损耗。

附录:具体修改步骤

参考官⽅⽂档:

https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html

提示:进⾏此更改时请确保事先更新了客户端 CA 证书。

1.下载新的 SSL / TLS 证书。

2.更新使⽤数据库的应⽤程序,以使⽤新的 SSL / TLS 证书。

注意:证书捆绑包同时包含新旧 CA 的证书,因此您可以安全地升级应⽤程序并在过渡期间保持连接性。

3.使⽤ AWS 管理控制台或 AWS CLI 将数据库实例的 CA 证书从 rds-ca-2015 更改为 rds-ca-2019。

重要:此操作将重新启动数据库实例。默认情况此操作会在下⼀个维护窗⼝中运⾏。也可以选择⽴即运⾏。

1)使⽤控制台⽅式:

A. 打开 Amazon RDS 控制台 ,点击需要做更改的数据库

B. 选择修改:

RDS使用有疑问?我们为你解答


C. 在“ 修改数据库实例”⻚⾯,找到⽹络和安全性部分,选择 rds-ca-2019

RDS使用有疑问?我们为你解答


D. 选择继续,然后检查修改摘要;

选择⽴即应⽤,此选项会⽴即⽣效但是会导致数据库连接中断;

建议选择在⼀个维护时段应⽤,此更改会在下⼀个维护时段进⾏;

RDS使用有疑问?我们为你解答

RDS使用有疑问?我们为你解答


2)AWS CLI ⽅式:

修改 mydbinstance 为待修改数据库标志符(控制台数据名称)

—no-apply-immediately 表示在下⼀个维护时段修改

—apply-immediately 表示⽴即应用

Linux,OS X或Unix:

RDS使用有疑问?我们为你解答

Windows:

RDS使用有疑问?我们为你解答

排查连接不到 RDS实例的可能原因

  • 前提条件

请确保⾃⼰的连接⽅式是正确的,以及尝试连接的⽤户名和密码正确。如果您不知道怎么样连接,请参考如何连接到 RDS 数据库实例。以 MySQL 举例,通过 MySQL 客户端⽤命令⾏进⾏连接的⽅法如下,其他 RDS 连接⽅法,请参考此篇⽂章。如您使⽤的是 Amazon Aurora ,请参考如何连接到 Aurora 实例。

RDS使用有疑问?我们为你解答

  • 故障排除

0.测试与 Amazon RDS 数据库实例的连接

Linux 和 mac 系统下,使⽤如下命令测试与数据库实例的连接

RDS使用有疑问?我们为你解答

windows 系统下, 使⽤

RDS使用有疑问?我们为你解答

如果命令返回 Connection to <endpoint> succeeded ,则数据库本身⽹络和端⼝是通的。请直接跳到 4.其他可能原因 排查。如否,则请依次检查 1. 安全组,2. 可⻅性 3. ⼦⽹组 三个⼩节。/<endpoint>

1. 检查安全组

安全组中的 source 为允许访问的 ip 源, port 为允许访问的端⼝。请检查该数据库实例是否有开放相应的端⼝,并且允许您的 ip 段访问(source)。不同 RDS 引擎所需要的默认端⼝是不同的,如 MySQL / Aurora / MariaDB 的默认端⼝为 3306,SQL Server 默认端⼝为1433,Oracle 为 1521,PostgreSQL 默认端⼝ 5432。

为了安全考虑,请尽量将您的 source 定义为只允许特定的 ip 地址段访问(如下图所示,单个ip需要在最后加/32的后缀), 请检查当前机器的 ip是否符合此 ip 段。

另外,如果在办公局域⽹中, 您的 ip 地址可能⽆法固定,每次上⽹会发⽣变化,在这种情况下,此时建议设置 source 为您的办公⽹络的 ip range。

RDS使用有疑问?我们为你解答

如图所示,仅对 172.31.0.0/16 开放了供 MySQL 连接的 3306 端⼝,如果您⽬前尝试连接的 ip 不在此⽹段中,将会连接失败。

RDS使用有疑问?我们为你解答


2. 检查数据库公开性

为了安全考虑,我们强烈建议您的 RDS 设置为不对外界可⻅的 。但应当注意的是,此时外⽹是⽆法与这台数据库建⽴连接的,只有 VPC 内的实例可以与之建⽴连接。也就是说,此时直接⽤您本地的客户端是⽆法连接到该台 RDS 的。

RDS使用有疑问?我们为你解答

解决⽅法为:先 ssh 到同 VPC 下的 EC2 ,在同 VPC 内的 EC2 上发起与这台 RDS 的连接(原理如下图所示)。此时,⼀定要注意,需要⼆次检查 RDS 的安全组,是否允许了该台 EC2 IP 的访问;EC2 本身是否允许本地 IP 建⽴ ssh 连接 (22端⼝),以及 EC2 是否在公有⼦⽹⾥。

RDS使用有疑问?我们为你解答

3.检查⼦⽹组

如果您的公开性(public accessibility)选择了 “是”,但仍然⽆法连接,请检查⼦⽹组。如果⼦⽹组含有私有⼦⽹的话,也可能会导致数据库⽆法连接。

私有⼦⽹是指路由表中没有与 IGW 相关联路由的⼦⽹,外界不能与私有⼦⽹建⽴连接。反之,公有⼦⽹是指有指向 IGW 路由的⼦⽹,外界可以访问。

此时解决⽅法为:

修改私有⼦⽹的路由表,添加 IGW (Internet ⽹关)的路由,使之成为公有⼦⽹ ;

或者重新启动 RDS 到全部含有public subnet 的⼦⽹组 ( subnet group )中。

4.其他可能原因

请检查您的数据库实例是否处于 available 可⽤状态。

请检查您的⽹络提供商是否屏蔽了 3306 等特殊端⼝,并尝试更换密码。公司 VPN 或者公共⽹络等有可能会屏蔽这些特殊端⼝。

如果您未使⽤ master 登录,⽽是使⽤新建的 RDS ⽤户,需要配置允许该⽤户名登录的 IP,并使⽤对应的 IP 登录。


分享到:


相關文章: