はじめに
本記事はAzureのNetwork Watcherで取得したNSGフローログをLog Analyticsに送り、ログの管理を容易にする方法になります。
Netowrok Watcher及びNSGフローログに関しては以下の記事をご覧ください。
Azure Network Watcherの超概要
この記事を書くに至った経緯は
NSGのDenyログやNSGの評価した通信のソースIPなどがNetwork WatcherのNSGフローログ機能で見れるように!!
↓
JSON形式でBLOBに出力されたり、データが1時間ごとに区切られていて何とも見づらい。。。
↓
Log Analyticsに取得したログを送れば統合管理もできて見やすいんじゃね!
という感じになります。
ざっくりとした方法
既に同様なことを試した方が、世界にはいらっしゃり、Microsoftも取り上げていた模様です。
https://blogs.msdn.microsoft.com/cloud_solution_architect/2017/04/03/uploading-azure-nsg-flow-logs-to-oms/
上記の記事を読むと
①BLOBからログを取り出す
②Log Analyticsに保存できるようにJsonを整形する
③データコレクターAPIを用いてLog Analyticsに送信する
④一度送ったログのメタデータ・エントリを追加する
といった手順になります。
データコレクターAPIはREST APIクライアントからLog Analyticsにデータを送信するためのものになります。
詳細は以下の記事を参照。
HTTP データ コレクター API を使用した Log Analytics へのデータの送信
そしてすでに上記の手順をスクリプトにしてを公開している天才がいましたので、今回は引用したいと思います。
以下がそのスクリプトになります。
https://github.com/jboeshart/azure-nsg-flow-oms-upload/blob/master/azure-nsg-flow-oms-upload.ps1
実行する
先ほどのスクリプトの引数にOMSワークスペースID、OMSキー、OMSログタイプ、ログの保存されているストレージアカウントキー、ストレージアカウントキー、コンテナ名を付けて実行します。
ただ、今回はAzure Automationで1時間に1回定期的に実行させたかったので、上記の内容はスクリプト内に書き込んでおります。
Azure AutomationでPowerShell Runbookを作成し、【編集】からスクリプトを張り付けてテスト実行!
実行すると以下の図のように送信した内容が列記されていきます。あまりにもログの量が多すぎるとAzure AutomationはCPUがかなり小さいので、ローカルで実行するよりも一つの処理に時間がかかることもあり、1ジョブ3時間という制限に引っかかりすべてを送信することが出来ませんのでご注意ください。
で、実際に送られたログをLog Analyticsで確認すると以下の様になってます。
おお!JSONファイルに比べて遥かに見やすい!
ログはNsgFlowLogs_CLというタイプで格納されるので、それを検索すれば一覧で見れます。
さらにパイプでつないで条件づければ拒否したログだけを簡単に表示できそうですね。
実際どのIPからの通信が拒否されたかを見たいのであればリストではなくテーブルの方が見やすそうなので、
テーブル形式でDenyログを表示してみました。
うん。これは捗りそうです。これからのAzureでのネットワークセキュリティを高めていくのには必須になりそうな気もします。
終わりに
調べながらLog AnalyticsのデータコレクターAPI使えば、割とどんなログでも集約できそうだなと感じております。
やはり今後はLog AnalyticsにAzureのログを集約し、MonitorやSecurity Centerなどでさらに周りを固めていくといった形が汎用的になっていきそうですね!
あと、前々から書き溜めていたこの記事はNetwork WatcherがGAしたタイミングで出そうと思っていたのに、記憶から飛んでいて少し遅いタイミングでの更新になってしまいました。
ただまだまだ現役の情報だと思いますので皆さんもぜひ使ってみてはいかがでしょうか。
ではでは!
参考ページ
https://blogs.msdn.microsoft.com/cloud_solution_architect/2017/04/03/uploading-azure-nsg-flow-logs-to-oms/
https://docs.microsoft.com/ja-jp/azure/log-analytics/log-analytics-data-collector-api
https://github.com/jboeshart/azure-nsg-flow-oms-upload/blob/master/azure-nsg-flow-oms-upload.ps1