跳转到内容
搜索文档

将 Cloudflare 的优势扩展到 SaaS 提供商的最终客户

最后更新 查看 MarkdownAgent 设置

简介

开发软件即服务 (SaaS) 应用程序的一个关键方面是确保其安全性,以应对互联网上广泛的潜在攻击。Cloudflare 的网络和安全服务可用于在使用您的 SaaS 应用程序时保护您的客户,从而将风险转移给具有 保护应用程序 经验的供应商。

本设计指南说明了构建和托管自己的产品/应用程序产品的提供商,如何利用 Cloudflare 将 Cloudflare 网络的安全性、性能和合规性优势扩展到其最终客户。

以下图表可视化了以下服务的使用:

此设置非常适合需要确保最少停机时间、自动续订 SSL/TLS 证书、有效将流量分配到健康端点以及用于合规性和性能优化的区域流量管理的 SaaS 提供商。

本文档假定提供商的应用程序 DNS 通过 Cloudflare 注册和管理,作为主权威 DNS 提供商。您可以在 Cloudflare DNS 区域设置指南 中找到有关如何设置的详细信息。

此解决方案支持您自己区域下的子域,同时也允许您的客户将自己的域名(个性化或自定义域)用于您的服务。例如,对于每个客户,您可以创建自定义主机名 mycustomer.myappexample.com,但也希望允许他们使用自己的域 app.mycustomerexample.com 指向您服务上的其租户。可以通过 Cloudflare API 在主域 (myappexample.com) 上创建每个子域 (mycustomer.myappexample.com),从而使您能够在客户在您的服务上创建账户时轻松自动化 DNS 记录的创建。

优势

在研究如何配置 Cloudflare 以通过自定义主机名保护您的 SaaS 应用程序之前,值得回顾一下采用此方法的优势。

优势 描述
最短停机时间 确保不仅在自定义主机名迁移到 Cloudflare for SaaS 期间,而且在应用程序的整个生命周期内实现 最少停机时间
安全与性能 将 Cloudflare 的 安全性性能 优势通过最终客户的自定义域扩展给他们。
自动续订 自动化自定义主机名证书的 续订 和管理流程。
Apex 代理 支持最终客户使用 域 apex(也称为根域)作为自定义主机名。当您的 DNS 服务不允许 根域的 CNAME 时使用,取而代之的是使用 静态 IP 以允许使用 A 记录。
智能负载均衡 使用负载均衡器作为 自定义源站,利用 会话亲和性 引导流量。在 Cloudflare for SaaS 的上下文中,自定义源站可让您将流量从一个或多个自定义主机名发送到默认代理回退源站之外的其他位置。
O2O (橙到橙) 对于已经通过 Cloudflare 代理流量的最终客户,可能需要 O2O。通常,建议这些最终客户 不要代理 SaaS 提供商使用的主机名。如果需要 O2O 功能,请查看 产品兼容性
区域服务 允许 区域流量管理 遵守数据本地化要求。

本指南中包含的产品

以下产品用于交付此解决方案。

产品 功能
Cloudflare for SaaS 通过客户自己的自定义或个性化域将 Cloudflare 网络的安全性与性能优势扩展给您的客户。这包括 证书管理WAF for SaaSEarly Hints for SaaSCache for SaaS
DDoS 防护 会自动为 已代理的 主机名启用容量攻击防护。
区域服务 (Regional Services)(数据本地化套件的一部分) 将数据检查(处理)限制为仅限于司法管辖区边界内的数据中心。
负载均衡器 在您的端点之间分配流量,这可以减轻端点压力、降低延迟并改善最终用户的体验。
Cloudflare Tunnel 连接到客户网络和服务器的安全方法,而无需在 防火墙 中制造漏洞。cloudflared 是安装在源服务器上的守护进程(软件),用于创建从应用程序返回到 Cloudflare 的安全隧道。

Cloudflare for SaaS 示例

