Amazon Web Services ブログ

緊急かつ重要なお知らせ ー Amazon RDS、Aurora、DocumentDB の証明書をローテーションしてください

2020年2月5日追記: 2020年2月5日から3月5日の間に、RDSは再起動を行わずにRDSデータベースインスタンスに新しい証明書を自動的に配置することをご案内していました。しかし、お客様のフィードバックに基づき、証明書の更新を完了させるためにできるだけ多くの時間をお使いいただけるように、RDSは2020年3月5日まで自動的にデータベース証明書をステージングも更新も行わないこととなりました。これにより、2020年3月5日まで新しいCA証明書を使用するようにアプリケーションとデータベースの更新を行っていただけるようになりました。

**********************************

お客様には E メールやコンソール上の通知により連絡が届いていると思いますが、驚かれられた方のために、重ねてお伝えします。

すぐにローテーションを行ってください
Amazon AuroraAmazon Relational Database Service (RDS)、もしくは、Amazon DocumentDB をご使用中のお客様で、データベースインスタンスへの接続時に SSL/TLS 証明書の検証をご利用になっている方々は、最新の証明書のダウンロードとインストールをした上で対象のインスタンスにおいて認証機関 (CA) のローテーションを行い、そのインスタンスを再起動してください。

SSL/TLS 接続、もしくは証明書の検証を利用していないお客様は特に更新を行う必要はありません。ただし、将来 SSL/TLS 接続を導入することが決定済みである場合は、それに備えて更新しておくことをお勧めします。その場合は、CLI の新しいオプションを使って、再起動はさせずに最新証明書のローテーションとステージングのみ行うことができます。

この新しい証明書 (CA-2019) は、古い証明書 (CA-2015) を含む証明書バンドルの一部分として提供されるので、卵と鶏とちらが先かといった状況に陥ることなく、スムーズな変更ができるようになっています。

現在の状況
RDS、Aurora、DocumentDB 用の SSL/TLS 証明書が失効し、メンテナンスおよびセキュリティ管理に関する当社の標準規律に則った 5 年に 1 度の置き換えが行われます。それに関して、重要なスケジュールを次に明記しておきます。

2019 年 9 月 19 日 ー CA-2019 証明書が利用可能になりました。

2020 年 1 月 14 日 ー この日以降、作成されるインスタンスは、新しい証明書 (CA-2019) を使用するようになります。必要性がある場合は、一時的に古い証明書に戻すこともできます。

2020 年 2 月 5 日~3 月 5 日 ー RDS において、既存インスタンスに対する新しい証明書の (インストールのみで有効化はしない) ステージングが行われます。インスタンスを再起動することで、この証明書が有効化されます。

2020 年 3 月 5 日 ー CA-2015 が失効します。証明書の検証を使用しているアプリケーションで更新を行っていないものは、接続ができなくなります。

ローテーションの方法
筆者は、今月始めに Amazon RDS for MySQL のデータベースインスタンスを作成していましたが、本ブログ記事執筆のためにそれを放置していました。すると、前出のスクリーンショットで示した RDS コンソールのように、証明書の更新を促す通知が表示されました。

新しい SSL/TLS 証明書のダウンロードは、「SSL/TLS を使用した DB インスタンスへの接続の暗号化」から行えます。データベースクライアントで証明書チェーンを処理できる場合は、ルート証明書をダウンロードし、それをすべてのリージョンに適用できます。それ以外の場合は、データベースインスタンスが存在する個々のリージョンで、証明書をダウンロードします。今回は、新旧両方の証明書を含んでいる証明書バンドルをダウンロードすることにします。

次に、クライアントアプリケーションを更新して、新しい証明書を使用します。このプロセスは、アプリケーションやデータベースクライアントごとに違ってくるので、ここで統一的に説明することはできません。

クライアントのアプリケーションが更新できたら、認証機関 (CA) を rds-ca-2019 に変更します。次のようにコンソールからインスタンスを修正し、新しい CA を選択します。

また、CLI からであれば次のようにもできます。

$ aws rds modify-db-instance --db-instance-identifier database-1 \
  --ca-certificate-identifier rds-ca-2019

この変更は、次回のメンテナンスウィンドウ中に有効化されます。この変更を即刻有効にしたい場合は次のようにします。

$ aws rds modify-db-instance --db-instance-identifier database-1 \
  --ca-certificate-identifier rds-ca-2019 --apply-immediately

インスタンスが (即座に、あるいはメンテナンスウィンドウの間に) 再起動されたら、アプリケーションのテストをし、想定通りに機能しているか確認します。

SSL を使用しておらず再起動させたくない場合は、--no-certificate-rotation-restart を使用します。

$ aws rds modify-db-instance --db-instance-identifier database-1 \
  --ca-certificate-identifier rds-ca-2019 --no-certificate-rotation-restart

これにより次回のメンテナンスウィンドウ時にステージングが行われた後、計画的でもそうでなくても再起動時が行われれば、新しい証明書がデータベースエンジンによりピックアップされます。

また、RDS の API 関数 ModifyDBInstance、もしくは、CloudFormation テンプレートを使い、認証機関を変更することもできます。

繰り返しになりますが、ここまでの手順は、2020 年 3 月 5 日までに完了してください。そうしないと、アプリケーションとデータベースインスタンスの間での、SSL か TLS を使う接続が失われる可能性があります。

知っておくべきこと
次に、知っておくべき重要な事項をいくつか明記しておきます。

Amazon Aurora Serverless ー このデータベースエンジンでは、証明書のローテーションを AWS Certificate Manager (ACM) が管理するので、特別な作業は必要ありません。

リージョン ー データベースインスタンスでの証明書ローテーションは、すべての商用 AWS リージョンで必要です。ただし、以下のリージョンを除きます、アジアパシフィック (香港) 中東 (バーレーン) 中国 (寧夏)

クラスタースケーリング ー 既存クラスターにノードを追加する場合、既存ノードの 1 つ以上に CA-2019 が適用されていれば、新たなノードでも自動的にこれが適用されます。そうでない場合は、CA-2015 の証明書が適用されます。

詳細情報
追加の情報は次のリンク先をご参照ください。

Jeff;