某医疗档案企业基于 AWS 架构部署业务系统,其业务核心是使用运行在 Amazon EC2 实例上的应用程序,处理存储在 Amazon S3 中的客户医疗数据文件。当前 EC2 不需要访问其它互联网资源,但是实例部署在公共子网中,所有访问 S3 的流量都经过公网传输,这不符合医疗数据的安全合规要求。新合规要求规定,文件传输的网络流量必须走私有路由,不得经由互联网传输,以确保医疗数据的隐私和安全。
采用 VPC 终端节点(VPC Endpoint)。对于 S3 服务,AWS 提供两种终端节点类型:网关终端节点(Gateway Endpoint)和接口终端节点(Interface Endpoint)。考虑到本场景中 EC2 实例与 S3 存储桶位于同一 AWS 区域,且应用程序无需其他网络访问,使用网关终端节点是最优选择。其最大优势是完全免费,无额外小时费或数据处理费。通过创建 S3 网关终端节点并关联到 VPC 路由表,所有发往 S3 的流量将被自动指向该终端节点,经由 AWS 私有网络传输,完全不需要通过互联网。
本次采用 AWS Console 界面完成作业。
注意:根据项目的具体情况,可以采用不同的实施方法。比如使用命令行 (CLI) 部署、代码部署 (CloudFomation、Terraform 等)、以及其它开发语言(SDK)完成作业。
步骤一:创建 IAM 角色。
为 EC2 实例创建 IAM 角色并附加 S3 访问策略,授予读取和处理指定 S3 存储桶中文件的必要权限(如 s3:GetObject、s3:ListBucket)。无需在 EC2 上配置任何访问密钥。
步骤二:创建 VPC 终端节点。
登录 AWS 管理控制台,进入 VPC 服务页面,点击“终端节点”后选择“创建终端节点”。在服务名称中选择“com.amazonaws.[区域代码].s3”(网关类型),选择目标 VPC。
步骤三:关联路由表。
在创建流程的“路由表”选项中,勾选当前 EC2 实例所在子网关联的路由表。AWS 会自动添加一条指向该终端节点的路由,其目标为 S3 服务的前缀列表,优先级高于指向互联网网关的默认路由(0.0.0.0/0)。
步骤四:加固存储桶策略(可选)。
为 S3 存储桶附加桶策略,通过条件判断“aws:SourceVpc”或“aws:SourceVpce”限制仅允许来自该 VPC 或指定终端节点的访问请求,拒绝所有来自互联网的访问。
1. 测试 S3 访问的连通性:通过 SSH 或 Session Manager 连接到实例,使用 AWS CLI 访问目标 S3 存储桶。
2. 确认流量路径:使用 traceroute -T -p 443 s3.[区域].amazonaws.com