使用 Cloudflare 的首要目标是确保对应用程序自定义主机名的所有请求都首先通过 Cloudflare 的安全和性能服务路由,以应用安全控制并进行流量的路由或负载均衡。由于源服务器通常需要可公开访问,因此保护 Cloudflare 与源服务器之间的连接至关重要。有关保护源服务器的全面指南,请参阅 Cloudflare 的文档:保护您的源服务器

以下图表首先说明了实现此目标的最简单方法,然后是更复杂的配置。

标准回退源站设置

这种标准的 Cloudflare for SaaS 设置对于大多数提供商来说是最常用也是最容易实施的。通常,这些提供商是开发和交付软件即服务解决方案的 SaaS 公司。此设置只需要单个 DNS 记录即可将请求定向到 Cloudflare,Cloudflare 然后使用 A 记录将流量代理到您的应用程序。

图 1:标准回退源站设置。
Figure 1: Standard fallback origin setup.
  1. 自定义主机名 (custom.example.com) 配置为指向提供商回退源站的 CNAME 记录。回退源站是指当请求发往自定义主机名时,Cloudflare 默认会将流量路由到的服务器。此 DNS 记录不需要在 Cloudflare 内管理;它只需指向提供商托管在 Cloudflare 上的记录 (fallback.myappexample.com) 即可。
  2. 回退源站设置为指向源服务器公共 IP 地址的 A 记录。默认情况下,Cloudflare 会将发送到自定义主机名的流量路由到此源服务器。

源服务器通过 主机标头或 SNI 接收自定义域的详细信息。这使源服务器能够确定将请求定向到哪个应用程序。此方法适用于自定义主机名(例如 app.mycustomerexample.com)和个性化域(例如 customer1.myappexample.com)。由于所有针对您应用程序的请求现在都通过 Cloudflare 网络路由,您可以为每个请求利用一系列安全和性能服务,包括:

有关入门实施详情,请查看开发者文档

采用区域服务的标准回退源站设置

这种方法引入了使用 Cloudflare 的 区域服务 解决方案来对 TLS 终止和 HTTP 处理进行区域化,以符合规定您的服务必须在特定地理位置处理数据的任何合规法规。这确保了发往源服务器的流量专门在所选区域内进行处理。

图 2:采用区域服务的标准回退源站设置。
Figure 2: Standard fallback origin setup with regional services.
  1. 自定义主机名 (custom.example.com) 配置为指向区域化 SaaS 主机名 (eu-customers.myappexample.com) 的 CNAME 记录。此配置确保包括 TLS 终止在内的所有处理都只在指定的地理区域内进行。
  2. 区域化 SaaS 主机名设置为 CNAME 记录,将流量引导至 SaaS 提供商的标准 回退源站 (fallback.myappexample.com)。
  3. 回退源站设置为指向源服务器公共 IP 地址的 A 记录。默认情况下,Cloudflare 会将发送到自定义主机名的流量路由到此源服务器。

以 Cloudflare Tunnel 作为采用区域服务的回退源站设置

为了提高安全性,SaaS 提供商可以使用 Cloudflare Tunnels,而不是通过公共 IP 直接将应用程序服务器暴露给 Internet。这些隧道将您的网络连接到最近的 Cloudflare 数据中心,允许通过 公共主机名 访问 SaaS 应用程序。结果,Cloudflare 成为最终客户从公共 Internet 进入您的应用程序网络的唯一入口点。

图 3:以 Cloudflare Tunnel 作为采用区域服务的回退源站设置。
Figure 3: Cloudflare Tunnel as Fallback Origin Setup with Regional Services.
  1. 自定义主机名 (custom.example.com) 配置为指向区域化 SaaS 主机名 (eu-customers.myappexample.com) 的 CNAME 记录。此配置确保包括 TLS 终止在内的所有处理都只在指定的地理区域内进行。
  2. 区域化 SaaS 主机名设置为 CNAME 记录,将流量引导至 SaaS 提供商的标准 回退源站 (fallback.myappexample.com)。
  3. 回退源站是一个 CNAME DNS 记录,指向由 Cloudflare Tunnel 暴露的 公共主机名。应将此公共主机名配置为将流量路由到您的应用程序,例如 localhost:8080

