ネットワーク セキュリティで保護されたイングレスのパターン実装

ネットワーク セキュリティで保護されたイングレスには、グローバル ルーティング、グローバル オフロード、正常性エンドポイント監視のパターンなど、いくつかの設計パターンがカプセル化されています。 この記事のパターン実装は、高可用性または信頼性を必要とするほとんどの HTTP または HTTPS ワークロードのゲートウェイとして使用できます。これは、正常性ベースの配信元フェールオーバーを使用して、異なるリージョンのワークロードへのセキュリティで保護されたグローバル ルーティングを提供することで実現できます。

ビデオ: ネットワーク セキュリティで保護されたイングレスの実装

パターンの要件

この記事では、ネットワーク セキュリティで保護されたイングレスのパターン実装が重点を置く 3 つの要件について説明します。グローバル ルーティング、正常性ベースの配信元のフェールオーバー、エッジでの攻撃の軽減策です。

グローバル ルーティング

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

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

ヘルスチェックに基づくオリジン フェールオーバー

実装では、正常なオリジンと異常なオリジンを識別し、要求が異常なオリジンにルーティングされないようにする必要があります。 正常性プローブの間隔とサンプル設定によって、Azure Front Door が配信元の正常性の変化をどれくらい迅速に検出するかが決まります。 不要なフェールオーバーを発生させることなく、ワークロードのフェールオーバー ターゲットを満たすようにこれらの設定を構成します。

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

エッジでの攻撃の軽減

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

エッジで停止されているクエリ文字列内の SQL ステートメントを含む HTTPS 要求を示す図。

パターン

このソリューションは、次の設計パターンを実装します。

設計

Azure Front Door Premium を介してリージョン スタンプに送信される要求を示す図。

この図は、Web アプリケーション ファイアウォールが含まれる Azure Front Door Premium ボックスに流れる HTTPS 要求を示しています。 この図は、Azure Front Door Premium と Azure Web Application Firewall の統合を示しています。 次に、異なるリージョンの 2 つのスタンプに Private Link 経由で送信される要求を図に示します。 各スタンプには、静的な Web サイトと内部ロード バランサーがあります。 要求は Private Link を介して、静的 Web サイトと両方のスタンプ内のロード バランサーに送信されます。

この実装には、次の詳細が含まれます。

  • Azure Blob Storage アカウントを使用して、2 つのリージョンで実行されている静的 Web ワークロードをシミュレートします。 この実装には、内部ロード バランサー (ILB) の背後で実行されているワークロードは含まれません。 この図は、ILB の背後で実行されているプライベート ワークロードでこの実装が機能することを示す ILB を示しています。

  • グローバル ゲートウェイとして Azure Front Door Premium レベルを使用します。

  • Azure Front Door インスタンスには、一般的な悪用から保護するのに役立つマネージド ルールで構成されたグローバル Web アプリケーション ファイアウォール (WAF) ポリシーがあります。

  • ストレージ アカウント ファイアウォールは、クライアントがAzure Front Doorとそのセキュリティ制御をバイパスできないように、パブリック ネットワーク アクセスを拒否します。

  • Azure Front Door Premium レベルでは、Azure Private Link 経由でストレージ アカウントにアクセスします。

  • Azure Front Door インスタンスには、次の大まかな構成があります。

    • 1 つの配信元グループを指す単一のルートを持つエンドポイント。 オリジングループは、オリジンの集合です。

    • オリジングループには、各ストレージアカウントを指すように構成されたオリジンがあります。

    • 各配信元は、ストレージ アカウントへの Private Link アクセスを要求します。

    • オリジングループには、ストレージアカウント内の HTML ページにアクセスするように設定されたヘルスプローブがあります。 このページでは、静的ワークロードの可用性を確認します。 アプリケーション ワークロードの場合は、要求を処理するために必要な重要な依存関係をチェックする正常性エンドポイントを使用します。

      この実装では、直近 4 回のプローブのうち 3 回が成功すると、オリジンは正常と見なされます。 プローブ間隔とサンプル数の設定によって、Front Door がオリジンの正常性の変化をどの程度速く検出するかが決まります。

