[アップデート] Amazon Auroraクラスター作成時に、暗号化がデフォルトで有効になりました
はじめに
おのやんです
この度のアップデートにより、Amazon Aurora(以下、Aurora)クラスター作成時に暗号化がデフォルトで有効になりました。
今までは、Auroraクラスターを暗号化するには、クラスター作成時にAWSマネジメントコンソール上でキーを指定するか、AWS CLIだと--storage-encryptedのパラメータを指定する必要がありました。このパラメータを指定しない場合は暗号化されずにAuroraクラスターが作成されていました。
それが、今回のアップデート後に新規で作成されるAuroraクラスターは全て自動的にAWS所有キーで暗号化されます。
やってみた
ということで、実際にAuroraクラスターを作成してデフォルト暗号化の挙動を確認してみます。あらかじめ、VPCやサブネットなどは作成しておきます。この状態でAuroraクラスター(PostgreSQL)を作成します。なお、パスワードなどは検証用として認識いただければと思います。
aws rds create-db-cluster \
--db-cluster-identifier aws-test-aurora-default-encryption \
--engine aurora-postgresql \
--engine-version 16.6 \
--master-username postgres \
--master-user-password 'xxxxxxxxxxxx' \
--db-subnet-group-name aws-test-dbsubnet-aurora-encryption \
--vpc-security-group-ids sg-0a1b2c3d4e5f6g7h8 \
--region ap-northeast-1
Auroraクラスターの暗号化状態を確認してみます。
aws rds describe-db-clusters \
--db-cluster-identifier aws-test-aurora-default-encryption \
--query 'DBClusters[0].{StorageEncrypted:StorageEncrypted, StorageEncryptionType:StorageEncryptionType}' \
--output table \
--region ap-northeast-1
Auroraクラスターの暗号化設定が、表形式で出力されます。StorageEncryptedはfalseですが、StorageEncryptionTypeはsse-rdsになっており、AWS所有キーで暗号化されています。
-----------------------------------------------
| DescribeDBClusters |
+-------------------+-------------------------+
| StorageEncrypted | StorageEncryptionType |
+-------------------+-------------------------+
| False | sse-rds |
+-------------------+-------------------------+
互いに矛盾しているのでは?と思われるかもしれません。筆者も思いました。この点については、こちらのAWSブログにて紹介されています。
この出力は意図したものであるようで、ブログ中にも記述があります。記事執筆時点では「そういうもの」という認識で問題ないかと思われます。
When a new cluster is created with AWS owned keys, the
StorageEncryptedfield will showfalse, while theStorageEncryptionTypefield will showsse-rds. This indicates that while you didn’t choose to encrypt the database, the data is still encrypted at rest using AWS owned keys.
AWSマネジメントコンソール上では、暗号化は「有効でない」と表示されていました。東京リージョン・バージニアリージョンともこちらの状態だったのですが、本来は「AWS owned key」と表示されるらしいので、反映まで時間がかかっているのではないか、と思われます。

試しに、Auroraクラスター作成時に明示的に暗号化を無効化してみます。
aws rds create-db-cluster \
--db-cluster-identifier aws-test-aurora-no-encryption \
--engine aurora-postgresql \
--engine-version 16.6 \
--master-username postgres \
--master-user-password 'xxxxxxxxxxxx' \
--db-subnet-group-name aws-test-dbsubnet-aurora-encryption \
--vpc-security-group-ids sg-0a1b2c3d4e5f6g7h8 \
--no-storage-encrypted \ # 明示的に無効化
--region ap-northeast-1
暗号化状態を確認してみます。
aws rds describe-db-clusters \
--db-cluster-identifier aws-test-aurora-no-encryption \
--query 'DBClusters[0].{StorageEncrypted:StorageEncrypted, StorageEncryptionType:StorageEncryptionType}' \
--output table \
--region ap-northeast-1
--no-storage-encryptedを指定した状態でも、先ほどと同様にStorageEncryptedはfalseである一方でStorageEncryptionTypeはsse-rdsになりました。筆者としてはnoneになるものと思っていましたが、sse-rdsで暗号化が有効になっています。新規作成するAuroraクラスターでは、AWS所有キーでの暗号化を手動で無効にはできないようです。
-----------------------------------------------
| DescribeDBClusters |
+-------------------+-------------------------+
| StorageEncrypted | StorageEncryptionType |
+-------------------+-------------------------+
| False | sse-rds |
+-------------------+-------------------------+
先ほど参考として載せたAWSブログによると、StorageEncryptionType: noneは本アップデート以前に作成された未暗号化のAuroraクラスターで表示されるようです。
Scenario B: You create a snapshot from an Aurora unencrypted cluster.
Output for unencrypted snapshot (pre-existing instances):{
"DBClusterSnapshot": {
"DBClusterSnapshotIdentifier": "old-cluster-snapshot",
"DBClusterIdentifier": "old-unencrypted-cluster",
"Engine": "aurora-postgresql",
"StorageEncrypted": false,
"StorageEncryptionType": "none"
}
}
AWSマネジメントコンソール上では、暗号化は「有効でない」と表示されていました。

もう少しやってみます。今度はAWS Key Management Service(以下、KMS)キーを使用してクラスターを作成してみます。
aws rds create-db-cluster \
--db-cluster-identifier aws-test-aurora-cmk-encryption \
--engine aurora-postgresql \
--engine-version 16.6 \
--master-username postgres \
--master-user-password 'xxxxxxxxxxxx' \
--db-subnet-group-name aws-test-dbsubnet-aurora-encryption \
--vpc-security-group-ids sg-0a1b2c3d4e5f6g7h8 \
--storage-encrypted \
--kms-key-id 12345678-1234-1234-1234-123456789012 \
--region ap-northeast-1
暗号化状態を確認してみます。
aws rds describe-db-clusters \
--db-cluster-identifier aws-test-aurora-cmk-encryption \
--query 'DBClusters[0].{StorageEncrypted:StorageEncrypted, StorageEncryptionType:StorageEncryptionType, KmsKeyId:KmsKeyId}' \
--output table \
--region ap-northeast-1
KMSキーを指定した場合は、StorageEncryptedはtrueと表示され、StorageEncryptionTypeはsse-kmsと表示されました。また、KmsKeyIdに指定したKMSキーのARNが表示されました。
---------------------------------------------------------------------------------------------------------------
| DescribeDBClusters |
+-----------------------+-------------------------------------------------------------------------------------+
| KmsKeyId | arn:aws:kms:ap-northeast-1:123456789012:key/12345678-1234-1234-1234-123456789012 |
| StorageEncrypted | True |
| StorageEncryptionType| sse-kms |
+-----------------------+-------------------------------------------------------------------------------------+
AWSマネジメントコンソール上では、暗号化は「有効」と表示され、KMSキーのIDも表示されていました。

まとめ
Auroraのクラスター作成時に、AWS所有キーでの暗号化がデフォルトで有効になりました。デフォルトでの暗号化はセキュリティ的にありがたいアップデートだと思うので、今後も追っていきたいと思いますね。では!






