如何配置 Amazon VPC,以在不使用身份验证的情况下以私有方式连接至我的 S3 存储桶?

上次更新时间:2021 年 12 月 20 日

我想要创建一个从 Amazon Virtual Private Cloud (Amazon VPC) 到 Amazon Simple Storage Service (Amazon S3) 存储桶的私有连接。但是,我不想使用身份验证,例如 AWS Identity and Access Management (IAM) 凭证。我该如何创建此类专用连接?

简短描述

当您从 Amazon Virtual Private Cloud (Amazon VPC) 访问存储桶时,您可以在不使用身份验证的情况下以私有方式访问 S3 存储桶。但是,请确保使用的 VPC 终端节点指向 Amazon S3。

请遵照下列步骤设置 VPC 终端节点对 S3 存储桶的访问:

1.    为 Amazon S3 创建 VPC 终端节点。

2.    添加允许从 VPC 终端节点访问存储桶的策略。

解决方法

开始前,您必须创建一个 VPC,然后从该 VPC 访问存储桶。

为 Amazon S3 创建一个 VPC 终端节点

1.    打开 Amazon VPC 控制台

2.    使用导航栏中的区域选择器,将 AWS 区域设置为与 VPC 相同的区域。

3.    从导航窗格中选择终端节点

4.    选择 Create endpoint(创建终端节点)。

5.    对于服务类别,请确认已选中 AWS 服务。

6.    对于服务名称,请选择“s3”服务名称和“Gateway”类型。例如,美国东部(弗吉尼亚北部)区域的服务名称为 com.amazonaws.us-east-1.s3

7.    对于 VPC,选择您的 VPC。

8.    对于配置路由表,根据您希望能够从终端节点访问的关联子网选择路由表。

9.    对于策略,确认已选中完全访问

10.    选择 Create endpoint(创建终端节点)。

11.    记下 VPC 终端节点 ID。您会在后续步骤中使用此终端节点 ID。

添加允许从 VPC 终端节点访问的存储桶策略

更新您的存储桶策略,使其具备以下条件:在您创建的 VPC 终端节点发出请求时,允许用户访问 S3 存储桶。

要允许这些用户下载对象 (s3:GetObject),请使用与以下类似的存储桶策略:

{
   "Version": "2012-10-17",
   "Id": "Policy1415115909152",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPCE-only",
       "Principal": "*",
       "Action": "s3:GetObject",
       "Effect": "Allow",
       "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"],
       "Condition": {
         "StringEquals": {
           "aws:sourceVpce": "vpce-1a2b3c4d"
         }
       }
     }
   ]
}

对于 aws:sourceVpce 的值,请务必输入您先前创建的终端节点的 VPC 终端节点 ID。

重要提示:此策略允许来自 VPC 终端节点的访问,但它不会拒绝来自终端节点外部的所有访问。如果同一个账户中的用户进行了身份验证,该策略仍会允许用户从 VPC 终端节点外部访问存储桶。如果您需要更严格的存储桶策略,请使用明确拒绝从终端节点外部访问任何请求的策略。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?