はじめに
2021年2月からAWS Config で使用される S3 バケットでの KMS での暗号化がサポートされたとのことです。
S3バケット側でKMSでの暗号化設定をしていても、オブジェクト単位ではデフォルトでS3 マネージド暗号化キー (SSE-S3)で暗号化されています。
こちらの記載通りに設定することでKMS暗号化できたので、手順を残します。
https://aws.amazon.com/about-aws/whats-new/2021/02/support-for-kms-encryption-on-s3-buckets-used-by-aws-config/?nc1=h_ls
手順
KMSキーのキーポリシーを設定する
Configからアクセスできるよう、S3バケット暗号化に使用するKMSキーのキーポリシーをKMSの管理画面から設定します。
通常のIAMロールを用いた場合か「サービスにリンクされたロール」の場合に応じて下記に例がありますので、適切な方を選んで設定してください。
今回は「サービスにリンクされたロール」を用いている場合とし、下記の例で設定していきます。
{
"Id": "Policy_ID",
"Statement": [
{
"Sid": "AWSConfigKMSPolicy",
"Effect": "Allow",
"Principal": {
"Service": "config.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "arn:aws:kms:ap-northeast-1:111122223333:key/abcdefgh-hijk-lmno-pqrs-tuvwxyz12345"
}
]
}
put-delivery-channel APIでKMSキーのARNをConfigに登録する
AWS CLIを用いて設定します。
現状の設定の確認をする
describe-delivery-channels
コマンドで変更前の状況を確認しておきます。
aws configservice describe-delivery-channels
{
"DeliveryChannels": [
{
"name": "default",
"s3BucketName": "your-bucket-name",
"snsTopicARN": "arn:aws:sns:ap-northeast-1:111122223333:your-topic-name"
}
]
}
KMSキーのARNをConfigに登録する
put-delivery-channel
コマンドでS3バケットの暗号化に使用するKMSキーのARNをConfigに登録します。
s3KmsKeyArn
にKMSキーのARNを設定します。
aws configservice put-delivery-channel --delivery-channel name=default,s3BucketName=your-bucket-name,s3KmsKeyArn=arn:aws:kms:ap-northeast-1:111122223333:key/abcdefgh-hijk-lmno-pqrs-tuvwxyz12345,snsTopicARN=arn:aws:sns:ap-northeast-1:111122223333:your-topic-name
登録されたか再度確認してみます。
aws configservice describe-delivery-channels
{
"DeliveryChannels": [
{
"name": "default",
"s3BucketName": "your-bucket-name",
"s3KmsKeyArn": "arn:aws:kms:ap-northeast-1:111122223333:key/abcdefgh-hijk-lmno-pqrs-tuvwxyz12345",
"snsTopicARN": "arn:aws:sns:ap-northeast-1:111122223333:your-topic-name"
}
]
}
s3KmsKeyArn
がちゃんと登録されたようです。
この後、Configから配信されたオブジェクトがKMSで暗号化されていることを確認できました!