コンポーネント

  • Azure Web Application Firewall は、Microsoft が管理するルール セットを使用して、Web アプリケーションを一般的な脅威や脆弱性から保護するセキュリティ サービスです。 このアーキテクチャでは、Azure Web Application Firewall Azure Front Door Premium と統合して、配信元に到達する前に悪意のある HTTP および HTTPS トラフィックを検査およびブロックします。

  • Azure Private Link は、Microsoft バックボーン ネットワーク経由で Azure PaaS サービスへのプライベート接続を可能にするサービスです。 このアーキテクチャでは、Azure Front Door がパブリック インターネットに公開することなく、ストレージ アカウントに安全にアクセスできます。

  • Azure Front Door Premium は、レイヤー 7 の負荷分散、ルーティング、セキュリティ機能を提供するグローバル アプリケーション配信ネットワークです。 このアーキテクチャでは、セキュリティで保護されたグローバル ゲートウェイとして機能します。 トラフィックをリージョンのワークロードにルーティングし、Private Link 経由でプライベートに通信しながら Web アプリケーション ファイアウォール ポリシーを適用します。 Premium レベルでは、次のコンポーネントがサポートされています。

    • Private Linkを使用すると、Azure Front Doorはプライベート仮想ネットワーク内の PaaS サービスまたはワークロードに接続できます。 このアーキテクチャでは、Azure Front Doorはパブリック インターネットを通過することなく、Private Linkを使用して各ストレージの配信元に到達します。

    • Microsoftマネージド ルール セットは、Azure Front Doorの Premium レベルでのみ使用できます。 このアーキテクチャでは、Azure Web Application Firewallはマネージド ルールを使用して受信要求を検査し、構成された異常スコアのしきい値に達した要求をブロックします。

  • Azure Storage は、構造化データと非構造化データ用のスケーラブルなクラウド ストレージ サービスです。 このアーキテクチャでは、Blob Storage アカウントは静的 Web 資産を格納し、Azure Front Door ルーティングの配信元ターゲットとして機能します。

  • ILB は、仮想ネットワーク内または接続されたネットワーク間でプライベート IP トラフィックを分散します。 このアーキテクチャでは、Azure Private Link サービスを介して ILB の背後にある配信元 Web サーバーを公開し、Azure Front Doorがカスタムプライベートオリジンとして ILB を使用できるようにします。

オペレーション

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

運用上の目的でネットワークで保護されたリソースへのアクセスを示すために、この実装では、ストレージ アカウントにPrivate Linkアクセスできる仮想ネットワークに仮想マシン (VM) をデプロイします。 この実装では、管理者が VM への接続に使用できる Azure Bastion がデプロイされます。 デプロイ シナリオでは、VM と同様に、プライベート ビルド エージェントを仮想ネットワークにデプロイできます。

