GuardDutyで検出結果をS3へエクスポートする際に指定するKMSキーは別リージョンのKMSキーを指定できますか?

GuardDutyで検出結果をS3へエクスポートする際、別リージョンのKMSキーを指定できます。
2023.10.30

困っていること

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 バケットは同一リージョンに存在する必要があります。

参考資料

検出結果のエクスポート - Amazon GuardDuty