あるデータエンジニアリングチームは、プライベートサブネット内の Amazon EMR クラスターから Amazon S3 データレイクにアクセスしています。この VPC には Amazon S3 用のゲートウェイエンドポイントが設定されており、S3 へのすべてのトラフィックがこのエンドポイント経由でルーティングされます。セキュリティチームは、EMR クラスターから自社所有の S3 バケット以外(他の AWS アカウントのバケットや公開バケット)へのデータ書き込みを禁止し、意図しないデータ漏洩(data exfiltration)を防止したいと考えています。最も適切な実装方法はどれですか?
S3 ゲートウェイエンドポイントのエンドポイントポリシーは、その VPC からのすべての S3 トラフィックに適用されるポリシーです。Deny ステートメントで「Resource が自社アカウントのバケットでない場合に拒否」を定義することで、VPC 内の EMR クラスターが IAM ロールや使用コードに関係なく外部バケットにアクセスできなくなります。これはネットワークレベルの制御であり、EMR ワーカーが使用するすべての認証情報・ライブラリに適用される包括的な防御です。 選択肢AのS3 バケットポリシーへの aws:SourceVpc 条件は、「指定した VPC からしかこのバケットにアクセスできない」という自社バケットの保護には有効ですが、EMR が他のアカウントのバケットにアクセスすることを防ぐ効果はありません。 選択肢CのIAM ロールポリシーによる s3:PutObject 制限は EMR のロール経由の書き込みは制限できますが、読み取り(s3:GetObject)は制限されず、ロール以外の認証方式を使うプロセスには効果がありません。 選択肢DのAWS Macie はデータ発見・分類・コンプライアンス監視サービスであり、リアルタイムにトラフィックをブロックする機能はありません。検出は可能でもデータ漏洩の「防止」はできません。