이벤트 변수와 함께 N OF 구문 사용
이 문서에서는 N OF 구문을 사용하여 쿼리의 condition 섹션 내에서 유연한 조건부 로직을 작성하는 방법을 설명합니다.
N OF 구문을 사용하면 여러 조건을 결합하여 쿼리 구문의 전체 복잡성을 줄일 수 있습니다.
- 지정된 목록에서 최소 개수의 불리언 표현식이 true로 평가되어야 함을 지정하는 방법을 제공합니다.
- 가능한 모든 조합을 지정할 필요가 없어 오류와 노력을 줄일 수 있습니다.
N OF 구문
N OF 문의 문법은 다음과 같이 표현된 불리언 표현식의 쉼표로 구분된 목록입니다.
[expr1, expr2, … , exprN] 조건을 충족하는 [expr1, expr2, … , exprN]
다음 섹션에서는 N OF 구문의 몇 가지 변형을 보여줍니다.
다음 중 하나
다음 예에서는 목록의 표현식 중 하나 이상이 참인지 확인합니다.
이는 모든 표현식을 or로 결합하는 것과 같습니다.
condition:
ANY OF [$e1, #e2 > 5, $outcome1 = "FAILED"]
전체
다음 목록의 모든 표현식이 참이면 예시가 참입니다. 이는 모든 표현식을 and로 결합하는 것과 같습니다.
condition:
ALL OF [$e1, $e2, $outcome1 = "SUCCESS"]
X의 N
목록에서 N개 이상의 표현식이 true이면 true로 평가됩니다.
condition:
2 of [$e1, $e2 > 0, $e3, arrays.contains($outcome_ips, "1.2.3.4")]
규칙 예: 민감한 파일 액세스에 플래그 지정
다음 규칙은 사용자가 로그인에 성공하면 ($e1) 플래그를 지정합니다. 그런 다음 세션이 민감한 파일에 액세스 ($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 구문은 무한대로 지정할 수 없습니다. 절이 참이 되려면 이벤트가 있어야 합니다 (예:
$e1또는#e1 > 0).변수 유형 혼합: 동일한 N OF 목록 내에서 비UDM 변수를 UDM 이벤트 변수와 결합할 수 없습니다.
창 제한: N OF 구문과 함께 텀블링 윈도우를 사용할 수 없습니다.
다음 단계
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.