使用存储桶策略控制从 VPC 端点的访问 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用存储桶策略控制从 VPC 端点的访问

您可以使用 Amazon S3 存储桶策略控制从特定 Virtual Private Cloud(VPC)端点或特定 VPC 对存储桶的访问。本部分包含可用于从 VPC 端点控制 Amazon S3 存储桶访问的示例存储桶策略。要了解如何设置 VPC 端点,请参阅 VPC 用户指南中的 VPC 端点

您可以使用 VPC 在您定义的虚拟网络内启动 Amazon 资源。使用 VPC 端点可以在您的 VPC 和其他 Amazon 服务之间创建私有连接,无需通过 Internet、VPN 连接、NAT 实例或 Amazon Direct Connect 进行访问。

Amazon S3 的 VPC 端点是 VPC 内的逻辑实体,仅允许连接到 Amazon S3。VPC 端点将请求路由到 Amazon S3 并将响应路由回 VPC。VPC 端点仅更改请求的路由方式。Amazon S3 公有端点和 DNS 名称将继续使用 VPC 端点。有关在 Amazon S3 中使用 VPC 端点的重要信息,请参阅 VPC 用户指南中的网关 VPC 端点Amazon S3 的端点

Amazon S3 的 VPC 端点提供两种方式来控制对 Amazon S3 数据的访问:

  • 您可以控制允许通过特定 VPC 端点访问的请求、用户或组。有关此类型的访问控制的信息,请参阅 VPC 用户指南中的使用 VPC 端点控制对服务的访问

  • 可以使用 Amazon S3 存储桶策略控制哪些 VPC 或 VPC 端点有权访问存储桶。有关此类型存储桶策略访问控制的示例,请参阅以下有关限制访问的主题。

重要

如本节中所述对 VPC 端点应用 Amazon S3 存储桶策略时,您可能会无意中阻止对存储桶的访问权限。存储桶权限旨在专门限制存储桶访问源自 VPC 端点的连接,而这可能会阻止到存储桶的所有连接。有关如何修复此问题的信息,请参阅我的存储桶策略有错误的 VPC 或 VPC 端点 ID。Amazon Web Services Support 知识中心内的如何修复策略才能访问存储桶?

限制对特定 VPC 端点的访问

下面是限制仅从 ID 为 awsexamplebucket1 的 VPC 端点访问特定存储桶 vpce-1a2b3c4d 的 Amazon S3 存储桶策略示例。如果未使用指定的端点,则该策略拒绝对存储桶的所有访问。aws:SourceVpce 条件用于指定端点。aws:SourceVpce 条件不需要 VPC 端点资源的 Amazon 资源名称 (ARN),而只需要 VPC 端点 ID。有关在策略中使用条件的更多信息,请参阅 Amazon S3 条件键示例

重要
  • 在使用以下示例策略之前,将 VPC 端点 ID 替换为适合您的使用案例的值。否则,您将无法访问您的存储桶。

  • 此策略禁用控制台访问指定的存储桶,因为控制台请求不是来自指定的 VPC 端点。

{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::awsexamplebucket1", "arn:aws:s3:::awsexamplebucket1/*"], "Condition": { "StringNotEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }

限制对特定 VPC 的访问

可以使用 aws:SourceVpc 条件来创建用于限制对特定 VPC 的访问的存储桶策略。如果在同一 VPC 中配置了多个 VPC 端点,并且要管理对所有端点的 Amazon S3 存储桶的访问,这一点非常有用。以下是拒绝 VPC vpc-111bbb22 以外的任何人访问 awsexamplebucket1 及其对象的策略示例。如果未使用指定的 VPC,则该策略拒绝对存储桶的所有访问。此语句不授予访问权限,因此您需要添加单独的 Allow 语句。vpc-111bbb22 条件键不需要 VPC 资源 的 ARN,仅需要 VPC ID。

重要
  • 在使用以下示例策略之前,将 VPC ID 替换为适合您的使用案例的值。否则,您将无法访问您的存储桶。

  • 此策略禁用控制台访问指定的存储桶,因为控制台请求不是来自指定的 VPC。

{ "Version": "2012-10-17", "Id": "Policy1415115909153", "Statement": [ { "Sid": "Access-to-specific-VPC-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::awsexamplebucket1", "arn:aws:s3:::awsexamplebucket1/*"], "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-111bbb22" } } } ] }