ネットワーク セキュア イングレスのパターン実装

ネットワーク セキュア イングレスは、グローバル ルーティング、グローバル オフロード、正常性エンドポイント監視のパターンなど、いくつかの設計パターンをカプセル化します。 この記事のパターンの実装を高可用性や信頼性が要求される HTTP(S) ワークロードのゲートウェイとして使用して、さまざまなリージョンでワークロードへの安全なグローバル ルーティングと低遅延のフェールオーバーを実現できます。

ビデオ: ネットワーク セキュア イングレスの実装

パターンの要件

この記事では、ネットワーク セキュア イングレスのパターン実装の要となる 3 つの要件、つまりグローバル ルーティング、低遅延フェールオーバー、エッジでの攻撃の緩和を中心に取り上げます。

グローバル ルーティング

ネットワーク セキュア イングレス パターンは、グローバル ルーティング パターンをカプセル化したものです。 そのため、この実装を使って、異なるリージョンのワークロードに要求をルーティングすることができます。

異なるリージョンの 2 つのワークロードに HTTPS 要求がルーティングされるようすを示す図。

低遅延フェールオーバー

この実装は、正常なワークロードと異常なワークロードを見極め、それに応じて滞りなくルーティングを調整できることが求められます。 ルーティングの調整は、数分の待ち時間で行う必要があります。

異常なワークロードには HTTPS 要求がルーティングされないことを示す図。

エッジでの攻撃の緩和

エッジでの攻撃緩和には、実装の "ネットワーク セキュア" の部分が必要です。 ワークロードまたはサービスとしてのプラットフォーム (PaaS) サービスはインターネットからアクセスできないようにする必要があります。 インターネット トラフィックのルーティングは、ゲートウェイ経由に限定しなければなりません。 ゲートウェイには、悪用を軽減する機能が必要です。

要求のクエリ文字列に SQL ステートメントを含むHTTPS 要求がエッジで阻止されないようすを示す図。

パターン

このソリューションには、次の設計パターンが実装されています。

デザイン

要求が Azure Front Door Premium を通ってリージョンのスタンプに流れるようすを示す図。

この図は、Web アプリケーション ファイアウォールを含んだ Azure Front Door Premium ボックスに HTTPS 要求が流れるようすを示しています。 これは、Azure Front Door Premium と Azure Web Application Firewall の統合を示しています。 要求は、さらに Private Link を通って、異なるリージョンの 2 つのスタンプに到達していることがわかります。 各スタンプには、静的 Web サイトと内部ロード バランサーがあります。 要求は Private Link を通って、各スタンプの静的 Web サイトとロード バランサーに到達します。

この実装の詳細は次のとおりです。

  • 2 つのリージョンで動作する静的 Web ワークロードをシミュレートするために、Azure Blob Storage アカウントを使用します。 この実装には、内部ロード バランサー (ILB) の背後で実行されるワークロードは含まれません。 ILB の背後で実行されるプライベート ワークロードでもこの実装が機能することを示すために、図に ILB が示されています。
  • グローバル ゲートウェイとして Azure Front Door Premium レベルが使用されます。
  • Azure Front Door インスタンスには、グローバル Web アプリケーション ファイアウォール (WAF) ポリシーが構成され、一般的な悪用から保護するマネージド ルールがそこに含まれています。
  • ストレージ アカウントは、インターネット経由では公開されません。
  • Azure Front Door Premium レベルは、Azure Private Link 経由でストレージ アカウントにアクセスします。
  • Azure Front Door インスタンスの構成の概要は次のとおりです。
    • 単一の配信元グループを指すルートを 1 つ持つエンドポイント。 配信元グループは、配信元 (またはバックエンド) のコレクションです。
    • 配信元グループには、各ストレージ アカウントを指す配信元が構成されています。
    • 各配信元は、ストレージ アカウントへの Private Link アクセスを要求します。
    • 配信元グループには、ストレージ アカウントの HTML ページにアクセスするための正常性プローブが構成されています。 この HTML ページが、静的ワークロードの正常性エンドポイントとして機能します。 プローブが直近 4 回の試行のうち 3 回、配信元に正常にアクセスできた場合、配信元は正常と見なされます。

コンポーネント

