Kusto クエリ言語を使用してデータのクエリを実行する
- 5 分
Microsoft Sentinel で Kusto Query Language (KQL) を使用すると、収集されたデータを検索およびフィルター処理することができます。
Kusto 照会言語
KQL には、収集されたデータに対して対話型の分析を作成、保存、実行する機能があります。 Microsoft Sentinel では、KQL を使用して重要なデータを視覚化および分析できます。 KQL を使用すると、次のような演算子を含む複雑な分析クエリを作成できます。
- 計算列
- 結合関数
- 集計でグループ化
基本的なクエリの記述と実行
クエリは、データを処理し、データやメタデータを変更せずにその処理の結果を返す読み取り専用の要求です。 SQL クエリと同様に、KQL クエリには、データベース、テーブル、列などの階層に編成されたスキーマ エンティティが使用されます。 スキーマは、論理カテゴリでグループ分けされたテーブルのコレクションです。 クエリは、セミコロン (;) で区切られた一連のクエリ ステートメントで構成されます。
クエリを作成するときは、テーブル名または検索コマンドのいずれかから始めます。 たとえば、次のクエリは、Event テーブルからすべてのレコードを取得します。
Event
パイプ (|) 文字を使用すると、コマンド間を区切ることができます。 最初のコマンドの出力は次のコマンドの入力になります。 1 つのクエリに任意の数のコマンドを追加できます。 次のクエリでは、Event テーブルからレコードを取得し、任意のプロパティ内の error という用語について、それらのレコードを検索します。
Event
| search error
表形式およびスカラー演算子を使用してクエリを作成できます。これは KQL によって複数の表形式の式ステートメントに結合され、クエリの結果が生成されます。
source1 | operator1 | operator2
次の例のソースは AzureActivity です。 最初の演算子は where です。論理式に基づいてレコードを除外します。 2 つ目の演算子も where です。
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
既定では、Log Analytics におけるクエリの時間範囲は、過去 24 時間に制限されています。 異なる時間範囲を設定するには、明示的な TimeGenerated フィルターをクエリに追加するか、Time range コントロールを使用します。 たとえば、次のクエリを使用すると、過去 1 時間のデータが返されます。
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)
クエリと、いくつかのよく使用される演算子を組み合わせることができます。
-
count。 テーブルの行数を返します。 -
take。 最大で、指定したデータ行の数までが返されます。 -
project。 列のサブセットを選択します。 -
sort。 入力テーブルの行の順序を 1 つ以上の列で並べ替えます。 -
top。 指定された列で並べ替えられた最初の N 個のレコードを返します。 -
extend。 派生列を計算します。 -
summarize。 行のグループを集計します。 -
render。 結果をグラフィック出力としてレンダリングします。
2 つのソース (テーブル) からのレコードを結合するには、join 演算子を使用します。
union 演算子は、2 つ以上のテーブルを 1 つに結合します。
詳細については、Microsoft の「Log Analytics のチュートリアル」を参照してください。ここでは、クエリ自体を操作するのではなく、Log Analytics の機能を使用してクエリを作成し、実行しています。
KQL については、Azure Data explorer チュートリアルも参照してください。
注
Microsoft Sentinel Log Analytics は、Azure Data Explorer で使用されているすべての KQL 構文をサポートしているわけではありません。
GitHub 上の Microsoft Sentinel リポジトリ
GitHub 上の Microsoft Sentinel リポジトリを使用して、環境の保護と脅威の検出に役立つ特殊なクエリやブックを検索することもできます。 たとえば、Microsoft Sentinel GitHub リポジトリの次のクエリを使用すると、ユーザー アカウントへのアクセス許可の疑わしい委任が表示されます。
let timeframe = 7d;
AzureActivity
| where TimeGenerated >= ago(timeframe)
| where OperationName == "Create role assignment"
| where ActivityStatus == "Succeeded"
| project Caller, CallerIpAddress
| evaluate basket()
| extend AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress
このクエリを使用すると、管理者が他のユーザーに Azure リソースへのアクセスを許可する IP アドレスを分析できます。 有効な IP アドレスからの操作ではない場合、このクエリによって疑わしいアクティビティが通知されるので、それをさらに調査することができます。
いくつかの例を試したい場合は、Azure portal のデモ環境を使用してください。
自分の知識をチェックする
フィードバック
このページはお役に立ちましたか?
いいえ
このトピックについてサポートが必要ですか?
このトピックの意図を把握したり、理解を深めたりするために Ask Learn を使ってみませんか?