初めまして。植松です。
AWSにまつわるTipsを不定期で書いていこうと思います。
1回目は最近よく通知が来るRDSの証明書アップデートについて。
アプリケーションが SSL/TLS プロトコルを使用してこれらのインスタンスに接続する場合、既存のデータベースインスタンスへの接続障害を防ぐために、2024 年 8 月 22 日までにアクションを実行する必要があります。現在接続に SSL を使用していない場合でも、データベースサーバー証明書の有効期限が切れると影響を受ける可能性があるため、CA を更新することをお勧めします。
メールにはこのような記載があるので、運用中のアプリケーションとRDS(MySQL)間がSSL/TLSで繋がっているかを確認する方法をいくつか記載します。
1)パラメータグループの確認
RDSのパラメータグループを確認します。
require_secure_transport=1 となっている場合、RDSへの接続にSSL/TLSが強制されていますので、証明書のアップデートが必要です。
2)コマンドラインからDBにログインして確認
以下のコマンドでログインができた場合、SSL/TLSを使わずにアクセスができています。
$ mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com -u testuser -p
※SSL/TLSが必要な場合は以下のようなコマンドになります。
$ mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com -u testuser -p --ssl-ca=[full path]global-bundle.pem --ssl-mode=VERIFY_IDENTITY
そして、DBへログイン後以下のクエリを実行することで、暗号化通信を利用しているか確認できます。
mysql> SHOW STATUS LIKE 'Ssl_cipher';
暗号化通信を利用している場合、valueに暗号スイートが表示されます。
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| Ssl_cipher | TLS_AES_256_GCM_SHA384 |
+---------------+------------------------+
上記例だと、暗号スイートが表示されているので、何かしらのアプリケーションでSSL/TLSを使っていることになります。
そのため、証明書のアップデートが必要です。
(valueに何も表示されなければ、証明書のアップデートは不要)
また、Amazon RDS for MySQLバージョン5.7または8.0を使用、かつ、Performance Schemaが有効になっている場合、次のクエリを実行することで、SSL/TLSが使用されているかどうかを確認できます。
mysql> SELECT id, user, host, connection_type
FROM performance_schema.threads pst
INNER JOIN information_schema.processlist isp
ON pst.processlist_id = isp.id;
出力例では、adminとwebapp1ユーザーがSSL/TLSを使っていることがわかります。
+----+-----------------+------------------+-----------------+
| id | user | host | connection_type |
+----+-----------------+------------------+-----------------+
| 8 | admin | 10.0.4.249:42590 | SSL/TLS |
| 4 | event_scheduler | localhost | NULL |
| 10 | webapp1 | 159.28.1.1:42189 | SSL/TLS |
+----+-----------------+------------------+-----------------+
証明書のアップデートが必要な場合
どのアプリケーションがSSL/TLSを使っているかを設定ファイルなどで確認します。
その後、アプリケーションで使用している証明書をアップデートし、RDSの証明書をアップデートする流れになります。
詳しい方法は公式サイトをご確認ください。
RDSに設定する証明書の種類は複数あるので、利用するアプリケーションによって選択してください。
証明書バンドルの一覧はこちらから確認、DLできます。
証明書のアップデートが不要な場合
特に対応は不要です。過去の証明書アップデートの時は、自動的に別の証明書にRDSの設定が変わったので、今回も自動的に変わると思われます。
さいごに
今回の証明書アップデートによって、証明書の期限が40年とだいぶ長くなります。(rds-ca-rsa2048-g1の場合。rds-ca-ecc384-g1とrds-ca-rsa4096-g1はなんと100年w)
なので、今回の作業が終わればほぼ遭遇することがないのかなと思います。