Web 要求

  • Azure Web Application Firewall: Web Application Firewall の Premium レベルでは、一般的な悪用から保護するのに役立つ Microsoft マネージド ルールがサポートされています。
  • Azure Private Link: Azure Private Link のプライベート エンドポイントにより、仮想ネットワーク内のプライベート IP アドレスに Azure PaaS サービスが公開されます。 この公開によって、通信がパブリック インターネットではなく Microsoft のバックボーン ネットワークを通ることができます。
  • Azure Front Door Premium レベル: Azure Front Door は、レイヤー 7 のグローバル負荷分散を提供します。 Azure Front Door は、Web Application Firewall と統合されています。 Premium レベルでは、以下がサポートされます。
    • Azure Private Link: Private Link がサポートされることで、Azure Front Door は、プライベート仮想ネットワーク内で実行されている PaaS サービスまたはワークロードと、Microsoft バックボーン ネットワーク経由で通信を行うことができます。
    • Microsoft マネージド ルール セット: Azure Front Door の Premium レベルでは、Web Application Firewall の Premium レベルがサポートされており、これによって WAF でマネージド ルール セットが使用できるようになります。
  • Azure Storage: この実装では、Blob Storage アカウントを使用して静的 Web サイトまたはワークロードが表現されています。
  • 内部ロード バランサー: この実装では、内部ロード バランサーは使用しません。 ロード バランサーの背後で実行されているプライベート ワークロードを表現する目的で図示されています。 ストレージ アカウントへのルーティングは、ロード バランサーへのルーティングと同じように行われます。

Operations

ネットワークの観点からリソースを保護することは、悪用を防ぐだけでなく、そのリソースにアクセスする必要のあるプロセスや管理者からリソースを分離することにもなります。 たとえば、DevOps パイプライン内のビルド エージェントは、Web アプリケーションに更新プログラムをデプロイするためにストレージ アカウントにアクセスしなければならない場合があります。 また、管理者がトラブルシューティング目的でリソースにアクセスしなければならない場合もあります。

運用目的でのネットワーク セキュア アクセスの提供を例示するために、この実装では、ストレージ アカウントへの Private Link アクセスを備えた仮想ネットワークに仮想マシン (VM) をデプロイしています。 この実装には Azure Bastion がデプロイされており、管理者はそれを使って VM に接続することができます。 デプロイ シナリオでは、VM と同様の方法でプライベート ビルド エージェントを仮想ネットワークにデプロイできます。

運用のためのコンポーネントの詳細を次に示します。

  • Azure Virtual Network: この実装では、管理者がプライベートな Microsoft バックボーン ネットワークを介してストレージ アカウントと安全に通信するために必要なコンポーネントを含む仮想ネットワークが使用されます。
  • Azure Virtual Machines: この実装では、管理者が接続するためのジャンプボックスとして VM を使用します。 この VM はプライベート仮想ネットワークにデプロイされます。
  • Azure Bastion: Azure Bastion を使用すると、管理者はジャンプボックス VM に Secure Shell (SSH) 経由で安全に接続できます。VM にパブリック IP アドレスが割り当てられている必要はありません。
  • Private Link エンドポイント: プライベート エンドポイントは、仮想ネットワークからプライベート IP アドレスが割り当てられ、ストレージ アカウント PaaS サービスに接続します。 この接続により、プライベート仮想ネットワーク内のリソースは、プライベート IP アドレス経由でストレージ アカウントと通信できます。
  • プライベート Azure DNS ゾーン: プライベート Azure DNS ゾーンは、Azure ストレージ アカウントの Private Link ホスト名を、プライベート エンドポイントのプライベート IP アドレスに解決するために使用される DNS サービスです。

Web 要求フロー

Web 要求のフローを示す図。

この図は、ユーザーが Azure Front Door に対して Web 要求を行うようすを示しています。 Azure Front Door ボックスの図は、Azure Front Door ルーティング フローの各ステップを示しています。 フローに示されているのは、WAF ルールが評価される手順です。ここで、Azure Front Door ルートを突き合わせて配信元グループが選択され、配信元グループから配信元が選択されます。 最後に示されているのは、Azure Front Door が Private Link 経由で Azure Blob Storage アカウントに接続する部分です。

  1. ユーザーが Azure Front Door のエンドポイントに HTTP または HTTPS 要求を発行します。

  2. WAF ルールが評価されます。 一致するルールは常にログに記録されます。 Azure Front Door WAF ポリシー モードが "防止" に設定され、なおかつ、一致するルールのアクションが [異常時にブロックする] に設定されている場合、その要求はブロックされます。 それ以外の場合、要求は続行されるか、リダイレクトされるか、または後続のルールが評価されます。

  3. Azure Front Door に構成されているルートが照合され、正しい配信元グループが選択されます。 この例では、パスは Web サイト内の静的コンテンツへのものでした。

  4. 配信元グループから配信元が選択されます。

    a. この例では、正常性プローブによって Web サイトが異常と見なされるため、考えられる配信元から削除されます。
    b. この Web サイトが選択されます。

  5. 要求は、Microsoft バックボーン ネットワーク上の Private Link を介して Azure ストレージ アカウントにルーティングされます。

