【正解】A
【0からの解説】
要件は 2 つです。①KMS で暗号化されていない S3 バケットを「特定(検知)」する、②KMS 暗号化なしのオブジェクトのアップロードを「防止」する。
①特定 →
s3-default-encryption-kms という AWS Config マネージドルールが、まさに「S3 バケットのデフォルト暗号化が KMS(SSE-KMS)になっているか」を評価してくれます。組織全体で Config が有効なので、KMS 未使用のバケットを一括で洗い出せます。
②防止 → AWS Organizations 環境なので、組織全体に横断的にガードレールをかけられる
SCP(サービスコントロールポリシー)が適しています。s3:PutObject を「オブジェクトが KMS で暗号化される場合に限り許可」する条件(例: s3:x-amz-server-side-encryption が aws:kms)にすれば、KMS 暗号化なしのアップロードを組織全体で防げます。
「特定=Config(s3-default-encryption-kms)」「防止=SCP(KMS 必須)」の組み合わせである A が両要件を満たします。
【誤りの選択肢】
B:特定ルールは正しいものの、防止策が「SSE-S3 の場合に拒否」となっており、KMS 以外(例: 暗号化指定なし)を網羅できません。また各バケットに個別ポリシーを作るのは数百バケットでは運用負荷が高く、組織横断の強制には SCP が適切です。
C:s3-bucket-ssl-requests-only は「通信が SSL/HTTPS で行われているか(転送時暗号化)」を評価するルールで、バケットの保存時暗号化が KMS かどうかは判定しません。特定要件に合致しません。
D:同じく s3-bucket-ssl-requests-only は転送時暗号化用のルールで、KMS 保存時暗号化の特定には使えません。防止策の方向性は妥当でも、特定ルールが誤っています。
【参考】
s3-default-encryption-kms(AWS Config マネージドルール)S3 のサーバー側暗号化を SCP で強制する例