【目次】
1. はじめに
2025年4月28日にマルチテナントディストリビューションという機能が追加されました。
Announcing SaaS Manager for Amazon CloudFront
マルチテナントディストリビューションは、基本設定を定義するテンプレート的なディストリビューションのようです。マルチテナントディストリビューションにはディストリビューションテナントが紐付き、このディストリビューションテナントがドメイン特有のオリジンパスやドメイン名などを表します。
詳細については、以下のAWS公式ドキュメントをご確認ください。
Understand how multi-tenant distributions work
2. 設定方法
まずはマルチテナントディストリビューションを作成します。ディストリビューションの作成画面を開くと、Distribution optionsという選択肢が表示されますので、Multi-tenant architectureを選択します。
マルチテナントディストリビューションの名前を入力します。この後紐付けるディストリビューションテナントすべてで共通する証明書がある場合は、選択します。今回の手順では空のまま次に進みます。
次は、オリジンを選択します。ここではAmazon S3を選択します。Settingsはデフォルトのままです。
次の画面で、AWS WAFを有効化するか選択する画面が表示されます。こちらは任意の機能ですので、必要な場合には有効化しましょう。
マルチテナントディストリビューションの作成が完了したら、ディストリビューションテナントの作成を行います。Create tenantをクリックしましょう。
ディストリビューションテナントの名前を入力し、先ほど作成したマルチテナントディストリビューションをプルダウンから選択します。
ディストリビューションテナント用の証明書を設定する場合は、プルダウンから選択します。また、ドメインを入力します。証明書がない点や、ドメイン所有確認についてメッセージが出ていますが、こちらは後から対応するため、そのまま次のステップに進んで設定を完了します。ここでは、後続の設定はデフォルトのままにします。
ディストリビューションテナントの作成が完了すると、ドメインの設定を完了してくださいといった表示が出ます。Endpointの箇所にCloudFrontのエンドポイントが記載されていますので、ドメインからEndpointにアクセスできるよう設定を行います。
ドメインの設定を終えてしばらくするとPending certificate requestのStatusがSuccessに切り替わりますので、その後Apply certificateボタンをクリックします。
「Domain Ownership」が「Pending certificate validation」から「Verified through tenant certificate」に切り替わったら、アクセス可能になります。
マルチテナントディストリビューションは、基本設定のテンプレートのようなイメージですので、ディストリビューションテナントをもう1つ追加すると、ほぼ同じ設定が適用されます。
例えば、標準ログ(アクセスログ)もマルチテナントディストリビューション側で設定をしますので、紐づけられたディストリビューションテナントすべてのアクセスログが同じファイル・場所に出力されます。
また、マルチテナントディストリビューションには、コネクショングループというエンドポイントを紐づけるためのグループが存在します。コネクショングループはルーティング設定を担っているため、IPv6やAnycast IP listといった設定はこちらで実施します。
同じコネクショングループに属するディストリビューションテナントでは、同じ設定になることもポイントです。
なお、コネクショングループの画面はデフォルトでは表示されません。
CloudFront画面にてSettingsメニューを開き、Connection groupのトグルをオンにするとメニューに項目が追加されます。
従来のディストリビューション(Standard distribution)ではすべての設定が同じディストリビューション上にあったため、そちらに慣れている場合はどこにどの設定が紐づいているか、最初は分かりづらいかもしれません。
3. AWS WAFの利用について
マルチテナントディストリビューションの場合、AWS WAFはマルチテナントディストリビューションにアタッチするか、ディストリビューションテナントにアタッチするかを選択可能です。
1つのディストリビューションテナントに複数のWeb ACLをアタッチすることはできないため、マルチテナントディストリビューションの設定を継承するか、ディストリビューションテナント特有の設定でオーバーライドするかを選択する形です。
マルチテナントディストリビューションのAWS WAF設定 | ディストリビューションテナントのAWS WAF設定 | 利用されるAWS WAF設定 |
---|---|---|
設定あり | 設定なし | マルチテナントディストリビューションのAWS WAF(継承される) |
設定あり | 設定あり | ディストリビューションテナントのAWS WAF(オーバーライドされる) |
設定なし | 設定あり | ディストリビューションテナントのAWS WAF |
設定なし | 設定なし | AWS WAFは使用しない |
Web ACLは、複数のディストリビューションテナントにアタッチ可能です。
もしディストリビューションテナントA、B、Cがあった場合、Web ACL 1をディストリビューションテナントA、Bにアタッチし、ディストリビューションテナントCはWeb ACL 2をアタッチするといったことも可能です。
また、マルチテナントディストリビューションでAWS WAFを有効化している場合、そのマルチテナントディストリビューションに紐づくディストリビューションテナントではその設定を継承するため、自動でAWS WAFが有効化されます。
もしマルチテナントディストリビューション内で、AWS WAFを使うディストリビューションテナントと、AWS WAFを使わないディストリビューションテナントが混在する場合、マルチテナントディストリビューションではAWS WAF設定を無効化し、ディストリビューションテナントごとにAWS WAFの設定を行ったほうが良いでしょう。
4. WafCharmとの利用について
WafCharmでは、Advanced Ruleポリシーがマルチテナントディストリビューションに対応しております。
Advanced Ruleポリシーについては、以下のヘルプページもご参考ください。
Advanced RuleポリシーとLegacy Ruleポリシーの違い
5. おわりに
マルチテナントディストリビューションは、従来のディストリビューション(Standard distribution)で個別に行っていた設定を一元管理できるため、同じ設定の複数のディストリビューションをまとめたい場合に有用です。
SaaS製品ではプランによって条件が変わる場合もありますので、基本的な設定は同じまま、コネクショングループを使ってエンドポイントだけを分けるといった対応も可能かと思います。
しかしながら、複数のテナントディストリビューションの標準ログ(アクセスログ)が同じファイル内に出力されるため、特定のテナントディストリビューションだけのログを見たいといった場合は別途ファイルの中身を確認する必要があります。
また、従来のディストリビューションに慣れている場合は設定の違いなどに少し戸惑う部分もあるかとは思います。