メインコンテンツまでスキップ
Sumo Logic Japanese

ラボ 14 - subquery を使用した相関

このラボでは、subquery operator 使用して、検索でさまざまなログ Source を関連付ける方法について説明します。
subquery を使用すると、1 つのクエリからの結果を別のクエリに渡して最初のクエリで検索されたメッセージを絞り込むことにより、異なる Sumo クエリ間でイベントを相関させることができます。 

 


たとえば、Snort データから Apache アプリケーションへの Web アプリケーション攻撃のフラグが立っている Web サーバ トラフィックを通過させます。次に、提供された src_ip を、その IP アドレスにリンクされている他の Apache メタデータとマージします。最初の部分は subquery (子クエリ) に含め、親クエリを使用して情報をマージすることができます。

 

1.まず、親クエリを作成します。これはデータの範囲で、[Count (カウント)] を使用してマージし、[Sort (ソート)] でカウントを降順で表示します。その間にある空の行に subquery が挿入されます。子は src_ip を親に渡す必要があります。

_sourceCategory=Labs/Apache/Access

 

| count src_ip, method, status_code, url

| sort _count

2.次に、_sourceCategory=labs/snort から "[Classification: Web Application Attack]"  エラーに関連付けられた IP アドレスを返すクエリを作成します。これは、クエリになります。

_sourceCategory=labs/snort "[Classification: Web Application Attack]"

| parse "{TCP} *:* -> *:*" as src_ip, src_port, dest_ip, dest_port nodrop

3.次に、subquery operator を使用して、子クエリと親クエリを結合します。さらに、この例では、子クエリを使用して親クエリのキーワードを生成します。使用している構文は、次のように簡素化できます。

<Parent Query>
[subquery: <Child Query>
| compose IP keywords
]

4.最後に、子クエリと親クエリを subquery 構文で結合します。

_sourceCategory=Labs/Apache/Access

[subquery:

_sourceCategory=labs/snort "[Classification: Web Application Attack]"

| parse "{TCP} *:* -> *:*" as src_ip, src_port, dest_ip, dest_port nodrop

| compose src_ip

]

| count src_ip, method, status_code, url

| sort _count

subquery の詳細については、ドキュメント ページを参照してください。

ここまで 3 つのラボで、データを相関させる方法をいくつか見てきました。各 operator について下表にまとめます。

Transaction

transaction を使用すると、1 つまたは複数の共通キー (IP アドレス、セッション ID 等) に基づいて (単一または複数の Source からの) メッセージを相関させることができます。transaction は、「外部結合」によって集計結果を生成します。セキュリティにおける transaction の主な用途は、複数のデータ Source での同じ値の有無をチェックすることです。たとえば、同じ IP アドレスに対して複数のセキュリティ ツールがアラートを出していないかを確認できます。

Transactionize

transactionize を使用すると、1 つまたは複数の共通キー (IP アドレス、セッション ID 等) に基づいて (単一または複数の Source からの) メッセージを相関させることができます。  transactionize は、未処理のメッセージに対して「外部結合」を行います。merge と組み合わせて使用することで、未処理のメッセージや異なる parse されたフィールドをメッセージ間でマージして結果セットの 1 つの行に統合することができます。

subquery

subquery を使用すると、1 つのデータセット内で、または複数のデータセットに渡って、1 つの結果セットのデータを別の (1 つまたは複数の) クエリによってフィルタすることができます。subquery は、「内部結合」によって未処理データを返します。主な用途は、データセットにおいて、別のデータセットにも含まれるデータを見つけることです。たとえば、エンドポイント保護システムによってフラグが立てられたホストの Windows イベント ログを検索する場合などです。

 

  • この記事は役に立ちましたか?