Microsoftのデモ環境を使ってKQLに触れてみる

はじめに

セキュリティの世界では、情報が力です。そして、その情報を効率的に掘り下げ、理解する能力が、組織のシステムを安全に保つ鍵となります。今回は、データ探索言語であるKusto Query Language(KQL)に触れてみたいと思います。

KQLは、大量のデータを効率的に分析し、クエリを実行するために設計された強力な言語です。この言語は、特にリアルタイムのデータ分析と探索に優れており、Azureなどの複数のサービスで広く利用されています。

  • Azure Monitor
  • Microsoft Sentinel
  • Azure Resource Graph
  • Microsoft Defender

実際にKQLを学ぼうと思っても環境を構築するのは時間やコストがかかりますが、Microsoftの方でKQLを学ぶための環境を提供しています。積極的に使ってKQLを学んでいきましょう。

学習サイト

学習コンテンツはいくつかありますが、すぐに利用できるものとしては以下のものが挙げられます。

Kusto 照会言語 (KQL) の概要

なにかわからないことがあればまずは公式が出しているドキュメントを参照しましょう。
Kusto 照会言語 (KQL) の概要 – Azure Data Explorer & Real-Time Analytics | Microsoft Learn

Kusto 100+ Knocks

KQLの書き方を身につけるための演習用の問題集です。
KUSTO 100+ knocks (azure.github.io)

Demo環境

https://aka.ms/LADemo
画面の左側にログが格納されているテーブルが用意されています。このテーブルに対して使いたいKQLを使ってログ探索を体験できます。100+Knocksの内容をDemo環境で試してみるのが良いと思います。

KQL関数を使ってみる

let

一時的な変数を定義するために利用されます。この変数はクエリ内で値を保存し、再利用することができます。これにより、クエリの読みやすさが向上し、繰り返し同じ値を複数回書く手間が省けます。
ここではtimeOffsetに1hという値を定義してSecurityEventのテーブルを参照し、TimeGenerated列の値が現在時刻から1日前より新しいレコードをフィルタリングしています。
Kusto 100+ Knocksではもっと細かい変数定義をしているので是非参考にしてみてください。

search

search関数を使って指定した2つのテーブル (SecurityEvent と SecurityAlert) 内で “err” という文字列が含まれるすべてのレコードを検索しています。ただしsearchは全テーブルのスキャンを行うため、大量のデータが存在する場合には、パフォーマンスに影響を与える可能性があります。ここでは2つのテーブル内の過去24時間における”err”が含まれるログ探索のためレコード数は少なくなっています。

where

where関数は大量のデータから特定の条件に合致するデータのみを抽出し、分析や可視化の対象を絞り込むことができます。
ここではSecurityEventのテーブルから過去1時間に生成され、かつイベントIDが4688でないすべてのセキュリティイベントログを抽出しています。

extend

extend関数は既存のレコードに対して新しいカラムを追加することができます。この関数を利用することで計算されたデータや変換された値を含む新しいカラムを動的に追加することができます。
ここではSecurityAlertテーブルに含まれているレコードの”AlertSeverity”カラムの値を”severityorder”カラムを追加して、別の値に置き換えています。
※SecurityAlertテーブルはDemo環境には無かったため、所属元の検証環境でクエリを行いました。

おわりに

今回はKQLを使った簡易的なログ探索を体験しました。実際の運用では複雑なKQLになるかもしれませんがどの関数を使えばよいのかを理解できていれば習得も早くできるかもしれません。

弊社ではMicrosoft 365やAzureの導入支援等の実績が豊富にございます。
お困り事がありましたらお気軽にお問い合わせください。

お問い合わせはこちら

いいね (←参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルプロセス&テクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください