SaaS アプリケーションを構築するときは、顧客アカウント(テナント)ごとに一意のホスト名を用意することがよくあります。例は app.customer.com です。このアプリケーションホスト名への通信は、すべて SSL/TLS で行う必要があります。そのため、アプリケーション上で顧客のホスト名向けの証明書を作成しなければなりません。証明書管理は難しい作業です。アーキテクトや開発者は、マルチドメイン証明書 ↗(MDC)を使い、数百ドメインを載せた証明書を 1 枚だけ購入して追加することが多くありました。ただし、顧客が数千、数百万に達すると、この方法はうまくスケールしません。
また、顧客が自社のメインサイトのドメインを、そのままアプリケーション上でホストしたい場合もあります。たとえば www.customer.com が、SaaS アプリケーションから直接コンテンツを配信する、といった構成です。
多くの SaaS アプリケーションは、Cloudflare などのキャッシュとセキュリティのソリューションを前面に置き、これらのホスト名をオンボードする必要があります。よくあるのは Zone モデルです。Cloudflare や AWS Cloudfront などのベンダー内で、app.customer.com 向けに Zone を作成します。つまり、顧客をオンボードするたびに新しい Zone が必要になります。数十、数百規模なら管理できるかもしれません。しかし数千、数百万になると、Zone とその設定の管理は難しくなります。
Cloudflare for Platforms は、大半のエッジプロバイダーが使う従来のモデルを大きく超えます。多数のホスト名とドメインのトラフィックを、1 つの Zone で管理できます。www.customer1.com と www.customer2.net、さらに数百万のホスト名を、同じ設定で管理しつつ、必要に応じて機能をカスタマイズできます。
このドキュメントは、Cloudflare for Platforms の参照と導入ガイドです。次の 3 つの主要セクションに分かれています。
- SaaS モデルの概要と、Cloudflare for Platforms が解決する一般的な課題
- SaaS モデルでの SSL 証明書の発行
- 各顧客向け体験のカスタマイズ
このリファレンスアーキテクチャは、SaaS アプリケーションのオーナー、エンジニア、アーキテクト向けです。Cloudflare を使って、アプリケーションをよりスケーラブルで安全にする方法を学べます。
Cloudflare の基礎を固めるには、次の資料を推奨します。
- Cloudflare とは? | Web サイト ↗(5 分で読めます)または 動画 ↗(2 分)
- Cloudflare Ruleset Engine - Ruleset Engine との連携を説明します。この機能に慣れていると理解しやすくなります。
- Cloudflare Workers - サーバーレスアプリケーションプラットフォームである Cloudflare Workers との連携も説明します。基本的な理解があると役立ちます。
このリファレンスアーキテクチャでは、次の内容を学べます。
- Cloudflare の独自の提供内容が、SaaS アプリケーションの主要な課題をどう解決するか
- エンド顧客ごとに Cloudflare の体験をカスタマイズする方法
- Workers for Platforms を通じて、顧客ごとにサーバーレスアプリケーションを組み込むためのツール
Software as a Service(SaaS)は、クラウドコンピューティング時代の重要な革新です。オンプレミスで管理していた従来のエンタープライズソフトウェア(会計、人事、CRM など)では、社内の各アプリケーション向けに、IT 担当者が専用ハードウェア、VM、クラウドインスタンスなどの基盤を用意する必要がありました。SaaS モデルでは、Shopify や Salesforce のようなプロバイダーが、自社のプラットフォームを顧客に提供します。顧客はハードウェアの用意やインフラの検討をする必要がありません。常に最新で、安全で、利用可能な SaaS プラットフォームへのアクセスを購読します。
多くの SaaS アプリケーションでは、顧客自身のドメインでサービスを提供することが重要です。ドメインはブランディング、セキュリティ、組織にとって重要です。多くの顧客は、自社を表す適切な .com に大きく投資しています。ブランドに結び付いたドメインを持つ顧客は、プロバイダーのドメイン上にアプリケーションを置くことに抵抗することがよくあります。
これは、e コマースのような顧客向けアプリケーションでとくに当てはまります。公開したいのは shop.example.com であり、example.shop.com ではありません。SaaS アプリケーションへのトラフィックを保護するには、プロバイダー(「shop」)が顧客の example.com 向け証明書を用意する必要があります。
これは SaaS ソリューションにとって課題です。証明書の発行は DCV 検証プロセス で厳しく管理されるためです。ドメインの所有者は、あらゆる証明書を認可する必要があります。従来の検証方法はドメイン所有者が主導し、証明書はその所有者にだけ届きます。
ここにジレンマがあります。SaaS モデルには明確な利点がありますが、新たな課題も生まれます。新しい解決策があれば、プロバイダーとエンド顧客の双方が、SaaS モデルを最大限に活用できます。
Cloudflare for SaaS は、SaaS プロバイダーがよく直面するこれらの課題に対する独自の解決策を提供します。低遅延のグローバルネットワークという Cloudflare の位置づけを活かし、エンド顧客向けの証明書発行を透過的に管理しつつ、SaaS プラットフォームにほかの利点も提供できます。
Cloudflare は、SaaS の場面で Domain Control Validation(DCV)プロセスを管理できます。従来のモデルでは、証明書発行者はドメイン所有者に対し、オリジンへ 特定のトークン(DNS TXT レコード、または小さなテキストファイル)を置くよう求めます。これで、そのドメインの認可を持っていることを検証します。最近のセキュリティ強化により、証明書の更新はより頻繁になり、この作業も繰り返し必要になっています。
Cloudflare のネットワークは、クライアントと SaaS プロバイダーのあいだに容易に置けます。そのため、Cloudflare 上の SaaS プロバイダーへトラフィックを向けているドメインに代わり、正しい DCV トークンを自動で返せます。
証明書更新のたびに複雑な手順を繰り返す代わりに、顧客はより簡単な手順を一度だけ行います。
Cloudflare for Platforms が提供するのは、SSL 証明書管理だけではありません。各顧客向けに、セキュリティとパフォーマンスの機能を大規模に制御できる組み込み機能があります。Cloudflare のセキュリティ機能(DDoS、WAF、Bot Management、Rate Limiting)は、プラットフォーム上の顧客へそのまま拡張されます。セキュリティ態勢は、Managed Rules で顧客ごとにカスタマイズできます。正常なトラフィックを除外したり、セキュリティを強化したりできます。パフォーマンス では、Cache、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 では、顧客のアプリケーションがアクセスできるインターネット上のリソースを可視化し、制御できます。分散デプロイでも、なじみのあるセキュリティモデルを提供します。
オブザーバビリティ、設定、本番グレードのプラットフォーム運用に必要な多くのツールも提供します。詳細はほかの リファレンスアーキテクチャ にあり、プラットフォーム用途でも、それらのガイドで説明する標準モデルと同じように機能します。
Cloudflare for Platforms が、SSL、パフォーマンス、セキュリティをエンド顧客へそのまま拡張できる、よくある 3 つのユースケースを確認します。
この一般的な設計では、Cloudflare がプラットフォームでの SSL 証明書の発行と、パフォーマンスおよびセキュリティ機能の提供を可能にします。顧客ごとに機能はカスタマイズせず、プラットフォームを使う全員に共通の能力を提供します。
- Cloudflare は、SSL 証明書の検証と配布により、顧客からプラットフォームへのトラフィックをグローバル規模で保護します。
- この設計では、同じ L7 設定を使います。つまり、SSL の後に動作し、トラフィックに作用するすべての機能を、各顧客に対して同じように使います。
- Cloudflare for SaaS の Zone を用意し、顧客のホスト名ごとに カスタムホスト名を作成 します。システムが案内する簡単な流れで、各顧客のトラフィックをプラットフォームへ向け、証明書を注文できます。
- この過程では、ほとんどの場合デフォルト設定で十分です。専用の SSL カスタマイズも可能です。
- オリジンへのトラフィックルーティングも、SSL for SaaS の流れで扱います。デフォルト設定は、ほとんどの用途で安全です。
- より高いセキュリティが必要な場合は、Authenticated Origin Pulls、Dedicated CDN Egress IPs、または Tunnels を使った高度な設計を利用できます。
ここでは、顧客ごとに証明書を用意するだけではありません。それぞれにカスタム設定を与えます。たとえば、Basic プランは必須の WAF のみ、Advanced プランは Bot Management を利用する、といった分け方です。全顧客に共通の機能を動かすこともできます。
- SSL トラフィックの保護に加えて、顧客を追加するときに使える追加フィールド(Custom Metadata)で、適切な機能セットをタグ付けします。
- Cloudflare の機能は、Metadata を読んで顧客ごとにカスタマイズします。WAF 機能が、セキュリティカスタマイズの中心です。セキュリティのレベルを変えたり、カスタムの WAF ルールセットを提供したりできます。
- パフォーマンス面では、選択した顧客向けに Argo Smart Routing、Cache、Early Hints を追加して、パフォーマンスを引き上げられます。
最も高度な設計では、Workers ランタイム上で、顧客ごとに完全なサーバーレスアプリケーションをカスタマイズします。シンプルな Workers は、機能カスタマイズに近い役割を果たします。高度な Workers では、プラットフォーム全体を Cloudflare ネットワーク上で動かせます。
- カスタマイズした Cloudflare 機能をデプロイする代わりに、各顧客はカスタムコードを含む独自の「User Worker」JavaScript サーバーレスアプリケーションを持ちます。
- 実行するコードを決める Dispatch Workers と、顧客コードのアクセスを制限する Outbound Workers で、制御を維持します。
- D1、Workers KV、Queues などの高度な Developer Platform の機能を使い、ビジネス全体を Cloudflare 上に構築できます。
Cloudflare for SaaS を使うと、成長するプラットフォーム事業でよくある課題を簡単に解決できます。SSL 証明書の発行からセキュリティ、カスタムのサーバーレスアプリケーションまで、Cloudflare for SaaS はプラットフォーム全体を、数百万規模で顧客へ拡張できます。
ここで説明した機能の詳細は、次のリンクを参照してください。