**发布时间:** 2025-11-05
**厂商:** AWS
**类型:** BLOG
**原始链接:** https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-cross-account-support-for-amazon-cloudfront-virtual-private-cloud-vpc-origins/
---
<!-- AI_TASK_START: AI标题翻译 -->
[新产品/新功能] Amazon CloudFront VPC 源站推出跨账户支持
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 产品功能分析
## 新功能/新产品概述
该功能为 **Amazon CloudFront** 引入了对 **VPC origin** (Virtual Private Cloud 源站) 的跨账户支持。它允许用户的 **CloudFront** 分发与其私有源站(如 **Application Load Balancers**、**Network Load Balancers** 或 **Amazon EC2** 实例)部署在不同的 AWS 账户中。
此功能的核心目标是解决采用多账户策略的企业在安全与组织架构之间的冲突。此前,为保证最高安全性,**VPC origin** 必须与 **CloudFront** 分发位于同一账户,这对于将网络基础设施(如 CloudFront)和应用服务(如 ALB/EC2)分别部署在不同专用账户的企业来说是一个巨大限制。
该功能通过集成 **AWS Resource Access Manager (AWS RAM)** 实现。拥有 **VPC origin** 的账户(资源所有者)可以创建一个资源共享,将该源站安全地共享给托管 **CloudFront** 分发的账户(资源消费者)。资源消费者随后可以在其 CloudFront 配置中直接引用这个跨账户的私有源站,从而建立安全的私有连接。
- **目标用户群**:遵循 AWS 多账户最佳实践的大中型企业,特别是那些为网络、安全和应用开发设置了独立账户的组织。
- **市场定位**:作为 CloudFront 的一项企业级安全与治理功能增强,旨在消除架构限制,简化在复杂、隔离的云环境中交付私有应用内容的流程。
## 关键客户价值
- **实现架构解耦与职责分离**
- 允许中央网络团队在专用的“网络账户”中管理 **CloudFront** 分发,而应用开发团队可以在各自的“应用账户”中独立管理后端服务。这完全符合现代云原生应用的“关注点分离”原则,提升了团队的敏捷性和自主性。
- **在不牺牲安全性的前提下提升灵活性**
- 企业无需在“多账户隔离”和“源站安全”之间做出妥协。应用后端可以继续保持在私有子网内,不暴露于公网,同时又能通过位于其他账户的 **CloudFront** 进行全球加速和内容分发。这彻底取代了过去使用公有源站或部署复杂反向代理等变通方案的需求。
- **简化运维并降低管理复杂性**
- 通过 **AWS RAM** 提供了一种原生、标准化的资源共享方式,避免了复杂的账户迁移或自定义网络配置。管理员只需通过控制台或 API 创建和接受资源共享,即可完成跨账户的源站配置,极大降低了运维负担。
- **加强治理与合规性**
- 清晰的账户边界和资源所有权有助于企业更好地实施最小权限原则、审计访问记录和执行安全策略。将网络入口(CloudFront)与应用资源(VPC origin)分离,使得安全审计和合规性检查更加清晰和简便。
## 关键技术洞察
- **基于 AWS RAM 的原生集成**
- 该功能的核心是利用了成熟的 **AWS Resource Access Manager (AWS RAM)** 服务,而非另行构建一套专有共享机制。这确保了跨账户共享过程的安全性、可审计性以及与 AWS 生态系统的一致性。共享行为由预定义的托管权限 `AWSRAMDefaultPermissionCloudfrontVpcOrigin` 精确控制,仅允许共享 `cloudfront:Vpcorigin` 类型的资源,遵循了最小权限原则。
- **全局资源的区域性管理模型**
- _技术实现上存在一个关键细节_:由于 **CloudFront** 是全局服务,其关联的 **VPC origin** 资源也被视为全局资源。因此,所有相关的 **AWS RAM** 共享操作(如查看和接受共享)必须在美国东部(弗吉尼亚北部)区域(`us-east-1`)进行。这反映了 AWS 对全局服务资源管理的统一设计模式。
- **深思熟虑的资源生命周期管理**
- 该功能设计了稳健的资源解绑和删除流程,以防止服务中断。当资源所有者停止共享 **VPC origin** 时,现有的实时流量不会立即中断。而要彻底删除一个被共享的源站,必须遵循严格的操作顺序(先在消费者账户中禁用分发,再在所有者账户中取消共享,最后才能删除源站),这为关键生产环境提供了重要的安全保障。
- **对终端用户透明的配置体验**
- 对于资源消费者(即 **CloudFront** 所在账户)而言,被共享的 **VPC origin** 在控制台中会以“(shared)”标识清晰注明,但其使用方式与本账户内的源站几乎没有差别。这种设计抽象了底层的跨账户权限和网络连接复杂性,提供了平滑且直观的用户体验。
## 其他信息
- **资源共享特性**
- 共享是单向的:只能从“资源所有者”账户共享给“资源消费者”账户。
- 共享不具备传递性:资源消费者不能将其接收到的共享资源再次共享给其他账户。
- **HTTPS 配置要求**
- 若源站协议为 **HTTPS only**,资源所有者账户必须为其源站(如 **ALB**)配置一个自定义域名,并关联一个有效的 **AWS Certificate Manager (ACM)** 证书。
- 资源消费者账户在 **CloudFront** 中配置该源站时,必须使用这个完全相同的自定义域名作为 **VPC origin endpoint**,以确保 CloudFront 与源站之间的 SSL/TLS 证书验证能够成功。
- **资源删除流程**
- 删除一个正在使用的共享 **VPC origin** 需遵循以下特定顺序,以避免配置错误和流量中断:
1. 在资源消费者账户中,禁用使用该源站的 **CloudFront** 分发。
2. 在资源所有者账户中,通过 **AWS RAM** 停止对该 **VPC origin** 的共享。
3. 在资源所有者账户中,删除该 **VPC origin** 资源。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# Amazon CloudFront 虚拟私有云 (VPC) 源站推出跨账户支持
**原始链接:** [https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-cross-account-support-for-amazon-cloudfront-virtual-private-cloud-vpc-origins/](https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-cross-account-support-for-amazon-cloudfront-virtual-private-cloud-vpc-origins/)
**发布时间:** 2025-11-05
**厂商:** AWS
**类型:** BLOG
---
2024 年 11 月,[Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) 推出了一项名为 [CloudFront 虚拟私有云 (VPC) 源站](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-vpc-origins.html) 的安全功能,允许客户从托管在私有子网中的应用程序交付内容。在此基础上,我们现在为 Amazon CloudFront VPC 源站引入了跨账户支持,使得网络流量可以在 Amazon CloudFront 与部署在不同 Amazon Web Services (AWS) 账户的私有子网内的 [应用负载均衡器 (Application Load Balancers)](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) (ALB)、[网络负载均衡器 (Network Load Balancers)](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) (NLB) 或 [Amazon Elastic Compute Cloud](https://aws.amazon.com/ec2/) (Amazon EC2) 实例之间流动。这项增强功能允许您将 Amazon VPC 源站和 CloudFront 分配保留在不同的 AWS 账户中,从而使采用多账户策略的组织能够在维持其期望账户结构的同时使用 VPC 源站。
许多 AWS 客户实施 [多账户 (multi-account)](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/organizing-your-aws-environment.html) 策略,以隔离不同业务职能的所有权和开发流程。虽然 CloudFront 支持将来自多个账户的公有源站链接到单个分配,但希望通过 VPC 源站增强安全状况的客户一直被限制在同一账户内使用源站和分配。这一限制给拥有严格账户管理策略的组织带来了挑战,迫使他们要么在需要额外安全控制的情况下继续使用公有源站,要么采取复杂的账户迁移和其他变通方案,例如使用反向代理或中间层。
AWS 客户使用多账户策略来隔离其应用程序中不同业务职能的所有权和开发流程。遵循现代云安全架构原则的组织通常会创建多个 [AWS 组织单元 (AWS Organizational Units)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html) (OU),并配备专用的网络和安全相关账户。CloudFront 分配通常部署在网络账户中,因为它们是客户应用程序的全球入口点。在此之前,这些客户无法利用 VPC 源站的安全优势,因为 VPC 源站和 CloudFront 分配必须位于同一账户中。
## 架构图
在本节中,我们将探讨为 CloudFront 分配共享跨账户 VPC 源站的关键组件,如下图所示。

*图 1: 使用 AWS Resource Access Manager (AWS RAM) 共享的 VPC 源站,CloudFront 分配位于一个独立的资源使用者账户中*
跨账户共享过程涉及两个主要实体:(1) 资源所有者 (Resource Owner) (包含 VPC 源站资源和底层基础设施的 AWS 账户) 和 (2) 资源使用者 (Resource Consumer) (托管 CloudFront 分配的 AWS 账户)。
要在两个账户之间共享一个 VPC 源站,资源所有者首先在自己的账户中创建 (3) VPC 源站。对于仅 HTTPS (HTTPS only) 的场景,资源所有者可以配置一个带有有效 (4) 证书的自定义域名。这是一个用于 ALB/NLB 的 [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) 证书。对于仅 HTTP (HTTP only) 的部署,则不需要 ACM 证书。然后,他们可以使用 (5) [AWS Resource Access Manager (AWS RAM)](https://aws.amazon.com/ram/) 将 VPC 源站共享给所需的目标资源使用者账户。(6) 在此阶段,资源使用者便可以在其 CloudFront 分配中使用共享的 VPC 源站,并为 HTTPS 通信指定自定义域名。
## 先决条件
以下说明仅适用于仅 HTTPS 的 VPC 源站设置。在继续本演练之前,请确保您已在资源所有者账户中部署了以下资源:运行您应用程序的 EC2 实例 (在我们的示例中是 Apache Web 服务器)、一个为这些实例提供前端服务的 ALB、正确的 VPC 和子网配置并已部署实例、一个面向公网的自定义域名 (例如 api.example.com),以及一个在该域名的 ACM 中注册的证书。这使得 VPC 源站能够在 CloudFront 和源站之间进行 HTTPS 通信。这些资源是继续进行 VPC 源站设置所必需的,如下所示。

*图 2: 使用 AWS RAM 共享 VPC 源站的工作流程,从而实现跨账户 CloudFront 分配的设置*
## 入门指南
本节将解释整个过程,首先介绍如何在包含 ALB (为 EC2 实例上的 Apache Web 服务器提供前端服务) 的 **资源所有者账户** 中设置 VPC 源站。完成后,我们将详细说明如何使用 AWS RAM 与资源使用者账户共享此 VPC 源站。接下来,您将在 **资源使用者账户** 中使用共享的源站创建一个 CloudFront 分配。最后,您将学习如何通过访问 CloudFront 的域名来验证设置。
导航到 **资源所有者账户**。
1. 仅在 **资源所有者账户** 中 [创建一个 VPC 源站](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-vpc-origins.html#new-vpc-origin) 。在我们的示例中,我们使用一个 ALB,因此我们输入 ALB 的 ARN,如下图所示。在 **协议 (Protocol)** 下,我们选择 **仅 HTTPS (HTTPS only)** 以确保 CloudFront 和源站之间的安全通信。

*图 3: 使用 ALB 创建 VPC 源站*
2. 与另一个账户共享 VPC 源站
1. 当 VPC 源站状态显示为 **已部署 (Deployed)** 时,选择该 VPC 源站并点击 **共享 VPC 源站 (Share VPC origin)** 按钮。

*图 4: 选择并共享 VPC 源站*
2. 在下一个屏幕上,您可以选择一个现有的 **资源共享 (Resource share)** 或点击 **创建资源共享 (Create resource share)** 按钮。在本示例中,我们创建一个新的 **资源共享 (Resource share)**。

*图 5: 创建资源共享*
3. 在下一个屏幕上,指定 **主体类型 (Principal type)** 和相应的详细信息 (账户号、组织 ARN 或组织单元 ARN)。在本示例中,我们使用 AWS 账户作为 **主体类型 (Principal type)** 并输入一个 **AWS 账户 ID (AWS account ID)**。此处的 AWS 账户 ID 是 **资源使用者账户** 的 ID。

*图 6: 选择一个 AWS 账户 ID 并创建资源共享*
4. 完成后,返回 VPC 源站屏幕,此时会有一个绿色横幅确认资源共享已成功创建。

*图 7: VPC 源站共享成功*
5. 虽然我们通过 CloudFront 控制台为 VPC 源站创建了资源共享,但您也可以从 AWS RAM 控制台创建它。如果您想查看已创建的共享,可以导航到 AWS RAM 控制台。
导航到 **资源使用者账户**。
3. 如果您使用的是已有的资源共享,则可以跳过此步骤。否则,在 **资源使用者账户** 中,进入 AWS RAM 控制台,转到 **与我共享 (Shared with me)**,选择 **资源共享 (Resource shares)**,选择资源共享的名称,然后点击 **接受资源共享 (Accept resource share)**。

*图 8: 接受资源共享*
4. [创建](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html) 一个 CloudFront 分配。
1. 输入 **分配名称 (Distribution name)** 并选择 **下一步 (Next)**。

*图 9: 创建一个 CloudFront 分配*
2. 在下一个屏幕上,在 **源站类型 (Origin type)** 下选择 **VPC 源站 (VPC origin)**。在 **源站 (Origin)** 部分,选择 **浏览 VPC 源站 (Browse VPC origins)** 以打开一个弹出窗口。选择源站并点击 **选择 (Choose)**。在 **VPC 源站终端节点 (VPC origin endpoint)** 下,输入您的自定义域名 (此处以 api.example.com 为例,但这应该是您自己拥有的公共域名),因为我们使用的是 **仅 HTTPS (HTTPS only)**,并且需要一个与您的 ACM 证书匹配的域名。然后,选择 **下一步 (Next)**。

*图 10: 选择共享的 VPC 源站*
3. 在下一个屏幕上,选择 **不启用安全保护 (Do not enable security protections)** 并选择 **下一步 (Next)**。虽然在本示例中我们决定不使用 [AWS WAF](https://aws.amazon.com/waf/) ,但我们建议您实施它来保护您的分配。

*图 11: 为分配选择安全设置*
4. 在下一个屏幕上,查看详细信息,向下滚动,然后选择 **创建分配 (Create distribution)**。您将被带到一个屏幕,在那里您应该会看到分配处于 **部署中 (Deploying)** 状态,这需要几分钟才能完成。

*图 12: 审查并创建分配*
5. 分配创建完成后,复制其 **分配域名 (Distribution domain name)**。

*图 13: CloudFront 分配创建成功*
6. 使用 Web 浏览器访问复制的域名。您应该能看到,您可以通过 **资源使用者账户** 中的 CloudFront 分配成功访问到来自 **资源所有者账户** 的共享 VPC 源站。

*图 14: 访问使用共享 VPC 源站创建的 CloudFront 分配的 URL*
这个例子演示了如何通过将 VPC 源站保留在一个账户 (**资源所有者账户**) 中,同时将 CloudFront 分配托管在另一个账户 (**资源使用者账户**) 中,来在您的组织内维护一个安全且有组织的架构。这种设置允许对 VPC 资源进行集中管理,同时使其他账户能够通过 CloudFront 安全地访问和分发内容。
## 注意事项
1. **资源共享和删除流程**
1. 如果资源所有者账户停止与资源使用者账户共享 VPC 源站,现有流量将继续正常工作。
2. 删除共享的 VPC 源站需要遵循特定的顺序:
1. 在资源使用者账户中禁用 CloudFront 分配
2. 在资源所有者账户中取消共享 VPC 源站
3. 在资源所有者账户中删除共享的 VPC 源站
2. **资源共享选项**
1. VPC 源站可以通过两种方法共享:
1. 直接从 CloudFront 控制台
2. 通过位于 us-east-1 (弗吉尼亚北部) [AWS 区域 (AWS Region)](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) 的 AWS RAM 控制台
3. 两种方法都能达到相同的结果,为管理提供了灵活性。
2. 要在资源使用者账户中查看和接受 VPC 源站的资源共享,您需要将您的 AWS 区域设置为 us-east-1 (弗吉尼亚北部),因为像 VPC 源站这样的 [全球资源 (global resources)](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#:~:text=Because%20AWS%20RAM,east%2D1) 仅在该区域可见。
3. **资源共享特性**
1. 在资源使用者账户中,VPC 源站会被标记为“(已共享)”。
2. 资源使用者账户不能再次共享已接收的 VPC 源站。
3. 单向共享:仅限资源所有者账户 → 资源使用者账户。
4. **权限配置**
1. AWS RAM 使用托管权限:`AWSRAMDefaultPermissionCloudfrontVpcOrigin`
2. 此权限专门允许共享资源类型:`cloudfront:Vpcorigin`
3. 基本共享功能无需额外的权限配置。
5. **VPC 源站终端节点要求**
1. 对于 **仅 HTTP (HTTP only)** 源站设置:
1. 内部 DNS 名称或源站域名
2. 对于 **HTTPS 源站** 设置:
1. **资源所有者账户** 可以为其源站配置一个带有有效 ACM 证书的自定义域名 (例如 api.example.com)。
2. **资源使用者账户** 必须在其 CloudFront 分配配置中使用此自定义域名作为 **VPC 源站终端节点 (VPC origin endpoint)**。
3. 这确保了 CloudFront 和源站之间正确的 SSL/TLS 证书验证。
## 总结
Amazon CloudFront VPC 源站的跨账户支持消除了之前要求源站和分配必须位于同一账户的限制。通过使用 AWS RAM,组织现在可以在保持其多账户结构的同时,跨越账户边界共享 VPC 源站。借助这项创新,开发团队现在可以在自己的账户中管理位于私有 VPC 子网内的应用程序,而内容交付团队则可以从独立的账户中的 CloudFront 分配引用这些源站。
*立即开始使用支持跨账户的 CloudFront VPC 源站吧。*
## 关于作者

### Salman Ahmed
Salman 是 AWS 企业支持团队的一名高级技术客户经理。他专注于指导客户完成 AWS 解决方案的设计、实施和支持。他将自己的网络专业知识与探索新技术的动力相结合,帮助企业成功驾驭其云之旅。工作之余,他喜欢摄影、旅行和观看他最喜欢的运动队比赛。

### Ankush Goyal
Ankush 是 AWS 企业支持团队的一名高级技术客户经理,专注于帮助旅游和酒店行业的客户优化其云基础设施。凭借超过 20 年的 IT 经验,他致力于利用 AWS 网络服务来提高运营效率和推动云采用。Ankush 热衷于提供有影响力的解决方案,并帮助客户简化其云运营。

### Kunj Thacker
Kunj 是 AWS 的一名技术客户经理,常驻加拿大温哥华。在此职位之前,他在网络和基础设施工程方面拥有广泛的背景。他对新技术充满热情,并乐于帮助客户在 AWS 上构建、实施和优化其云基础设施。
<!-- AI_TASK_END: AI全文翻译 -->