操作のコンポーネントの詳細を次に示します。

  • Azure Virtual Network は、リソース間の安全な通信を可能にするネットワーク サービスです。 このアーキテクチャでは、仮想ネットワークには、管理者がプライベート Microsoft バックボーン ネットワーク経由でストレージ アカウントと安全に通信するために必要なコンポーネントが含まれています。

  • Azure 仮想マシン は、スケーラブルなコンピューティング リソースを提供するサービスとしてのインフラストラクチャ (IaaS) オファリングです。 このアーキテクチャでは、VM は、管理者がネットワークで保護されたリソースに安全にアクセスするためのジャンプ ボックスとして機能します。

  • Azure Bastion は、パブリック IP アドレスを公開することなく、VM へのリモート デスクトップ プロトコル (RDP) と Secure Shell (SSH) アクセスを提供するマネージド PaaS です。 このアーキテクチャでは、管理者は安全な操作のために SSH 経由でジャンプ ボックス VM に接続できます。

  • プライベート エンドポイントは、Private Linkを介してAzure サービスに接続し、仮想ネットワークからのプライベート IP アドレスを使用するネットワーク インターフェイスです。 このアーキテクチャでは、プライベート エンドポイントは、仮想ネットワーク内のリソースをプライベート IP アドレス経由でストレージ アカウントに接続します。

  • プライベート Azure DNS ゾーンは、ドメイン名を仮想ネットワーク内のプライベート IP アドレスに解決するドメイン ネーム システム (DNS) サービスです。 このアーキテクチャでは、ストレージ アカウントの Private Link ホスト名をプライベート IP アドレスに解決します。これにより、VM からの安全なアクセスが可能になります。

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 ルールが評価されます。 異常スコアリングを使用するマネージドルールは、一致するとリクエストの異常スコアに加算されます。 このアーキテクチャは防止モードで実行され、要求が異常スコアのしきい値に達したときに WAF によって ブロック アクションが適用されます。 ブロックされた要求が配信元に到達しません。

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

  4. 原点は、原点グループから選択されます。

    a. この例では、正常性プローブが Web サイトを異常と見なしているため、考えられるオリジンから除外されています。
    b。 この Web サイトが選択されています。

  5. 要求は、Microsoftバックボーン ネットワーク経由でPrivate Link経由でAzure Storage アカウントにルーティングされます。

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

運用フロー

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

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

  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のエイリアスです。 プライベート Azure DNS ゾーンは、その名前をプライベート エンドポイントの IP アドレス (この例では 10.0.2.5) に解決します。

  4. ジャンプ ボックスは、プライベート エンドポイントを介してストレージ アカウントに接続します。

考慮事項

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

信頼性

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

このパターンを使用する場合は、次の信頼性への影響を考慮してください。

  • 冗長な配信元を別々のリージョンにデプロイし、正常性プローブを構成して、Azure Front Doorが要求を提供できる配信元にのみルーティングするようにします。 ワークロードの要件に基づいてフェールオーバー ターゲットを定義し、プローブ間隔、サンプル サイズ、および不要なフェールオーバーを発生させることなく、そのターゲットを満たすために必要なサンプルを調整します。

  • ストレージの配信元全体でコンテンツの一貫性を保ちます。 各ストレージ アカウントに同じバージョンのリリースを公開します。 オブジェクト レプリケーションを使用する場合は、非同期レプリケーションを考慮します。

  • 配信元の障害と復旧を定期的にテストします。 エラー検出、正常な配信元へのルーティング、フェールバック動作を検証します。 配信元グループ内のすべての配信元が正常性プローブに失敗した場合、Azure Front Doorはすべての配信元を異常として扱い、ラウンド ロビン パターンですべての配信元に要求を分散します。

  • Private Linkを使用する配信元の場合は、異なるAzure Front Door Private Linkリージョンで配信元を構成します。 この構成では、Azure Front Doorリージョン クラスターを経由する個別のパスが提供されます。 各配信元の近くにあるサポートされているPrivate Linkリージョンを選択して、追加のネットワーク ホップの待機時間を制限します。

  • Azure Front Doorは、この設計では単一のグローバル イングレス サービスのままです。 Azure Front Door の障害を許容できないミッションクリティカルなワークロードについては、検証済みの代替イングレス パスを評価してください。 代替パスを使用すると、同等のルーティング、セキュリティ、証明書、監視、およびフェールオーバー構成を維持する必要があるため、コストと運用の複雑さが増します。

セキュリティ

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

このパターンを実装するときは、次のセキュリティプラクティスを使用します。

コストの最適化

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

Azure Front Door Premium は Standard レベルを超えるコストがかかります。 Premium レベルには、マネージド WAF ルールとPrivate Link配信元のサポートが含まれています。 Azure Front Door と Web アプリケーション ファイアウォールの価格の詳細については、次のリソースを確認してください。

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

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

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

パフォーマンス効率

パフォーマンス効率は、ユーザーがそれに対して行う要求を満たすためにワークロードをスケーリングする機能です。 詳細については、 パフォーマンス効率の柱の概要を参照してください。

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

次のステップ