实战案例 | 使用 AWS S3 网关端点实现私有子网访问 S3 桶


  项目需求

A公司最进正在接受第三方公司委托实施的合规型和安全性审查,在此过程中,发现位于某 AWS VPC 中的某台 EC2 实例正在通过互联网访问的方式对具有高度安全要求的 S3 存储桶进行日程读写作业。合规性要求规定,该 EC2 所在的子网必须为私有子网,且该 EC2 不能有任何公共 IP 地址的前提下,可以访问特定的 S3 存储桶, 并且能够对该 S3 存储桶执行读写作业。

  解决方案

1. 拟定方案:使用 S3 网关端点功能,实现项目要求。
2. 前置条件:申请对象 EC2 实例和对象 S3 存储桶需要位于同一个区域。
3. 运营团队在约定的交付时间之前,完成测试工作并通知申请人。

  作业步骤

本次采用AWS Console界面完成作业。
注意:根据项目的具体情况,可以采用不同的实施方法。比如使用命令行(CLI)部署、代码部署 (CloudFomation、Terraform等)、以及其它开发语言(SDK)完成作业。

步骤一:
配置 对象VPC已经启用 DNS 主机名和 DNS 解析
1. 在 VPC 控制面板中,查看对象 VPC 的查看 Details (详细信息) 中的信息。
2. 如果没有启用 DNS 主机名和 DNS 解析,选择操作(Actions),然后选择编辑 VPC 设置(Edit VPC settings)。在相应的 DNS 属性上选择启用(Enable),然后选择保存更改(Save changes)。

步骤二:创建网关端点(Gateway Endpoint)
1. 在 VPC 导航窗格中,选择端点(Endpoints),选择 创建端点
2. 服务类别(Service category)中,选择 AWS 服务,服务(Services)中输入一个过滤器(filter):Type = Gateway,然后从列表中选择 com.amazonaws.region.s3
3. 在 VPC 选项中,选择要创建端点的 VPC
4. 在路由表(Route tables)中,选择端点要使用的路由表。如果系统检查到不存在互联网网关路由,那么将自动添加一个路由,将以服务为目的地的流量指向端点网络接口。
5. 对于策略(Policy),选择完全访问权限(Full access)以允许所有主体通过 VPC 端点对所有资源执行所有操作。也可选择自定义(Custom)以附加 VPC 端点策略,该策略控制主体通过 VPC 端点对资源执行操作的权限。
6. 添加标签(可选),然后选择创建端点。

...

步骤三:验证配置结果
1. 通过公有子网中的堡垒机,通过私有 IP 地址远程连接到实验对象 EC2 实例
2. 确认实验对象 EC2 实例没有公共 IP 地址,然后添加 S3 读写角色
3. 在实验对象 EC2 实例上,进行 S3 存储桶的读写测试。

步骤四:交付作业成果