Vnet Flow log を使うと仮想ネットワークで発生するネットワークトラフィックをログとして取得することができます
仮想ネットワーク フロー ログ - Azure Network Watcher | Microsoft Learn
Vnet Flow Log は Azure Policy を使って有効化することができます
Azure Policy を使用した仮想ネットワーク フロー ログの監査とデプロイ - Azure Network Watcher | Microsoft Learn
しかし組み込みポリシーのパラメータにストレージアカウントや、Log Analyticsワークスペースを指定する必要があるため、
- 複数の環境で一括で Vnet Flow Log を有効化したい -> ポリシーを使いたい
- サブスクリプションごとに異なるストレージアカウントや Log Analytics ワークスペースを指定したい
というニーズを満たすことができません
言い換えると1つのポリシー割り当てだけでは 下記のように1つの Log Analyticsワークスペースにすべてのネットワーク ログを集約させてしまいます
architecture-beta
group subscription1(azure:subscriptions)[Subscription 1]
service storage(azure:storage-accounts)[Storage Account] in subscription1
service loganalytics(azure:log-analytics-workspaces)[Log Analytics Workspace] in subscription1
group subscription2(azure:subscriptions)[Subscription 2]
service vnet1(azure:virtual-networks)[Vnet 1] in subscription2
group subscription3(azure:subscriptions)[Subscription 3]
service vnet2(azure:virtual-networks)[Vnet 2] in subscription3
vnet1:L --> R:storage
vnet2:T --> B:storage
storage:T --> B:loganalytics
そこでカスタムポリシーを作りました
詳細はこちらで。AzurePolicy/CustomPolicy/vnetFlowLog at main · NakayamaKento/AzurePolicy
利用イメージは下記のようになります
それぞれのサブスクリプションに対して、それぞれのストレージアカウントや Log Analytics ワークスペースを用意し、そこにネットワークログを分散させることができます
architecture-beta
group subscription1(azure:subscriptions)[Subscription 1]
service vnet1(azure:virtual-networks)[Vnet 1] in subscription1
service storage1(azure:storage-accounts)[Storage Account1] in subscription1
service loganalytics1(azure:log-analytics-workspaces)[Log Analytics Workspace1] in subscription1
group subscription2(azure:subscriptions)[Subscription 2]
service vnet2(azure:virtual-networks)[Vnet 2] in subscription2
service storage2(azure:storage-accounts)[Storage Account2] in subscription2
service loganalytics2(azure:log-analytics-workspaces)[Log Analytics Workspace2] in subscription2
group subscription3(azure:subscriptions)[Subscription 3]
service vnet3(azure:virtual-networks)[Vnet 3] in subscription3
service storage3(azure:storage-accounts)[Storage Account3] in subscription3
service loganalytics3(azure:log-analytics-workspaces)[Log Analytics Workspace3] in subscription3
vnet1:L --> R:storage1
storage1:T --> B:loganalytics1
vnet2:L --> R:storage2
storage2:T --> B:loganalytics2
vnet3:L --> R:storage3
storage3:T --> B:loganalytics3