(小ネタ)2024/1/26以降でRDS新規構築時に認証局(CA)のデフォルトがrds-ca-rsa2048-g1に変更されるか試してみた

2024/1/31時点で、AWSアカウントによってはデフォルトCAが変更されていないようなので注意しましょう。
2024.01.31

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

以前、RDS新規構築時のデフォルトCA(rds-ca-2019)は2024/8に期限切れとなるため注意喚起のブログを書かせていただきました。

その後、Amazon Web Services ブログにて2024/1/26以降は新しいDBインスタンス作成時はデフォルトCAがrds-ca-rsa2048-g1に変更される旨が記載されているので試してみました。

先に結論

  • 2024/1/31時点でAWSアカウントによってはデフォルトCAが変更されてないようなので、もうしばらくは明示的に指定するのが良さそう
  • AWSマネジメントコンソールとAWS CLIで東京リージョンとバージニアリージョンにて検証したので、他のパターンだと別の結果になる可能性あり

デフォルトCAの変更概要

Amazon Web Services ブログのSSL/TLS 証明書を今すぐローテーションしましょう – Amazon RDS と Amazon Aurora については 2024 年に期限切れになりますに、以下の記載がありました。

2024 年 1 月 26 日以降 – 新しいデータベースインスタンスは、rds-ca-rsa2048-g1 証明書を使用するようデフォルト設定されます。新しいインスタンスのために別の証明書を使用することを希望する場合は、AWS コンソールまたは AWS CLI を使用して、どの証明書を使用するかを指定できます。詳細については、create-db-instance API ドキュメントを参照してください。

やってみた

RDS for MySQL 8.0.35の単一DBインスタンスの新規構築時に、デフォルトCAが変更されるか試していきます。 念の為、東京リージョンとバージニアリージョンで検証してみます。

AWSマネジメントコンソール

まずは東京リージョンから確認していきます。

RDSコンソールでデータベースの作成をクリックし、エンジンタイプをMySQL、デプロイオプションを単一の DB インスタンスに変更します。

画面下にスクロールし、接続にある認証機関を確認したところデフォルトはrds-ca-2019のままでした。

バージニアリージョンでも同様の手順で試しましたが、結果は変わりませんでした。

AWS CLI

先ほどと同様に東京リージョンから試していきます。

まずは、CloudShellというブラウザからAWS CLIを実行できるサービスを開きます。

新しいDBインスタンスを作成するcreate-db-instanceのオプションのうち、vpc-security-group-idsdb-subnet-group事前にリソースを作成してから、以下のコマンドを実行します。

コマンド

aws rds create-db-instance \
    --engine MySQL \
    --engine-version 8.0.35 \
    --db-instance-identifier mysql \
    --allocated-storage 20 \
    --db-instance-class db.t4g.micro \
    --vpc-security-group-ids sg-xxxxxx \
    --db-subnet-group xxxxx \
    --master-username masterawsuser \
    --manage-master-user-password \
    --no-publicly-accessible \
    --backup-retention-period 0


コマンドの出力結果について、認証局の項目をハイライトしましたが、デフォルトはrds-ca-2019のようです。

結果

{
    "DBInstance": {
        "DBInstanceIdentifier": "hoge",
        "DBInstanceClass": "db.t4g.micro",
        "Engine": "mysql",
        "DBInstanceStatus": "creating",
        "MasterUsername": "masterawsuser",
        "AllocatedStorage": 20,
        "PreferredBackupWindow": "17:48-18:18",
        "BackupRetentionPeriod": 0,
        "DBSecurityGroups": [],
        "VpcSecurityGroups": [
            {
                "VpcSecurityGroupId": "sg-14cc4b5b",
                "Status": "active"
            }
        ],
        "DBParameterGroups": [
            {
                "DBParameterGroupName": "default.mysql8.0",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        "DBSubnetGroup": {
            "DBSubnetGroupName": "default",
            "DBSubnetGroupDescription": "default",
            "VpcId": "vpc-edbc5f8b",
            "SubnetGroupStatus": "Complete",
            "Subnets": [
                {
                    "SubnetIdentifier": "subnet-287ad760",
                    "SubnetAvailabilityZone": {
                        "Name": "ap-northeast-1a"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                },
                {
                    "SubnetIdentifier": "subnet-fecdd2a5",
                    "SubnetAvailabilityZone": {
                        "Name": "ap-northeast-1c"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                },
                {
                    "SubnetIdentifier": "subnet-b147f39a",
                    "SubnetAvailabilityZone": {
                        "Name": "ap-northeast-1d"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                }
            ]
        },
        "PreferredMaintenanceWindow": "wed:20:11-wed:20:41",
        "PendingModifiedValues": {},
        "MultiAZ": false,
        "EngineVersion": "8.0.35",
        "AutoMinorVersionUpgrade": true,
        "ReadReplicaDBInstanceIdentifiers": [],
        "LicenseModel": "general-public-license",
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "default:mysql-8-0",
                "Status": "in-sync"
            }
        ],
        "PubliclyAccessible": false,
        "StorageType": "gp2",
        "DbInstancePort": 0,
        "StorageEncrypted": false,
        "DbiResourceId": "db-RWJLE7RKGST6UCMURNQGXMC64M",
        "CACertificateIdentifier": "rds-ca-2019",
        "DomainMemberships": [],
        "CopyTagsToSnapshot": false,
        "MonitoringInterval": 0,
        "DBInstanceArn": "arn:aws:rds:ap-northeast-1:123456789012:db:hoge",
        "IAMDatabaseAuthenticationEnabled": false,
        "PerformanceInsightsEnabled": false,
        "DeletionProtection": false,
        "AssociatedRoles": [],
        "TagList": [],
        "CustomerOwnedIpEnabled": false,
        "BackupTarget": "region",
        "NetworkType": "IPV4",
        "StorageThroughput": 0,
        "MasterUserSecret": {
            "SecretArn": "arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:rds!db-eaa46be6-415f-4766-bc5f-e55be15c8bfe-HAt549",
            "SecretStatus": "creating",
            "KmsKeyId": "arn:aws:kms:ap-northeast-1:123456789012:key/bb108065-da40-4e63-8161-fc1018a25558"
        },
        "CertificateDetails": {
            "CAIdentifier": "rds-ca-2019"
        },
        "DedicatedLogVolume": false
    }
}

バージニアリージョンでも同様の手順で試しましたが、結果は変わりませんでした。

まとめ

Amazon Web Services ブログにはデフォルトCAの変更は2024/1/26以降と記載されているので、段階的に変更が適用されているものと推測しています。

そもそもrds-ca-rsa2048-g1がデフォルトになっているのは、rds-ca-2019と暗号アルゴリズムと鍵長が同じということで最も互換性があるからです。
rds-ca-rsa2048-g1以外にもCAの選択肢はあるため、本番環境ではクライアント側の対応や負荷影響を考慮し、どのCAにするかを明示的に指定するのが良いでしょう。

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