Q47 — AWS SAA-C03 第17章

第 47/89 题 | ← 返回第17章

Q1347. 一位解决方案架构师设计了一个应用程序,使用户能够访问存储在 Amazon S3 存储桶中的图像。该应用程序使用托管在私有 VPC(VPC ID 为 vpc-11aabb22)中的 Amazon EC2 实例。解决方案架构师已在 S3 存储桶上启用了阻止公共访问功能。该存储桶托管在账户 123456789012 的 us-west-2 区域中。解决方案架构师需要确保只有托管 EC2 实例的 VPC 内的资源才能访问该存储桶。S3 桶。哪种方案能够满足这一要求?

正确答案: A. 创建一个 S3 存储桶策略语句,该语句具有拒绝效果,并且包含“StringNotEquals”:{"aws:SourceVpc":"vpc-11aabb22"} 的条件。

解析

正确的解决方案是 A. 创建一个具有拒绝效果的 S3 存储桶策略语句,并添加一个包含“StringNotEquals”的条件:{"aws:SourceVpc":"vpc-11aabb22"}。解释:要求:只有特定 VPC (vpc-11aabb22) 内的资源才能访问 S3 存储桶。该存储桶已启用“阻止公共访问”,因此不允许任何公共访问。解决方案必须通过 S3 存储桶策略强制执行基于 VPC 的访问控制。为什么选项 A 正确:使用 StringNotEquals 条件拒绝效果:该策略明确拒绝任何并非源自指定 VPC (vpc-11aabb22) 的请求的访问。这样就确保只允许来自 VPC 内部的请求(隐式地,因为所有其他请求都被拒绝)。正确的条件键(aws:SourceVpc):aws:SourceVpc 条件键用于检查请求来源的 VPC ID。这是限制对特定 VPC 访问的最安全、最精确的方法。其他选项错误的原因:B. 允许对 VPC 资源 ARN 生效错误,原因如下:S3 存储桶策略中的“资源”字段指的是 S3 存储桶/对象,而不是 VPC。这种语法不会根据请求者的 VPC 来限制访问权限。C. 允许使用 StringNotEquals 条件错误,原因如下:如果使用 StringNotEquals 的 Allow 策略,则仅当请求不是来自 VPC 时才允许访问,这与所需恰恰相反。这将阻止来自 VPC 的访问,并允许所有其他流量访问(不安全)。D. 使用 StringNotEquals 对 aws:PrincipalAccount 进行拒绝操作是错误的,因为:此策略基于 AWS 账户 ID 而非 VPC 来限制访问权限。它会拒绝来自账户 123456789012 之外的任何主体(用户/角色)的请求,但不会强制执行基于 VPC 的访问控制。正确的政策示例(选项 A):JSON{“版本”:“2012-10-17”,“陈述”:[{“效果”:“否认”,“主要的”:””,“操作”:“s3:”,“资源”:["arn:aws:s3:::你的存储桶名称","arn:aws:s3:::your-bucket-name/"],“健康)状况”:{"StringNotEquals": {"aws:SourceVpc": "vpc-11aabb22"}}}]}该策略确保只允许来自 vpc-11aabb22 的请求(所有其他请求均被拒绝)。结论:选项 A 是唯一能够使用 S3 存储桶策略正确实施基于 VPC 的访问控制的解决方案。