PantherFlow 문(statement)

PantherFlow 쿼리 문에는 두 가지 유형이 있습니다

개요

circle-info

PantherFlow는 Panther 버전 1.110부터 오픈 베타 상태이며 모든 고객이 사용할 수 있습니다. 버그 리포트와 기능 요청은 Panther 지원팀에 공유해 주세요.

PantherFlow 쿼리는 하나 이상의 문(statement)으로 구성됩니다. 문에는 두 가지 유형이 있습니다: 테이블 식(tabular expression) 문let 문들.

같은 쿼리 내의 여러 문은 세미콜론(으로 구분되어야 합니다;). 마지막 문에는 세미콜론이 필요하지 않습니다.

테이블 식 문

테이블 식 문은 일반적으로 '파이프 쿼리(piped query)'를 들었을 때 떠오르는 것으로, 데이터 소스와 일반적으로 하나 이상의 연산자가 파이프 문자(로 구분되어 구성됩니다|). 각 연산자는 데이터를 입력으로 받아 연산을 수행한 후 변환된 데이터를 다음 연산자에게 전달합니다.

circle-info

안에 로그 소스가 구성된 후에는 수집된 데이터를 사용하여 검색할 수 있습니다, 쿼리를 데이터베이스 및 테이블 이름으로 시작할 수 있습니다(아래 예시와 같이) 또는 union 연산자를 사용할 수 있습니다. 이 둘이 제공되지 않으면 Search는 데이터베이스 및 테이블 드롭다운 필드.

panther_logs.public.aws_cloudtrail
| where accountId != '1234567'
| summarize Count=agg.count() by eventName
| extend tooHigh = Count > 100
| where tooHigh
| sort Count
| limit 10

데이터 소스

각 PantherFlow 쿼리는 데이터 소스를 지정해야 합니다. 다음 중 어느 것이든 데이터 소스로 사용할 수 있습니다:

let 문들

A let 문은 이후의 문에서 사용할 수 있는 변수에 값을 할당합니다. let 문은 두 가지 유형의 변수를 정의할 수 있습니다:

  • 테이블 변수: 테이블 식을 나타내며 나중에 테이블처럼 사용할 수 있습니다

  • 스칼라 변수: 스칼라 값 또는 스칼라 값으로 평가되는 식을 나타냅니다

변수는 참조되기 전에 let 문에서 정의되어야 합니다. 모든 let 문은 다음에 다른 문이 올 경우 세미콜론(으로 끝나야 합니다;).

테이블 변수

테이블 변수는 let를 사용하여 테이블 식 문을 변수에 할당할 때 생성됩니다. 그런 다음 테이블 식 문을 참조하듯이 사용할 수 있습니다(즉, 가능한 데이터 소스 중 하나입니다).

테이블 변수에 할당된 테이블 식 문은 그 변수가 이후 문에서 참조되거나 '호출'될 때까지 실행되지 않습니다.

쿼리에 테이블 변수를 이름으로 지정하는 것은 다음과 같은 경우 유용할 수 있습니다:

  • 동일한 쿼리를 여러 번 작성하고 싶지 않을 때

  • 다른 사람들이 쿼리가 무엇을 하는지 이해하기 쉽게 만들고 싶을 때

예제

다음 예시는 테이블 변수 elbOK를 선언합니다 elbOK . 아래에서 let 문에 정의된 그대로 정확히 실행됩니다:

여기서는 추가 연산자가 elbOK 내의 테이블 식 문에 적용됩니다:

테이블 변수는 데이터셋을 참조하는 모든 곳에서 사용할 수 있습니다. 예를 들어 union 연산자:

스칼라 변수

스칼라 변수는 비-테이블 식을 변수에 할당할 때 생성됩니다. 스칼라 변수는 이후의 쿼리 전반에서 참조될 수 있습니다.

스칼라 변수를 선언하는 것은 다음과 같은 경우 유용할 수 있습니다:

  • 동일한 값을 여러 번 사용할 때 쿼리를 더 읽기 쉽고 유지보수하기 쉽게 만들기 위해

  • 그렇지 않으면 오해될 수 있는 값에 이름을 부여하기 위해

다음의 스칼라 변수 제한사항을 참고하세요.

예제

다음 예시는 스칼라 변수 threshold를 선언한 후 이를 where 절에서 참조합니다:

스칼라 변수의 값은 function을(를) 사용할 수 있으며, 스칼라 변수는 함수의 매개변수로 사용할 수 있습니다:

스칼라 변수로 산술식도 사용할 수 있습니다:

스칼라 변수와 테이블 변수를 결합하여 강력한 쿼리를 작성할 수 있습니다:

변수 명명 규칙

변수 이름은 다음 규칙을 준수해야 합니다:

  • 첫 번째 문자는 문자, 밑줄(_), 또는 달러 기호($).

  • )여야 합니다.

  • 첫 번째 문자 이후의 문자는 문자, 숫자 또는 밑줄이어야 합니다.

    • 이미 존재하는 테이블 이름은 변수 이름으로 사용할 수 없습니다. 다음 예제에서는 테이블 별칭 매개변수가 있는 매크로를 사용하여 CloudTrail 로그에서 생성 후 1시간 이내에 삭제된 S3 버킷을 식별합니다. 이는 잠재적으로 의심스러운 동작입니다. 이를 위해 동일 테이블에 대해 자기 조인을 수행합니다:예를 들어 이미 다음 예제에서는 테이블 별칭 매개변수가 있는 매크로를 사용하여 CloudTrail 로그에서 생성 후 1시간 이내에 삭제된 S3 버킷을 식별합니다. 이는 잠재적으로 의심스러운 동작입니다. 이를 위해 동일 테이블에 대해 자기 조인을 수행합니다: 라는 테이블이 존재하는 경우,

  • 을(를) 변수 이름으로 사용할 수 없습니다.

예제

변수 이름은 한 번 사용되면 동일한 PantherFlow 검색 내에서 다시 사용할 수 없습니다. 즉, 변수는 재정의될 수 없습니다.
유효한 변수 이름

유효하지 않은 변수 이름

myVar123 123myVar

(숫자로 시작)

my_var my-var

(유효하지 않은 문자)

_my_var my-var

my.var

$my_var ($ my_var$

마지막 업데이트

도움이 되었나요?