理解通过 AWS 控制台创建 CloudFront VPC Origin 的流程,学会将 ALB/EC2 等源站从公网迁移至私有子网,实现源站完全隐藏于公网之外,仅通过 CloudFront 访问的安全架构。
VPC Origins 是 CloudFront 的一项新功能,允许分发直接从 VPC 私有子网中的 ALB 或 EC2 实例拉取内容。VPC Origin 通过 CloudFront 专用弹性网络接口(ENI)建立私有通道,源站安全组仅放行该 ENI 的 80/443 端口,从根本上杜绝了绕过 CloudFront 直接访问源站的可能。使用该功能无需额外付费,源站无需公网 IP,可释放弹性公网 IP 节省成本,同时可以在享受 CloudFront 全球加速能力,大幅缩减攻击面。
本次采用AWS Console界面完成作业。
注意:根据项目的具体情况,可以采用不同的实施方法。比如使用命令行(CLI)部署、代码部署 (CloudFomation、Terraform等)、以及其它开发语言(SDK)完成作业。
步骤一:创建 VPC Origin。
在 CloudFront 控制台,选择左侧 VPC origins,然后选择 Create VPC origin。填写名称,在 Origin ARN 下拉框中选择或者搜索对应资源的 ARN(内网 ALB 或者 EC2 );设置传输协议,HTTP 端口为 80、HTTPS 端口为 443,然后点击创建。等待状态变为 Deployed(最长约 15 分钟),记录 VPC Origin ID。
步骤二:关联到 CloudFront 分配。
进入 Distributions,选择目标分配;在 Origins 标签页,点击 Create origin,在 Origin domain 中选择刚创建的 VPC Origin ID;然后在行为的页签下将 Custom Origin 改成 VPC Origin;最后,等待 CloudFront 分配的状态为 Deployed。
步骤三:配置安全组。
在 VPC 控制台的 Network Interfaces 页面,找到 CloudFront 自动创建的专用 ENI,复制其安全组 ID。回到源站(ALB/EC2)的安全组,移除原有公网访问规则,仅允许该 CloudFront 专用安全组 ID 访问 80/443 端口。注意:虽然无需为源站配置公共 IP 地址或在路由表中添加公网路由,但子网仍需配置互联网网关(IGW),以支持 CloudFront 请求进入私有子网。
1 检查 CloudFront 分配状态为 Deployed,VPC Origin 状态为 Deployed。
2. 通过 CloudFront 分配域名访问应用,确认页面正常加载、功能完整。
3. 尝试直接访问源站的公网 IP 或公网 DNS 名称,返回连接超时或拒绝访问,证明源站已成功隐藏。