RDSの新規構築時に認証局(CA)の設定を必ず確認しましょう

RDSを新規構築する際は証明書の自動ローテーションに対応した認証局を使用しましょう!
2023.08.31

こんにちは!コンサル部のinomaso(@inomasosan)です。

先日、構築したばかりのRDSに対して証明書更新の通知を見つけました。
これまでRDS構築時に認証機関を意識していなかったのですが、デフォルトの証明書(rds-ca-2019)だと2024/8に期限切れとなるため、注意喚起のブログとなります。

ある朝「証明書の更新」の通知を見つけてしまった

ある朝、RDSを確認しようとコンソールを開いたところ、サイドバーに証明書の更新が生えていることに気がつきました。
詳細を確認してみると、最近構築したはずのRDSの証明書が2024/8に有効期限が切れるため、更新が必要と表示されていました。

蘇る過去の証明書更新

2020年にRDSの証明書更新で苦労した方は多かったのではないでしょうか。
というのも証明書によるSSL/TLS通信を使用している・いないに関わらず更新が必須だったからです。
証明書の更新は短時間のダウンタイムが発生するため、当時は社内のシステム担当者への事前調整に奔走していました。

運用者の目線としては、回避可能なメンテナンスは事前に対応しておきたいところです。

認証機関に有効期限が40年と100年の認証局が利用可能

2023/1のアップデートで、rds-ca-2019 (デフォルト) 以外の認証局が選択可能になりました。
詳細は以下のブログを確認して頂きたいのですが、従来のシステムライフサイクルが約5年に対して、それを大幅に超える有効期限として40年と100年の認証局が用意されました。

アップデートで追加された認証局を利用するDBインスタンス証明書は、有効期限が切れる前に自動ローテーションすることで長期的な対応を可能としているようです。

2023/8の時点でrds-ca-2019 (デフォルト)を選択する理由は基本的には無い認識です。
RDSの新規構築時はrds-ca-rsa2048-g1rds-ca-rsa4096-g1rds-ca-ecc384-g1のいずれかを選択した方が良いでしょう。

DBエンジン毎に認証局やローテーション時の挙動が異なる

DBエンジンによって、使用可能な認証局が制限があったり、証明書のローテーションで再起動が必要な場合があります。

describe-db-engine-versionsコマンドにて、以下の項目から確認することができます。

  • 使用可能なCA一覧:SupportedCACertificateIdentifiers
  • 証明書のローテーション時の再起動有無:SupportsCertificateRotationWithoutRestart

例えばOracle Standard Edition Twoのデフォルト(最新)エンジンバージョンについては、以下のコマンドで確認できます。

コマンド

aws rds describe-db-engine-versions --default-only --engine oracle-se2

結果

{
    "DBEngineVersions": [
        {
            "Engine": "oracle-se2",
            "EngineVersion": "19.0.0.0.ru-2023-07.rur-2023-07.r1",
            "DBParameterGroupFamily": "oracle-se2-19",
            "DBEngineDescription": "Oracle Database Standard Edition Two",
            "DBEngineVersionDescription": "Oracle 19.0.0.0.ru-2023-07.rur-2023-07.r1",
            "DefaultCharacterSet": {
                "CharacterSetName": "AL32UTF8",
                "CharacterSetDescription": "Unicode 5.0 UTF-8 Universal character set"
            },
            "ValidUpgradeTarget": [
                {
                    "Engine": "oracle-se2-cdb",
                    "EngineVersion": "19.0.0.0.ru-2023-07.rur-2023-07.r1",
                    "Description": "Oracle 19.0.0.0.ru-2023-07.rur-2023-07.r1",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": false
                }
            ],
            "ExportableLogTypes": [
                "alert",
                "audit",
                "listener",
                "oemagent",
                "trace"
            ],
            "SupportsLogExportsToCloudwatchLogs": true,
            "SupportsReadReplica": false,
            "SupportedFeatureNames": [
                "EFS_INTEGRATION",
                "S3_INTEGRATION"
            ],
            "Status": "available",
            "SupportsParallelQuery": false,
            "SupportsGlobalDatabases": false,
            "MajorEngineVersion": "19",
            "SupportsBabelfish": false,
            "SupportsCertificateRotationWithoutRestart": true,
            "SupportedCACertificateIdentifiers": [
                "rds-ca-2019",
                "rds-ca-rsa4096-g1",
                "rds-ca-rsa2048-g1"
            ],
            "SupportsLocalWriteForwarding": false
        }
    ]
}

まとめ

RDSに自動ローテーションに対応した認証局が追加されたので、構築時はそちらの認証局を選ぶようにしましょう。

この記事が、どなたかのお役に立てば幸いです。それでは!