在构建 SaaS 应用程序时,通常会为每个客户账户(或租户)创建唯一的主机名,例如 app.customer.com。重要的是确保与此应用程序主机名的所有通信均使用 SSL/TLS 进行,因此必须在您的应用程序上为客户的主机名创建证书。证书管理很困难,通常应用程序架构师和开发人员会使用 多域证书 (multi-domain certificate) ↗ (MDC),这样他们就可以只购买和添加一个列出了数百个域的证书。但是,当您的应用程序达到成千上万、甚至数百万客户时,这很难扩展。
此外,您的应用程序的客户可能希望将其主网站域直接托管在您的应用程序上。这样,例如,www.customer.com 实际上是直接从您的 SaaS 应用程序交付内容的。
许多 SaaS 应用程序在其应用程序前面都有缓存和安全解决方案,例如 Cloudflare,因此需要装载这些主机名。这通常使用“区域 (Zone)”模型完成,其中在 Cloudflare 或 AWS Cloudfront 等其他供应商内部,为 app.customer.com 创建一个“区域”。这意味着,每当加入新客户时,就必须创建一个新的“区域” - 这在几十个和几百个客户时可能是可以管理的,但是,当您达到数千和数百万时,管理所有这些区域及其配置就会很困难。
Cloudflare for Platforms 远远超出了大多数边缘提供商的这种传统模型,它通过在一个“区域”中管理跨许多主机名和域的流量。您现在可以通过相同的配置管理 www.customer1.com 和 www.customer2.net 以及数百万个其他主机名,同时还可以根据需要自定义功能。
本文档提供了使用 Cloudflare for Platforms 的参考和指导。本文档分为三个主要部分。
- 概述 SaaS 模型和 Cloudflare for Platforms 解决的常见挑战
- SaaS 模型中的 SSL 证书颁发
- 为您的每个客户定制体验
本参考架构专为希望了解如何通过 Cloudflare 使其应用程序更具可扩展性和安全性的 SaaS 应用程序所有者、工程师或架构师而设计。
为了建立对 Cloudflare 更强大的基础了解,我们推荐以下资源:
- 什么是 Cloudflare? | 网站 ↗(5 分钟阅读)或 视频 ↗(2 分钟)
- Cloudflare Ruleset Engine - 我们将讨论与规则集引擎 (ruleset engine) 的集成。熟悉该功能将很有帮助。
- Cloudflare Workers - 我们还将讨论与我们的无服务器应用程序平台 Cloudflare Workers 的集成。对该平台的基本熟悉将很有帮助。
阅读本参考架构的人员将学到:
- Cloudflare 独特的产品如何解决 SaaS 应用程序的关键挑战
- 如何为您的每个最终客户定制 Cloudflare 体验
- 通过 Workers for Platforms 为您的每个客户集成无服务器应用程序的工具
软件即服务 (SaaS) 是云计算时代的一项关键创新。本地管理的传统企业软件(例如会计、人力资源和 CRM)需要 IT 人员专门的关注,为企业中的每个应用程序建立一个平台(无论是专用硬件、VM 还是云实例)。SaaS 模型允许像 Shopify 和 Salesforce 这样的提供商将其自己的平台扩展给客户。现在,客户无需配置硬件或考虑任何其他基础架构问题;相反,他们只需订阅访问始终保持最新、安全且可用的 SaaS 平台即可。
对于许多 SaaS 应用程序而言,在客户自己的域下提供服务很重要。他们的域对于品牌推广、安全性和组织都很重要;许多客户已经大力投资于合适的 .com 来代表他们的业务。许多拥有与其品牌链接的域的客户会抵制在提供商的域上部署他们的应用程序。
对于面向客户的应用程序(如电子商务解决方案)尤其如此。您希望将其公开为 shop.example.com,而不是 example.shop.com。为了保护流向 SaaS 应用程序的流量,提供商(“shop”)需要其客户 example.com 的证书。
这对 SaaS 解决方案来说是一个挑战,因为证书颁发通过 DCV 验证过程受到严格控制。域名的所有者需要授权任何证书,并且传统的验证方法由域名所有者驱动,并且仅向他们交付证书。
这造成了一个困境:SaaS 模型提供了明显的优势,但也引入了其自身的新挑战。一种新颖的解决方案将使提供商和最终客户都能充分利用 SaaS 模型。
Cloudflare for SaaS 为 SaaS 提供商的这些常见挑战提供了一种独特的解决方案。通过利用 Cloudflare 作为低延迟全球网络的地位,我们可以透明地管理终端客户的证书颁发,同时还为 SaaS 平台提供其他一些好处。
Cloudflare 在 SaaS 场景中管理域控制验证 (DCV) 过程方面具有独特的能力。在传统模型中,证书颁发者要求域名所有者在其源站放置一个 特定令牌(DNS TXT 记录或小文本文件),以验证他们对该域具有授权。在证书续订时,必须重复执行此操作,这随着最近的安全改进而变得更加普遍。
由于 Cloudflare 的网络可以轻松地位于客户端和 SaaS 提供商之间,我们可以代表将流量指向 Cloudflare 上的 SaaS 提供商的任何域,自动使用正确的 DCV 令牌进行响应。
客户无需在每次证书续订时重复执行复杂的过程,只需执行一次简单的过程即可。
Cloudflare for Platforms 为您提供的远不止 SSL 证书管理。我们为您提供内置功能以控制大规模的安全性与性能能力,满足您的每个客户。Cloudflare 的安全功能,如 DDoS、WAF、Bot Management 和 速率限制 (Rate Limiting) 被无缝扩展至您平台上的客户。可以在 托管规则 (Managed Rules) 中为个别客户自定义安全态势,以豁免良好流量或加强安全性。在 性能 方面,缓存 (Cache)、Argo 智能路由 (Argo Smart Routing) 以及 HTTP/2 功能,如 Early Hints 为您的所有客户提供了可扩展且可定制的行为。可定制的缓存规则使您可以跨所有客户实现高命中率。
如果您需要比我们的规则提供的更多灵活性,以向数千或数百万客户提供单独行为,自定义元数据 (Custom Metadata) 允许完全根据每个客户的灵活性进行设置。通过为每个客户设置如 WAF: On 或 Performance: Premium 之类的标签,您可以定制其安全性与性能功能集。我们已构建了直接与该元数据交互的功能,如 WAF for SaaS;并在我们 Workers 无服务器环境中提供了一个 API,以便在自定义代码中使用它们。
如果您需要甚至超出元数据可提供程度的更多定制,或者您正在运行一项客户自行编写或生成自己的应用程序代码的服务,Workers for Platforms 允许您为您的每个客户部署完整的无服务器应用程序。
我们提供了几项关键功能,例如 Dispatch Worker,它使您在决定路由到哪个客户应用程序时拥有无限的灵活性。例如,您可以运行安全检查,然后解码告知您用户 ID 的 HTTP 标头,最后加载适用于此用户请求的适当无服务器应用程序。Outbound Workers 让您可以对客户应用程序可访问哪些互联网资源拥有更多可见性与控制,在分布式部署中提供熟悉的安全性模型。
我们还提供 可观察性 (observability)、配置 等方面及生产级平台部署所需的许多其他工具的功能。这些在其他 参考架构 中有详细说明,其平台案例的运行方式与这些指南中所描述的更标准模型的运行方式相同。
让我们回顾三个常见的用例,其中 Cloudflare for Platforms 可以使提供商无缝地将 SSL、性能和安全性扩展给其最终客户。
在这个常见的设计中,Cloudflare 使得您的平台能够颁发 SSL 证书并提供性能和安全功能。我们不会为您的每个客户端定制功能,而是将为每个使用该平台的人提供通用的功能。
- Cloudflare 通过验证和分发 SSL 证书,在全球范围内保护从您的客户端到您平台的流量。
- 在此设计中,您将使用相同的 L7 配置 - 也就是说,作用于您的流量并运行在 SSL 之后的所有功能,对于您的每个客户端都是相同的。
- 只需设置一个 Cloudflare for SaaS 区域,并为每个客户端主机名 订购一个自定义主机名。系统将引导您轻松完成将每个客户端流量指向您平台并为其订购证书的流程。
- 在此流程中,您几乎始终可以使用我们的默认设置,但也可以进行量身定制的 SSL 自定义。
- 源流量路由也通过 SSL for SaaS 流程处理。对于多数需求,我们的默认配置是安全的。
- 对于高度安全的使用案例,您可以使用 经过身份验证的源站拉取 (Authenticated Origin Pulls)、专用 CDN 出口 IP 或使用 隧道 (Tunnels) 的高级设计。
在此,我们不仅为每个客户端调配一张证书——还为他们各自提供自定义配置。例如,基础层(Basic tier)仅获得核心 WAF,高级层(Advanced tier)可以获得 Bot Management(机器人管理)。您也可以对所有客户运行共通功能。
- 除保护 SSL 流量外,在添加每个客户时使用额外字段(自定义元数据 (Custom Metadata))标记适用的功能集。
- Cloudflare 功能会读取元数据,并为每个客户端进行定制。WAF 功能是安全自定义的关键。可以提供不同的安全级别,甚至定制 WAF 规则集。
- 在性能方面,您还可以添加 Argo Smart Routing、Cache 和 Early Hints,为选定客户提升性能。
在最进阶的设计中,我们会在 Workers runtime 中为您的每位客户定制完整的无服务器应用程序。简单的 Worker 执行与功能定制类似的任务。进阶 Worker 可以在 Cloudflare 网络上运行您的整个平台。
- 不再部署已定制的 Cloudflare 功能,而是每位客户拥有自己的“用户 Worker”——包含自定义代码的 JavaScript 无服务器应用。
- 您通过决定运行哪段代码的 Dispatch Worker,以及限制客户代码访问权限的 Outbound Worker,保持控制权。
- 使用开发者平台的进阶能力(例如 D1、Workers KV 和 Queues)在 Cloudflare 上构建整个业务。
Cloudflare for SaaS 可轻松解决平台规模扩大时的常见挑战。从 SSL 证书颁发到安全,再到为每个客户定制无服务器应用程序,Cloudflare for SaaS 使您能够将平台扩展至数百万客户。
有关本文讨论的所有功能的更多详细信息,请参阅以下链接: