Q47 — AWS SAA-C03 第17章

第 47/89 問 | ← 第17章

Q1347. ソリューションアーキテクトは、Amazon S3バケットに保存された画像にユーザーがアクセスできるアプリケーションを設計しました。このアプリケーションは、VPC IDがvpc-11aabb22であるプライベートVPC内にホストされるAmazon EC2インスタンスで実行されます。ソリューションアーキテクトは、S3バケットに対して「パブリックアクセスのブロック」機能を有効化しました。このバケットは、アカウント123456789012のus-west-2リージョンにホストされています。ソリューションアーキテクトは、EC2インスタンスをホストするVPC内のリソースからのみ、このS3バケットへアクセスできるようにする必要があります。この要件を満たすソリューションはどれですか?

正解: A. Deny効果を持つS3バケットポリシーのステートメントを作成し、Conditionとして"StringNotEquals": {"aws:SourceVpc":"vpc-11aabb22"}を指定します。

解説

正解はAです。「Deny効果を持つS3バケットポリシーのステートメントを作成し、Conditionとして\"StringNotEquals\": {\"aws:SourceVpc\":\"vpc-11aabb22\"}を指定する」方法です。 解説: 要件:特定のVPC(vpc-11aabb22)内にあるリソースからのみ、S3バケットへのアクセスを許可する必要があります。また、バケットには「パブリックアクセスのブロック」が有効化されているため、すべてのパブリックアクセスは禁止されています。したがって、S3バケットポリシーを用いてVPCベースのアクセス制御を実施する必要があります。 なぜ選択肢Aが正しいのか: ・Deny効果とStringNotEquals条件の組み合わせ:このポリシーは、指定されたVPC(vpc-11aabb22)以外から発信されたすべてのリクエストを明示的に拒否します。これにより、当該VPC内からのみアクセスが許可される(暗黙的に)という制御が実現されます。 ・正しい条件キー(aws:SourceVpc)の使用:aws:SourceVpc条件キーは、リクエストの発信元VPC IDを検証するために使用されます。これは、特定のVPCへのアクセスを制限する最も安全かつ正確な方法です。 他の選択肢が不適切な理由: B:ResourceフィールドにVPCのARNを指定するのは誤りです。S3バケットポリシーのResourceフィールドは、対象となるS3バケットまたはオブジェクトを指定するものであり、リクエスト元のVPCを制御するものではありません。 C:Allow効果でStringNotEquals条件を指定すると、条件が「VPCがvpc-11aabb22でない場合に許可」と解釈され、結果として当該VPCからのアクセスがブロックされ、それ以外のすべてのトラフィックが許可されてしまいます。これは要件と真逆であり、セキュリティ上も危険です。 D:aws:PrincipalAccountに対するStringNotEquals条件は、AWSアカウントIDに基づく制限であり、VPCに基づく制御とは無関係です。この設定では、アカウント123456789012以外のプリンシパルからのアクセスを拒否しますが、VPCの制約は一切適用されません。 正解のポリシー例(選択肢A): { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::your-bucket-name", "arn:aws:s3:::your-bucket-name/*" ], "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-11aabb22" } } } ] } このポリシーにより、vpc-11aabb22から発信されたリクエストのみが許可され、それ以外のすべてのリクエストは拒否されます。 結論:VPCベースのアクセス制御をS3バケットポリシーで正しく実装する唯一の選択肢は、Aです。