困っていること
GuardDuty で複数のリージョンについて監視を行っています。検出結果を S3 へエクスポートしたいのですが、リージョンごとに KMS キーを作成するのは管理が煩雑になりそうなので避けたいです。複数のリージョンから、単一リージョンの KMS キーを指定することはできますか?
どう対応すればいいの?
複数のリージョンから、単一リージョンの KMS キーを指定することは可能です。
やってみる
東京リージョンに KMS キーを作成し、キーポリシーの "Statement" の部分に下記の設定を追加します。AccountID
KMSKeyId
は適宜置き換えてください。
{
"Sid": "AllowGuardDutyKey",
"Effect": "Allow",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "kms:GenerateDataKey",
"Resource": "arn:aws:kms:ap-northeast-1:AccountID:key/KMSKeyId"
}
東京リージョン S3 バケットを作成し、バケットポリシーとして、下記を設定します。myBucketName
optional prefix
は適宜置き換えてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGuardDutygetBucketLocation",
"Effect": "Allow",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::myBucketName"
},
{
"Sid": "AllowGuardDutyPutObject",
"Effect": "Allow",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/optional prefix/*"
},
{
"Sid": "DenyNon-HTTPS",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::myBucketName/optional prefix/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
バージニア北部リージョンで GuardDuty を有効にします。
有効になったら、左ペインから設定を選択します。
その後、出力先に先ほど作成した東京リージョン S3 バケットを選択し、KMS キーに先ほど作成した KMS キーのエイリアスを指定します。
正常に設定されたことを確認しました。
注意点
KMS キーとエクスポート先の S3 バケットは同一リージョンに存在する必要があります。