前回の記事では、App Service から SQL Database へプライベートネットワークで接続する構成において、Private Endpoint を利用して Key Vault からシークレットを参照するように変更しました。
gooner.hateblo.jp
今回は、この構成をさらに拡張し、Application Insights に対してもプライベートネットワーク経由で接続する構成に変更します。
システム構成
App Service から Application Insights へ、プライベートネットワークでテレメトリを送信する構成を例に説明します。

Azure Monitor Private Link Scope を作成する
Azure Monitor Private Link Scope(AMPLS)は、Azure の監視サービスに対してプライベートネットワークで接続するための 「Private Endpoint の適用範囲」 を定義するリソースです。
Azure の監視サービスは、Application Insights、Azure Monitor、Log Analytics など複数のリソースで構成されているため、これらをまとめて Private Endpoint で制御できる仕組みとして、AMPLS が提供されています。
learn.microsoft.com
まずは、AMPLS を作成します。Query access mode と Ingestion access mode をオープンで設定しておきます。

AMPLS の Configure - Azure Monitor Resources から関連付ける Application Insights と Log Analytics を設定します。

Azure Monitor Private Link Scope の Private Endpoint を作成する
次に、AMPLS の Configure - Private Endpoint connections から Private Endpoint を作成します。
Private Endpoint は、仮想ネットワーク内のサブネットにプライベート IP アドレスを持つ Network Interface Card として実体化されます。この NIC が、AMPLS へのプライベートな接続口となります。

リソースの種類は Microsoft.Insights/privateLinkScopes、対象サブリソースは azuremonitor を選択します。

Private Endpoint 用に作成したサブネットを選択し、IP アドレスを動的に割り当てるようにします。

監視リソースの FQDN をプライベート IP アドレスに正しく名前解決させるため、Private DNS Zone を統合します。前述した通り、複数の監視リソースが存在することが AMPLS を作成する理由となります。

監視リソースのアクセスモードを変更する
AMPLS の Private Endpoint を作成したら、Configure – Access modes から監視リソースのアクセスモードを変更します。
Query を Private Only に設定すると Azure Portal からテレメトリを確認できなくなり運用上の手間が増えるため、ここでは Ingestion のみを Private Only に変更します。

監視リソースも同様に、Ingestion だけパブリックな通信を無効にします。
Application Insights

Log Analytics

App Service から Application Insights へプライベートネットワークでテレメトリを送信できるようになりました。

App Service の Kudu から nslookup を実行すると、Application Insights の FQDN からプライベート IP アドレスが返されていることを確認できます。

まとめ
App Service から Application Insights へ、プライベートネットワーク経由でテレメトリを送信する構成に変更しました。
次回は、Azure Front Door を利用して Azure App Service を外部からの攻撃から保護する構成に変更してみたいと思います。
gooner.hateblo.jp