あるセキュリティチームが、本番環境のS3バケットへのアップロード時に、必ず特定のKMSカスタマー管理キー(CMK)によるSSE-KMS暗号化を強制する仕組みを実装したいと考えています。 要件は以下の通りです。 ・暗号化なし、SSE-S3、または異なるCMKを使用したアップロードをすべて拒否する ・暗号化の強制はバケットレベルで確実に適用する ・アップロード時のリアルタイム制御が必要 最も適切な実装方法はどれですか?
S3バケットポリシーの条件キーを使ったDeny文は、特定CMKによるSSE-KMSを強制する最も確実な方法です。指定CMK以外のすべてのアップロードをリアルタイムで拒否でき、バケットレベルでの強制が可能です。 選択肢Aの「S3バケットのデフォルト暗号化設定」はデフォルト暗号化設定はリクエストヘッダーで暗号化方式を明示的に指定しない場合にのみ適用されます。他の暗号化方式や別CMKを明示したリクエストはデフォルト設定を上書きでき、強制力がありません。 選択肢Cの「AWS Config ルール」はAWS Configは事後検出ツールです。Auto Remediationは既存の非準拠設定の修正に使用され、アップロード時のリアルタイム拒否はできません。 選択肢Dの「SCP(サービスコントロールポリシー)」はSCPでPutObjectを全拒否してAPI Gateway経由のみにする構成は過度に複雑で通常のS3利用を大きく制限します。バケットポリシーの方がシンプルかつ適切です。