Azure Front Door ルーティング アーキテクチャの詳細については、「ルーティング アーキテクチャの概要」を参照してください。

運用フロー

保護されたリソースへの接続に管理者が使用するフローを示す図。

図には 3 つの部分があります。 最初の部分は、静的 Web サイトとして機能する Azure Blob Storage を示しています。 Azure Front Door が Private Link を介してストレージ アカウントに接続しています。 2 番目の部分は、仮想ネットワークを表すボックスです。 仮想ネットワークにサブネットとその内容が示されています。 これらのサブネットには、10.0.2.5 の IP アドレスを持つ Private Link エンドポイントを含むプライベート エンドポイント サブネット、ジャンプボックス仮想マシンを含んだジャンプボックス サブネット、Azure Bastion を含んだ Azure Bastion サブネットがあります。 3 番目の部分は、SSH を使用して Azure Bastion 経由で仮想ネットワーク内のジャンプボックス VM にアクセスしている管理ユーザーです。 矢印が VM からプライベート Azure DNS ゾーンに向かっています。 最後の矢印は、VM から Private Link エンドポイントを介し、ストレージ アカウントに続いています。

  1. 管理者が、仮想ネットワークにデプロイされている Azure Bastion に接続します。

  2. Azure Bastion は、ジャンプボックス VM への SSH 接続を提供します。

  3. ジャンプボックスでは管理者が、Azure CLI を使用してストレージ アカウントへのアクセスを試みます。 ジャンプボックスが、パブリック Azure Blob Storage アカウントのエンドポイント (storageaccountname.blob.core.windows.net) を DNS に照会します。

    プライベート DNS は最終的には storageaccountname.privatelink.blob.core.windows.net に解決されます。 Private Link エンドポイントのプライベート IP アドレス (この例では 10.0.2.5) が返されます。

  4. ストレージ アカウントへのプライベート接続が、Private Link エンドポイントを介して確立されます。

考慮事項

このソリューションを使用する場合は、次の点に注意してください。

[信頼性]

信頼性により、顧客に確約したことをアプリケーションで確実に満たせるようにします。 詳細については、「信頼性の重要な要素の概要」を参照してください。

このシナリオでは信頼性に関する次の重要なポイントに対処しています。

  • 正常性プローブを使用した低遅延のグローバル ルーティングにより、リージョンの障害からアプリケーションを隔離することで信頼性を確保します。
  • Azure Front Door の Web Application Firewall により、HTTP と HTTPS 要求に対する一元的な保護が提供されます。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

このシナリオではセキュリティに関する次の重要なポイントに対処しています。

コスト最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

Azure Front Door Premium と Web Application Firewall Premium はどちらも、Standard レベル以上の先進のセキュリティ機能を提供しますが、どちらも別途コストがかかります。 Azure Front Door と Web Application Firewall の価格の詳細については、次のリソースを確認してください。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「オペレーショナル エクセレンスの重要な要素の概要」を参照してください。

ネットワークのセキュリティ境界を実装すると、運用とデプロイの複雑さが増します。 次の点に留意してください。

  • Microsoft ホステッド エージェントの IP 範囲は時間と共に変化します。 仮想ネットワークにセルフホステッド エージェントを実装することを検討してください。
  • 運用チームがネットワーク セキュア リソースへのアクセスを必要とするシナリオでは、Azure Bastion 実装してください。
  • Azure Front Door の Web Application Firewall を使用して HTTP と HTTPS 要求の保護を一元化することは、ゲートウェイ オフロード パターンの例です。 要求に悪用がないか調べる責任が、Azure Front Door の Web Application Firewall にオフロードされます。 オペレーショナル エクセレンスの観点から見た利点は、ルールを管理すべき場所が 1 か所で済むことです。

重要

ネットワーク セキュア イングレス サンプルにより、Azure Bastion 経由でジャンプボックスに接続し、ネットワーク セキュア VM に接続するために必要なすべてのリソースをデプロイすることができます。

パフォーマンス効率

パフォーマンス効率とは、ユーザーからの要求に合わせてワークロードをスケーリングできることです。 詳細については、「パフォーマンス効率の柱の概要」を参照してください。

グローバル ルーティングを使用すると、同じリージョンまたは異なるリージョンに追加のリソースをデプロイすることで、水平スケーリングが可能になります。

次の手順