イベント変数で N OF 構文を使用する

以下でサポートされています。

このドキュメントでは、N OF 構文を使用して、クエリの condition セクション内に柔軟な条件ロジックを記述する方法について説明します。

N OF 構文を使用すると、複数の条件を組み合わせて、クエリ構文の全体的な複雑さを軽減できます。

  • 指定されたリストから、最小数のブール式が true と評価されるように指定する方法を提供します。
  • 可能な組み合わせをすべて指定する必要がないため、エラーと労力を削減できます。

N OF 構文

N OF ステートメントの構文は、次のように表されるブール式をカンマで区切ったリストです。

[expr1, expr2, … , exprN] の場合: [expr1, expr2, … , exprN]

以降のセクションでは、N OF 構文のバリエーションをいくつか示します。

ANY OF

次の例では、リスト内の少なくとも 1 つの式が true であるかどうかを確認します。これは、すべての式を or で結合するのと同じです。

condition:
  ANY OF [$e1, #e2 > 5, $outcome1 = "FAILED"]

すべて

次のリストのすべての式が true の場合、この例は true です。これは、すべての式を and で結合するのと同じです。

condition:
  ALL OF [$e1, $e2, $outcome1 = "SUCCESS"]

N of X

リスト内の N 個以上の式が true の場合、true と評価されます。

condition:
  2 of [$e1, $e2 > 0, $e3, arrays.contains($outcome_ips, "1.2.3.4")]

ルールの例: 機密ファイルへのアクセスにフラグを設定する

次のルールでは、ユーザーが正常にログインした場合($e1)にユーザーにフラグを設定します。次に、セッションが次の 2 つの条件のいずれかを満たしているかどうかがチェックされます。機密ファイルにアクセスしている($e2)、またはアクセスした一意の機密ファイルの合計数が 3 を超えている。

rule MultiEventNOf {
  meta:
    author = "google-secops"
    description = "Detects user login followed by sensitive file access or multiple sensitive files."
  events:
    $e1.principal.user.userid = $user
    $e1.metadata.event_type = "USER_LOGIN"

    $e2.principal.user.userid = $user
    $e2.metadata.event_type = "FILE_OPEN"
    re.regex($e2.target.file.full_path, `^/cns/sensitive/`)

  match:
    $user over 1h
  outcome:
    $sensitive_file_count = count_distinct($e2.target.file.full_path)
  condition:
    $e1 and ANY OF [$e2, $sensitive_file_count > 3]
  }

検索例: 機密ファイルへのアクセスにフラグを設定する

次の例は、ルールの例を検索クエリとして再フォーマットする方法を示しています。

$e1.principal.user.userid = $user
$e1.metadata.event_type = "USER_LOGIN"
$e2.principal.user.userid = $user
$e2.metadata.event_type = "FILE_OPEN"
re.regex($e2.target.file.full_path, `^/cns/sensitive/`)

match:
  $user over 1h
outcome:
  $sensitive_file_count = count_distinct($e2.target.file.full_path)
condition:
  $e1 and ANY OF [$e2, $sensitive_file_count > 3]

既知の制限事項

  • 必須のイベントの存在: N OF 構文の式は無制限にできません。イベントの存在は、句が true になるための要件である必要があります($e1#e1 > 0 など)。

  • 変数タイプの混在: 同じ N OF リスト内で、UDM 以外の変数と UDM イベント変数を組み合わせることはできません。

  • ウィンドウの制限: N OF 構文でタンブリング ウィンドウを使用することはできません。

次のステップ

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。