Log Analytics を使用して Application Gateway Web アプリケーション ファイアウォール (WAF) のログを調べる

Application Gateway の WAF が動作するようになったら、ログを有効にして、各要求で起きていることを調べることができます。 ファイアウォールのログでは、WAF で評価、照合、ブロックされていることについての分析情報が提供されます。 Azure Monitor Log Analytics では、ファイアウォール ログ内のデータを調べて、さらに多くの分析情報を得ることができます。 Log Analytics ワークスペースの作成について詳しくは、「Azure ポータルで Log Analytics ワークスペースを作成する」をご覧ください。 ログ クエリについて詳しくは、「Azure Monitor のログ クエリの概要」をご覧ください。

WAF のログをインポートする

ファイアウォールのログを Log Analytics にインポートするには、Application Gateway のバックエンドの正常性、リソース ログ、およびメトリックに関する記事をご覧ください。 Log Analytics ワークスペース内にファイアウォールのログを取得したら、データの表示、クエリの記述、視覚エフェクトの作成、ポータルのダッシュボードへの追加を行うことができます。

例でデータを調べる

ファイアウォール ログの生のデータを表示するには、次のクエリを実行できます。

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"

次のクエリのような表示になります。

Log Analytics のクエリ

データにドリルダウンして、ここからグラフをプロットしたり、視覚エフェクトを作成したりできます。 出発点として、次のクエリをご覧ください。

IP ごとの一致/ブロック要求数

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by clientIp_s, bin(TimeGenerated, 1m)
| render timechart

URI ごとの一致/ブロック要求数

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by requestUri_s, bin(TimeGenerated, 1m)
| render timechart

上位の一致ルール

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by ruleId_s, bin(TimeGenerated, 1m)
| where count_ > 10
| render timechart

上位 5 つの一致ルール グループ

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize Count=count() by details_file_s, action_s
| top 5 by Count desc
| render piechart

ダッシュボードに追加する

クエリを作成した後は、それをダッシュボードに追加できます。 Log Analytics ワークスペースの右上にある [ダッシュボードにピン留め] を選択します。 前の 4 つのクエリをサンプル ダッシュボードにピン留めすると、データをひとめで確認できるようになります。

Azure ダッシュボードのスクリーンショット。クエリを追加できます。

次のステップ

Application Gateway のバックエンドの正常性、リソース ログ、およびメトリック