はじめに
皆様こんにちは。
ネットワールドSEの加藤と申します。
皆さん、Azure Monitor使ってますか?
Azure Monitor利用の際に以下のようなお悩みをお持ちの方も
いらっしゃるのではないかと考えています。
「不要なログが多すぎて必要なログにすぐに辿り着けない…」
「ログの取り込み・保管にかかるコストを削減したい…」
そんなお悩みを解消すべく、今回はAzure MonitorにおいてXPathを用い
取得するログの限定を試してみます。
※本ブログに掲載されている内容は、執筆時点の情報および筆者の知見に基づいています。
内容の正確性や最新性については可能な限り配慮しておりますが、
その完全性や有用性を保証するものではありません。
XPathとは
XML(Windowsイベントログはこの形式) やHTMLドキュメントから特定の要素や属性を抽出するためのパス式言語となります。
以下、Microsoft公式ページの記載となります。
また、Windowsイベントに対して使用するXPathについては以下サイトにて制限事項が公開されています。
併せてご確認ください。
Azure Monitorのどこで設定できる?
Azure Monitorにおいてログ監視を実施する際、以下のリソースを作成する形になります。
・Log Analytics Workspace:データの格納先
・データ収集ルール:収集するデータの種類/格納先を定義
XPathの設定は「データ収集ルール」→「データソース」→「Windowsイベントログ」で設定できます。

検証内容
さっそくやっていきましょう。
今回は取得したい内容を「ユーザーのサインイン成功」「ユーザーのサインイン失敗」に絞ります。
それぞれ以下のWindows イベントIDが割り当てられています。
ユーザーのサインイン成功:4624
ユーザーのサインイン失敗:4625
こちらを取得するためのXPathは以下のようになります。
ユーザーのサインインログはセキュリティログに含まれるため
セキュリティログから抽出する形をとっています。
Security!*[System[(EventID=4624 or EventID=4625)]]

検証結果
比較のため、仮想マシンを2台展開しそれぞれセキュリティログ全体・ユーザーのサインインログのみを取得する設定を行い1時間で取得したログ数を確認してみます。
セキュリティログ全体:7965

内訳

ユーザーのサインインログのみ:3732

内訳

取得したいログの限定を実施することでログ件数を大幅に削減できています。
その結果、
・必要なデータに対する可視性/分析効率の向上
・データのインジェスト/保管にかかるコストを削減できる
という効果を実現できます。
まとめ
このようにXPathを用いることでログ監査にかかる負荷・コストを大幅に下げることが可能になります。
皆さんも是非XPathを利用したログの限定を検討してみてはいかがでしょうか?