这种设置非常适合不需要跨多个源服务器进行精细负载均衡(如 基于地理位置的流量引导)的 SaaS 提供商。它也非常适合简单的测试和开发环境,在这些环境中,通过仅允许通过 Cloudflare Tunnel 的请求来 保护您的源服务器 就足够了。但是,对于需要在全局和本地级别进行负载均衡的分布式应用程序,我们建议使用具有全局和私有网络负载均衡功能的 Cloudflare 负载均衡器

全局流量管理 (GTM) 和私有网络负载均衡作为自定义源站设置

Cloudflare 提供了一套强大的负载均衡功能。这些功能让您可以可靠地将流量引导至托管 SaaS 应用程序的不同源服务器,无论其通过公共主机名(如上所述)还是私有 IP 地址。此设置通过跨多台服务器分配流量来帮助防止源站过载,并通过仅允许通过 Cloudflare Tunnel 的请求来增强安全性。

图 4:全局流量管理 (GTM) 和私有网络负载均衡作为自定义源站设置。
Figure 4: Global Traffic Management (GTM) & Private Network Load Balancing as custom origin setup.
  1. 自定义主机名 (custom.example.com) 配置为指向 Cloudflare 区域化负载均衡器 (eu-lb.myappexample.com) 的 CNAME 记录。这可确保包括 TLS 终止在内的所有处理都在指定的地理区域内发生。此外,SaaS 提供商需要将该负载均衡器设置为自定义主机名的 自定义源站
  2. 设置带有 源站池 的区域负载均衡器,以跨多个下游服务器分发请求。每个池可以配置为使用带有全局流量管理 (GTM) 的 公共主机名 或带有私有网络负载均衡的 私有网络 地址。在上图中,我们同时使用了这两个选项:
    • 源站池 1 使用 Cloudflare Tunnel 主机名 (<UUID>.cfargotunnel.com) 作为处理这些请求的端点或源服务器。 当使用公共主机名时,有必要将 HTTP 主机标头值 设置为匹配由 Cloudflare Tunnel 配置和暴露的公共主机名。这可确保源服务器能正确路由传入的请求。
    • 源站池 2 使用 SaaS 应用程序所在的 SaaS 提供商内部网络内的私有 IP 地址或私有网络(即 10.0.0.5)。该池必须配置在指定的 虚拟网络 内运行,以确保请求的正确路由。
  3. Cloudflare Tunnel 通过 GTM 暴露 公共主机名,并通过私有网络负载均衡暴露 私有网络(私有 IP)。

为了在应用程序服务中获得更好的粒度和可扩展性,通常建议使用私有网络而不是公共主机名。私有网络使 Cloudflare 能够保留主机标头并将其准确传递给源服务器。相比之下,当使用公共主机名时,提供商必须在负载均衡器上配置 标头值,而这限制在每个负载均衡器端点一个公共主机名,可能会限制其灵活性。

请注意零信任 隧道限制、Cloudflare for SaaS 连接请求详细信息 以及自定义源站 SNI 规范。有关 Cloudflare 负载均衡器的更多信息,请查阅其 参考架构

自动化

作为 SaaS 提供商,建议使用 APISDK、脚本、Terraform 或其他自动化工具来自动化大多数(如果不是全部)这些流程。

高层迁移计划示例可 在此下载

强烈建议分阶段迁移到 Cloudflare for SaaS,并及时解决出现的任何问题,特别是与 域控制验证 (DCV) 相关的问题。请务必在此过程中查阅 验证状态 和相关 文档

总结

通过利用 Cloudflare 的基础设施,SaaS 提供商可以向其最终客户交付安全、可靠且高性能的服务。这确保了无缝和安全的用户体验,同时满足如区域化等合规性要求。

一些 Cloudflare 客户目前正在使用 Cloudflare for SaaS 解决方案(以前称为 SSL for SaaS)。引人注目的公开用例包括:

此外,在迁移到 Cloudflare for SaaS 时,必须有运行手册和清晰的公共文档向您的最终客户传达相关详细信息。对此的出色公开示例是 Salesforce CDNShopify 文档。

这篇文档对您有帮助吗?