SIEMに送られるログ量の算出ではまった点

SIEMにログを送る際、機器ごとにどれくらいの量のログを送っているのか気になることがあります。今回は、機器ごとにどれくらいのログ量をSIEMへ送っているのかを調べてみました。

前提条件

ここで紹介する算出方法は、すべての機器や製品にそのまま使えるものではありません。記載している数値もあくまで一例で、環境によって変わります。「このように計算すると目安が出せる」という参考としてご覧ください。

対象のSIEM

SIEMにはさまざまな製品がありますが、今回対象としているのはSaaS型のSIEMです。

計算方法

ログ量は次の式で求めます。

ログ量 = イベント数 × 1イベントあたりのバイト数

まず1イベントあたりのバイト数を求め、それにイベント数を掛けて算出します。

ファイアウォール(UTM)の場合

ファイアウォール(UTM)の通信ログは、一般的に1イベントあたり1KB~1.5KB程度と言われています。実際に確認したところ1.3KB~1.4KB程度だったので、1,500バイトで計算しても大きくは外れなさそうです。(※ただし、後述の「はまった点4」のとおり、SIEM側ではメタ情報が付与されるため、取り込み量ベースではもう少し大きくなります)

計算結果の検証方法

SIEMでは1日あたりの取り込みログ量が確認できます。そこで、該当日の「イベント数 × 1イベントあたりのバイト数」で計算した結果と、SIEM上の取り込みログ量との間に誤差がないかを比較しました。

※どれだけ頑張っても、誤差はゼロにはなりませんでした。

はまった点

はまった点1:messageフィールドだけでサイズを出していた

最初に計算したときは、1イベント全体のサイズではなく、イベント内のmessageフィールドのサイズだけで計算していました。この方法では、実際の取り込み量とかなり乖離がありました。

はまった点2:最小値と最大値の差が大きい

ファイアウォールなどの通信ログは1イベントあたりのサイズがある程度決まっていますが、Windowsのイベントログは最小値と最大値の差が大きく、どの値を採用すればよいのか悩みました。

最終的には、SIEM側でメタ情報が付与された後のイベントサイズの平均値を採用しました(メタ情報については「はまった点4」で説明します)。

はまった点3:イベント数が本当に合っているのか分からない

SIEMには「過去○○時間のイベント数」を表示する機能がありました。しかし、検索でイベント数を出すと短時間でも大量の件数になるため、この表示が本当に正確な値なのか疑問がありました。

検証方法自体は簡単で、たとえば1日分であれば1時間ごとのイベント数を出し、それらを合計して一致するかを確認すればOKです。ただ、24回繰り返すのはなかなか疲れます。

結果として「過去○○時間のイベント数」は正確だったので、この機能を使って問題ないことが分かりました。

はまった点4:SIEM側でメタ情報が追加されていた

これが一番大変で、原因を見つけるまでに苦労しました。どれだけ計算しても合わないと思っていたら、SIEM上のファイアウォールのイベントは、1イベント全体で見ると元のログよりひと回り大きくなっていました。

原因を突き止めたのは、僕ではなくAIです。SIEMからダウンロードしたログファイル(CSV)をAIで解析したところ、元のログにはない、SIEM独自のメタ情報がイベントに追加されていることが分かりました。この分が乖離の原因でした。

※外部のAIサービスにログを渡す場合は、IPアドレスやホスト名、ユーザー名などの情報をマスキングしてから渡しましょう。

1件あたりの差は大きくありませんが、塵も積もれば山となるで、イベント数が膨大になると、かなり大きな差になります。

まとめ

  • ログ量は「イベント数 × 1イベントあたりのバイト数」で見積もれる
  • サイズはmessageフィールドだけでなく、1イベント全体で測る
  • SIEM側で付与されるメタ情報の分も考慮する
  • 1イベントあたりのサイズには、メタ情報を含めた平均値を使う(Windowsイベントログのようにばらつきが大きいログでも有効)
  • 見積もりは誤差ゼロにはならないので、実際の取り込み量と突き合わせて確認する