Azure Storage BLOB で Azure Front Door を使用する
Azure Front Door により、Azure Storage BLOB からの静的コンテンツの配信が高速化され、セキュリティで保護されたスケーラブルなアーキテクチャを実現できます。 静的コンテンツの配信は、Web サイトのホスティングやファイル配信など、さまざまなユース ケースに役立ちます。
Architecture
この参照アーキテクチャでは、ストレージ アカウントと Front Door プロファイルを 1 つの配信元を使用してデプロイします。
データフロー
シナリオのデータ フローは次のとおりです。
- クライアントが、カスタム ドメイン名と Front Door 提供の TLS 証明書を使用して、Azure Front Door へのセキュリティで保護された接続を確立します。 クライアントの接続は、近くの Front Door のポイント オブ プレゼンス (PoP) で終了します。
- Front Door Web アプリケーション ファイアウォール (WAF) が要求をスキャンします。 WAF によって要求のリスク レベルが高すぎると判断された場合、要求はブロックされ、Front Door は HTTP 403 エラー応答を返します。
- Front Door PoP のキャッシュにこの要求に対する有効な応答が含まれている場合、Front Door はすぐに応答を返します。
- そうでない場合、PoP は、Microsoft のバックボーン ネットワークを使用して、世界中の場所を問わず、配信元のストレージ アカウントに要求を送信します。 PoP は、有効期間が長い別の TCP 接続を使用してストレージ アカウントに接続します。 このシナリオでは、Private Link を使用して、ストレージ アカウントに安全に接続します。
- ストレージ アカウントが、Front Door PoP に応答を送信します。
- PoP は、応答を受信すると、後続の要求のためにそれをキャッシュに格納します。
- PoP がクライアントに応答を返します。
- インターネット経由でストレージ アカウントに直接要求を送信すると、Azure Storage ファイアウォールによってブロックされます。
コンポーネント
- Azure Storage は静的コンテンツを BLOB に格納します。
- Azure Front Door は、クライアントからの受信接続を受け取り、WAF でそれらをスキャンして、ストレージ アカウントに要求を安全に転送し、応答をキャッシュします。
代替
別のクラウド ストレージ プロバイダーに静的ファイルがある場合、または自社で所有して管理しているインフラストラクチャで静的コンテンツをホストする場合も、このシナリオの大部分が引き続き適用されます。 ただし、配信元サーバーへの着信トラフィックを保護して、Front Door 経由であることを確認する方法を検討する必要があります。 ストレージ プロバイダーが Private Link をサポートしていない場合は、Front Door サービス タグの許可リストの作成や X-Azure-FDID
ヘッダーの検査など、別の方法を使用することを検討してください。
シナリオの詳細
静的コンテンツ配信は、以下の例のように、多くの状況で役立ちます。
- Web アプリケーション用のイメージ、CSS ファイル、JavaScript ファイルの配信。
- PDF ファイルや JSON ファイルなど、ファイルとドキュメントの提供。
- 非ストリーミング ビデオの配信。
その性質上、静的コンテンツは頻繁に変更されません。 また、静的ファイルはサイズが大きくなる可能性もあります。 これらの特性から、キャッシュの候補として適しており、パフォーマンスの向上や、要求を処理するためのコスト削減を図ることができます。
複雑なシナリオでは、1 つの Front Door プロファイルによって、静的コンテンツと動的コンテンツが提供される場合があります。 配信元の種類ごとに個別の配信元グループを使用し、Front Door のルーティング機能を使用して、受信要求を適切な配信元にルーティングできます。
考慮事項
スケーラビリティとパフォーマンス
Front Door は、コンテンツ配信ネットワーク (CDN) として、グローバルに分散された PoP ネットワークにコンテンツをキャッシュします。 応答のキャッシュ コピーを PoP で使用できる場合、Front Door はキャッシュされた応答を使用して、すばやく応答できます。 キャッシュからコンテンツを返すと、ソリューションのパフォーマンスが向上し、配信元の負荷が軽減されます。 有効なキャッシュ応答が PoP にない場合は、Front Door のトラフィック高速化機能により、配信元からのコンテンツの提供にかかる時間を短縮できます。
Security
認証
Front Door はインターネットに接続するように設計されており、このシナリオは一般公開されている BLOB 用に最適化されています。 BLOB へのアクセスを認証する必要がある場合は、共有アクセス シグネチャを使用することを検討し、"クエリ文字列を使用" のクエリ文字列の動作を有効にして、Front Door が認証されていないクライアントに要求を提供しないようにします。 ただし、この方法では、異なる共有アクセス署名を持つ各要求を配信元に個別に送信する必要があるため、Front Door キャッシュを効果的に使用できない場合があります。
配信元のセキュリティ
Front Door は、Private Link を使用して Azure Storage アカウントに安全に接続します。 ストレージ アカウントは、インターネットからの直接アクセスを拒否し、Front Door で使用されるプライベート エンドポイント接続を介した要求のみを許可するように構成されています。 この構成により、すべての要求が Front Door によって処理され、ストレージ アカウントの内容がインターネットに直接公開されるのを回避できます。 ただし、この構成には Azure Front Door の Premium レベルが必要です。 Standard レベルを使用する場合は、ストレージ アカウントにパブリックにアクセスできる必要があります。 共有アクセス署名を使用して、ストレージ アカウントへの要求をセキュリティで保護し、すべての要求に対するする署名をクライアントに含めるか、Front Door ルール エンジンを使用して Front Door から署名を添付できます。
カスタム ドメイン名
Front Door は、カスタム ドメイン名をサポートしており、それらのドメインの TLS 証明書を発行および管理できます。 カスタム ドメインを使用すると、クライアントが信頼できる使い慣れたドメイン名からファイルを受け取り、Front Door へのすべての接続が TLS によって暗号化されるように設定できます。 Front Door で TLS 証明書を管理すると、無効または期限切れの TLS 証明書による停止やセキュリティの問題を回避できます。
Azure Storage もカスタム ドメイン名をサポートしていますが、カスタム ドメインを使用する場合は HTTPS はサポートされません。 Front Door は、ストレージ アカウントでカスタム ドメイン名を使用するための最適な方法です。
Web アプリケーション ファイアウォール
Front Door WAF のマネージド ルール セットは、一般的および新たなセキュリティ上の脅威がないか要求をスキャンします。 静的と動的の両方のアプリケーションに WAF およびマネージド ルールを使用することをお勧めします。
また、レート制限と geo フィルタリングの機能が必要な場合は、Front Door WAF を使用してそれらを実行できます。
回復性
Front Door は高可用性サービスであり、そのグローバルに分散されたアーキテクチャにより、単一の Azure リージョンおよび PoP の障害に対する回復性を備えています。
Front Door キャッシュを使用すると、ストレージ アカウントの負荷を軽減できます。 また、ストレージ アカウントが使用できない場合、Front Door では、アプリケーションが回復するまで、キャッシュされた応答を提供し続けることができる可能性があります。
ストレージ アカウントの回復性を考慮することで、ソリューション全体の回復性をさらに向上させることができます。 詳細については、「Azure Storage の冗長性」を参照してください。 または、複数のストレージ アカウントをデプロイし、Front Door 配信元グループに複数の配信元を構成し、各配信元の優先度を構成することによって配信元間のフェールオーバーを構成することもできます。 詳細については、「Azure Front Door の配信元と配信元グループ」を参照してください。
コスト最適化
キャッシュは、静的コンテンツの配信コストを削減するのに役立ちます。 Front Door の PoP には応答のコピーが格納され、後続の要求に対してこれらのキャッシュされた応答を配信できます。 キャッシュを使用すると、配信元に対する要求の負荷が軽減されます。 大規模な静的コンテンツ ベースのソリューション、特に大きなファイルを配信するものでは、キャッシュによってトラフィック コストを大幅に削減できます。
このソリューションで Private Link を使用するには、Front Door の Premium レベルをデプロイする必要があります。 ストレージ アカウントに直接送信されるトラフィックをブロックする必要がない場合は、Standard レベルを使用できます。 詳細については、「配信元のセキュリティ」を参照してください。
このシナリオのデプロイ
Bicep または JSON ARM テンプレートを使用してこのシナリオをデプロイするには、こちらのクイックスタートを参照してください。
Terraform を使用してこのシナリオをデプロイするには、こちらのクイックスタートを参照してください。
次のステップ
Front Door プロファイルを作成する方法について説明します。