Azure Virtual WAN でプライベート エンドポイント宛てのトラフィックをセキュリティで保護する
注意
この記事は、セキュリティ保護付き仮想ハブに対してのみ適用されます。 ハブ仮想ネットワーク内の Azure Firewall を使用して、プライベート エンドポイント宛てのトラフィックを検査する場合は、「 Azure Firewall を使用してプライベート エンドポイント宛てのトラフィックの検査する」を参照してください。
Azure プライベート エンドポイントは、Azure Private Link の基本的な構成要素です。 プライベート エンドポイントを使用すると、仮想ネットワークにデプロイされた Azure リソースから、プライベート リンク リソースとプライベートに通信できます。
プライベート エンドポイントを使用すると、リソースから、仮想ネットワークにデプロイされたプライベート リンク サービスにアクセスできます。 仮想ネットワーク ピアリングとオンプレミス ネットワーク接続を介したプライベート エンドポイントへのアクセスにより、接続性が拡張されます。
Virtual WAN に接続された仮想ネットワーク内のプライベート エンドポイント経由で公開されるサービスに対して、オンプレミスまたは Azure 内のクライアントからのトラフィックをフィルター処理することが必要になる場合があります。 この記事では、セキュリティ プロバイダーとして Azure Firewall でセキュリティ保護付き仮想ハブを使用してこのタスクを行う手順について説明します。
Azure Firewall は、次のいずれかの方法を使用してトラフィックをフィルター処理します。
- TCP および UDP プロトコルの場合、ネットワーク ルール内の FQDN
- HTTP、HTTPS、MSSQL の場合、アプリケーション ルール内の FQDN
- ネットワーク ルールを使用する送信元と送信先の IP アドレス、ポート、およびプロトコル
アプリケーション規則は、プライベート エンドポイント宛てのトラフィックを検査する場合に、ネットワーク規則よりも優先されます。これは、Azure Firewall では常にアプリケーション規則を使用してトラフィックの SNAT を実行するためです。 「プライベート エンドポイントとは」で説明されている制限により、プライベート エンドポイント宛てのトラフィックを検査する場合は、SNAT をお勧めします。 代わりにネットワーク規則の使用を計画している場合は、常に SNAT を実行するように Azure Firewall を構成することをお勧めします。「Azure Firewall の SNAT プライベート IP アドレス範囲」。
セキュリティ保護付き仮想ハブは Microsoft によって管理され、プライベート DNS ゾーンにはリンクできません。 これは、プライベート リンク リソース の FQDN を、対応するプライベート エンドポイントの IP アドレスに解決するために必要です。
SQL の FQDN のフィルター処理は、プロキシ モードのみでサポートされます (ポート 1433)。 プロキシ モードを使用すると、リダイレクトと比較して待機時間が増加する可能性があります。 リダイレクト モードを使用して構成する場合は (Azure 内から接続するクライアントの既定)、代わりにファイアウォール ネットワーク ルールで FQDN を使ってアクセスをフィルター処理できます。
Azure Firewall でネットワークまたはアプリケーション規則を使用してトラフィックをフィルター処理する
次の手順では、ネットワーク規則 (FQDN または IP アドレスベース) またはアプリケーション規則を使用して Azure Firewall でトラフィックをフィルター処理できるようにします。
ネットワーク規則:
セキュリティ保護付き仮想ハブに接続され、プライベート エンドポイントのレコード型をホストするプライベート DNS ゾーンにリンクされている仮想ネットワークに DNS フォワーダー仮想マシンをデプロイします。
セキュリティ保護付き仮想ハブに接続されている仮想ネットワークのカスタム DNS サーバーを構成します。
- FQDN ベースのネットワーク規則 - DNS フォワーダーの仮想マシンの IP アドレスを指し、Azure Firewall に関連付けられているファイアウォール ポリシーで DNS プロキシを有効にするようにカスタム DNS 設定を構成します。 ネットワーク規則で FQDN フィルター処理を行う場合は、DNS プロキシを有効にする必要があります。
- IP アドレスベースのネットワーク規則 - 前の項目で説明したカスタム DNS 設定は省略可能です。 DNS フォワーダー仮想マシンのプライベート IP を指すようにカスタム DNS サーバーを構成できます。
手順 2. で選択した構成に応じて、プライベート エンドポイントのパブリック DNS ゾーンの DNS クエリを、Azure Firewall のプライベート IP アドレスまたは DNS フォワーダー仮想マシンのいずれかに転送するようにオンプレミスの DNS サーバーを構成します。
Azure Firewall に関連付けられているファイアウォール ポリシーで、必要に応じてネットワーク規則を構成します。 IP アドレスベースの規則を使用する場合は、[宛先の種類] に [IP アドレス] を選択し、プライベート エンドポイントの IP アドレスを [宛先] として構成します。 FQDN ベースのネットワーク規則の場合は、[宛先の種類] に [FQDN] を選択し、プライベート リンク リソースのパブリック FQDN を [宛先] として構成します。
セキュリティ保護付き仮想ハブにデプロイされている Azure Firewall に関連付けられているファイアウォール ポリシーに移動します。 [プライベート IP 範囲 (SNAT)] を選択し、[常に SNAT を実行する] オプションを選択します。
アプリケーション規則:
アプリケーション規則の場合は、前のセクションの手順 1. から 3. までが引き続き適用されます。 カスタム DNS サーバー構成では、Azure Firewall を DNS プロキシとして使用するか、DNS フォワーダー仮想マシンを直接指すかを選択できます。
Azure Firewall に関連付けられているファイアウォール ポリシーで、必要に応じてアプリケーション規則を構成します。 [宛先の種類] に [FQDN]、プライベート リンク リソースのパブリック FQDN を [宛先] として選択します。
最後に、Azure Firewall で構成されている規則の種類に関係なく、プライベート エンドポイントがデプロイされているサブネットで (少なくとも UDR サポートのための) ネットワーク ポリシーが有効になっていることを確認します。 これにより、プライベート エンドポイント宛てのトラフィックが Azure Firewall をバイパスしないようにします。
重要
既定では、RFC 1918 プレフィックスは、Azure Firewall の "プライベート トラフィック プレフィックス" に自動的に含まれます。 ほとんどのプライベート エンドポイントでは、オンプレミス クライアントからの、または同じセキュリティ保護付きハブに接続されている異なる仮想ネットワーク内のトラフィックがファイアウォールによって検査されるようにするには、これで十分です。 プライベート エンドポイント宛てのトラフィックがファイアウォールのログに記録されていない場合は、プライベート エンドポイントごとに /32 プレフィックスを "プライベート トラフィック プレフィックス" の一覧に追加してみてください。
必要に応じて、セキュリティ保護付きハブの Azure Firewall で検査する CIDR プレフィックスを次のように編集できます。
セキュリティ保護付き仮想ハブにデプロイされている Azure Firewall に関連付けられているファイアウォール ポリシーの [セキュリティ保護付き仮想ハブ] に移動し、プライベート エンドポイント宛てのトラフィック フィルターを構成する、セキュリティ保護付き仮想ハブを選択します。
[セキュリティ構成] に移動し、 [プライベート トラフィック] の [Azure Firewall 経由で送信] を選択します。
[プライベート トラフィック プレフィックス] を選び、セキュリティ保護付き仮想ハブの Azure Firewall で検査する CIDR プレフィックスを編集し、プライベート エンドポイントごとに 1 つの /32 プレフィックスを追加します。
プライベート エンドポイントと同じ仮想ネットワーク内のクライアントからのトラフィックを検査するために、プライベート エンドポイントからの /32 ルートを明示的にオーバーライドする必要はありません。 プライベート エンドポイント サブネットでネットワーク ポリシーが有効になっている限り、アドレス範囲が広い UDR が優先されます。 たとえば、[次ホップの種類] を [仮想アプライアンス] に設定し、[次ホップ アドレス] を Azure Firewall のプライベート IP に設定し、[アドレス プレフィックス] の宛先を仮想ネットワークにデプロイされているすべてのプライベート エンドポイント専用のサブネットに設定して、この UDR を構成します。 [ゲートウェイのルートを伝達する] を [はい] に設定する必要があります。
次の図は、さまざまなクライアントが Azure Virtual WAN にデプロイされたプライベート エンドポイントに接続するための DNS トラフィック フローとデータ トラフィック フローを示しています。
トラブルシューティング
セキュリティ保護付き仮想ハブ経由でプライベート エンドポイント宛てのトラフィックをフィルター処理しようとすると、主に次の問題が発生する可能性があります。
クライアントがプライベート エンドポイントに接続できない。
Azure Firewall がバイパスされる。 Azure Firewall にネットワーク ルールまたはアプリケーション ルールのログ エントリがないことによって、この現象を検証できます。
ほとんどの場合、次のいずれかのイシューによってこれらの問題が発生します。
不正確な DNS 名前解決
不正確なルーティング構成
不正確な DNS 名前解決
仮想ネットワークの DNS サーバーが [カスタム] に設定されていること、および IP アドレスがセキュリティ保護付き仮想ハブの Azure Firewall のプライベート IP アドレスであることを確認します。
Azure CLI:
az network vnet show --name <VNET Name> --resource-group <Resource Group Name> --query "dhcpOptions.dnsServers"
DNS フォワーダー仮想マシンと同じ仮想ネットワーク内のクライアントが、DNS フォワーダーとして構成されている仮想マシンに直接クエリを実行することで、プライベート エンドポイント パブリック FQDN を対応するプライベート IP アドレスに解決できることを確認します。
Linux:
dig @<DNS forwarder VM IP address> <Private endpoint public FQDN>
AzureFirewallDNSProxy Azure Firewall ログ エントリを検査し、クライアントから DNS クエリを受信して解決できることを確認します。
AzureDiagnostics | where Category contains "DNS" | where msg_s contains "database.windows.net"
DNS プロキシが有効になっていること、および DNS フォワーダーの仮想マシンの IP アドレスを指すカスタム DNS サーバーが、セキュリティ保護付き仮想ハブの Azure Firewall に関連付けられているファイアウォール ポリシーで構成されていることを確認します。
Azure CLI:
az network firewall policy show --name <Firewall Policy> --resource-group <Resource Group Name> --query dnsSettings
不正確なルーティング構成
セキュリティ保護付き仮想ハブにデプロイされている Azure Firewall に関連付けられているファイアウォール ポリシーのセキュリティ構成を確認します。 トラフィックをフィルター処理するすべての仮想ネットワークとブランチ接続について、プライベート トラフィック列に Azure Firewall によってセキュリティ保護と表示されていることを確認します。
セキュリティ保護付き仮想ハブにデプロイされている Azure Firewall に関連付けられているファイアウォール ポリシーのセキュリティ構成を確認します。 プライベート エンドポイント宛てのトラフィックがファイアウォールのログに記録されていない場合は、プライベート エンドポイントごとに /32 プレフィックスをプライベート トラフィック プレフィックスの一覧に追加してみてください。
仮想 WAN の下にあるセキュリティ保護付き仮想ハブで、トラフィックをフィルター処理する仮想ネットワークとブランチ接続に関連付けられているルート テーブルの有効なルートを調べます。 トラフィックを検査するプライベート エンドポイントごとに /32 エントリを追加した場合は、有効なルートにこれらが一覧表示されていることを確認します。
トラフィックをフィルター処理する仮想ネットワークにデプロイされている仮想マシンに接続されている NIC の有効なルートを調べます。 トラフィックをフィルター処理する各プライベート エンドポイント プライベート IP アドレス (追加した場合) に対して /32 エントリがあることを確認します。
Azure CLI:
az network nic show-effective-route-table --name <Network Interface Name> --resource-group <Resource Group Name> -o table
オンプレミスのルーティング デバイスのルーティング テーブルを調べます。 プライベート エンドポイントがデプロイされている仮想ネットワークのアドレス空間を学習していることを確認します。
Azure Virtual WAN では、ファイアウォール ポリシーのセキュリティ構成のプライベート トラフィック プレフィックスで構成されたプレフィックスをオンプレミスに公開しません。 オンプレミスのルーティング デバイスのルーティング テーブルに /32 エントリが表示されないことが想定されています。
AzureFirewallApplicationRule と AzureFirewallNetworkRule の Azure Firewall ログを調べます。 プライベート エンドポイント宛てのトラフィックがログに記録されていることを確認します。
AzureFirewallNetworkRule ログ エントリには、FQDN 情報は含まれません。 ネットワーク ルールを検査するときに、IP アドレスとポートでフィルター処理します。
Azure Files プライベート エンドポイント宛てのトラフィックをフィルター処理する場合、AzureFirewallNetworkRule ログ エントリは、クライアントが最初にファイル共有にマウントまたは接続したときにのみ生成されます。 Azure Firewall は、ファイル共有内のファイルに対する CRUD 操作のログを生成しません。 これは、クライアントが最初にファイル共有に接続またはマウントするときに開いた永続的な TCP チャネルを介して CRUD 操作が実行されるためです。
アプリケーション ルール ログのクエリ例:
AzureDiagnostics | where msg_s contains "database.windows.net" | where Category contains "ApplicationRule"