데이터 탐색기
Panther의 데이터 탐색기를 사용하여 정규화된 데이터를 보고 SQL 쿼리를 수행하기
개요
Panther Console의 Data Explorer에서는 정규화된 Panther 데이터를 확인하고 SQL 쿼리(자동 완성 포함)를 실행할 수 있습니다.
Data Explorer에서는 다음을 할 수 있습니다:
수집된 로그 데이터, 룰 일치 항목을 탐색하고 모든 데이터에서 표준 필드를 검색
AI를 사용해 자연어 설명으로부터 SQL 쿼리를 생성
예약 검색 룰 엔진을 통해 실행할 수 있습니다
생성 템플릿 검색 및 매크로
공유 가능한 링크를 통해 팀과 결과를 공유하거나, CSV로 결과를 다운로드
JSON의 전체 행을 선택하여 룰 엔진에서 단위 테스트로 사용
SQL 없이 테이블 데이터를 미리 보고, 결과를 필터링하고, 열을 요약
다음을 통해 Data Explorer에 대한 액세스를 제한 역할 기반 액세스 제어 (RBAC)
다음을 포함하는 Data Explorer 결과 bigint 32비트 정밀도를 초과하는 데이터는 브라우저의 JSON 렌더링 제한으로 인해 반올림되어 표시됩니다. 이러한 값이 정밀도 손실 없이 표시되도록 하려면 SQL 명령에서 문자열로 형변환하세요. 데이터 레이크에 저장된 실제 데이터에는 영향을 주지 않습니다.
Data Explorer의 쿼리 구문
Data Explorer에서 실행되는 쿼리는 Snowflake의 SQL Command Reference 문서에 설명된 Snowflake SQL 구문을 사용해야 합니다.
다음도 배울 수 있습니다:
Data Explorer에서 검색할 때의 모범 사례, Data Explorer에서 효과적으로 검색하기
다음 방법 Data Explorer에서 중첩 필드 참조
사용 방법 Data Explorer 매크로
Data Explorer에서 중첩 필드 참조
JSON 객체를 탐색할 때 키 이름이 다음 규칙을 따르지 않으면 Snowflake SQL 식별자 규칙—예를 들어 점이나 공백이 포함된 경우— 값을 큰따옴표로 감싸세요.
예를 들어, 다음 필드에 접근하는 쿼리를 실행하려면 context.ip_address 에서 IPInfo Privacy Enrichment Provider를 다음과 같이 작성합니다 p_enrichment:ipinfo_privacy:"context.ip_address".
Snowflake의 Querying Semi-structured Data 문서에 설명된 Snowflake SQL 구문을 사용해야 합니다.
Data Explorer에서 효과적으로 검색하기
결과를 가능한 한 빨리 반환하려면 다음 모범 사례를 따르는 것이 좋습니다:
다음을 사용
LIMIT절다음을 사용
LIMIT절을 사용해 쿼리에서 반환할 레코드 수를 지정하세요. 쿼리 결과 수를 제한하면 더 빨리 결과를 반환할 수 있습니다. Panther는 기본적으로 결과 크기를 100MB로 제한합니다.
시간 범위 필터 사용
Snowflake는 S3의 파일을 마이크로파티션. 시간 범위(예:
p_event_time또는p_occurs_since())으로 필터링하면 Snowflake는 특정 파티션만 액세스하면 되므로 결과를 더 빨리 반환합니다.매크로에 대한 자세한 내용은 아래 섹션을 참조하세요: Data Explorer 매크로 사용 방법.
p_any 필드 사용
로그 수집 중 Panther는 일반적인 보안 지표를
p_any필드로 추출합니다. 해당p_any필드는 최적화된 열에 저장됩니다. 이 필드는 모든 데이터 소스에서 속성 이름을 표준화하여 빠른 데이터 상관관계를 가능하게 합니다.자세히 알아보기: 표준 필드.
특정 필드 쿼리
사용
SELECT * FROM ...는 모든 열을 가져오므로 쿼리가 느려질 수 있습니다. 가능하면 조사에 필요한 필드만 쿼리하세요. 예:SELECT user_name, event_name FROM ....
요약
요약은 전체 레코드를 쿼리하는 것보다 더 빠르게 실행됩니다. 이는 특히 긴 기간의 로그를 조사할 때, 또는 조사 중인 기간에 데이터가 얼마나 존재하는지 확실하지 않을 때 유용합니다.
전체 데이터 세트를 쿼리하는 대신 다음을 사용할 수 있습니다
count(*)및group by를 시간 범위에 적용하면 더 빨리 실행되며 이후 쿼리할 더 좁은 기간을 결정하는 데 도움이 됩니다.예를 들어 하루를 되돌아보고
GROUP BY hour를 사용하면 데이터에서 조사해야 할 특정 시간을 파악할 수 있습니다. 그런 다음 해당 시간에 대해 쿼리를 실행하여 결과를 더 좁힐 수 있습니다.
위의 모범 사례를 따랐는데도 쿼리가 여전히 느리게 실행된다면 다음 단계를 권장합니다:
행 수를 계산하여 쿼리 중인 데이터 양을 확인하세요.
이를 통해 데이터 양이 많은지, 그리고 시간이 더 걸리는 것이 예상되는지 판단하는 데 도움이 됩니다.
쿼리하는 시간 범위를 줄이세요.
추가 도움이 필요하면 Panther Support 팀에 문의하세요.
Data Explorer 사용 방법
Data Explorer 액세스
Panther Console의 왼쪽 탐색 바에서 Investigate > Data Explorer.

표 데이터 미리 보기
SQL을 작성하지 않고 예시 테이블 데이터를 미리 볼 수 있습니다. 해당 로그 소스의 샘플 SQL 쿼리를 생성하려면 테이블 유형 옆의 눈 아이콘을 클릭하세요:

Data Explorer 결과 필터링
SQL을 작성하지 않고 Data Explorer의 결과 세트에서 열을 필터링할 수 있습니다.
결과 테이블의 오른쪽 상단에서 Filter Columns 를 클릭하여 결과에 표시할 열을 선택하세요:

참고: 이 메커니즘을 통해 적용된 필터는 쿼리의 SQL select 문에는 적용되지 않습니다.
열 데이터 요약
SQL을 작성하지 않고 Data Explorer의 결과 세트에서 열의 요약(빈도 수)을 생성할 수 있습니다.
요약을 생성할 열에서 아래 화살표를 클릭한 다음 요약 을 클릭하여 별도의 탭에 요약 결과를 표시하세요.

쿼리가 실행된 후에도 첫 번째 요약은 요약 탭으로 전환하고 드롭다운에서 열을 선택하여 생성할 수 있습니다.

선택한 열의 요약 결과는 Summary 탭에 표시되며, 결과를 가장 높은 카운트 또는 가장 낮은 카운트 순으로 정렬할 수 있습니다(기본값은 가장 높은 카운트 순).

다음 외에도 row_count 값, 요약에는 또한 first_seen 및 last_seen 값이 결과 데이터에 다음이 포함된 경우 표시됩니다 p_event_time 표준 필드.
AI 기반 SQL 쿼리 생성
이 기능을 사용하려면 Enable Panther AI 설정을 활성화해야 합니다. 또한 사용자 역할에 다음 권한이 있어야 합니다 Run Panther AI .
Panther AI는 자연어를 사용하여 Data Explorer에서 SQL 쿼리를 생성하는 데 도움을 줄 수 있습니다. Panther AI는 쿼리할 권한이 있는 로그 유형과 데이터에만 접근하며 읽기 전용 도구만 사용합니다. 쿼리를 실행하거나 데이터를 수정할 수 없습니다.
AI 기반 SQL 쿼리 생성을 사용하려면:
Panther Console의 왼쪽 탐색 바에서 Investigate > Data Explorer.
Panther AI 프롬프트에 쿼리하고 싶은 내용을 자연어로 입력하세요. 예:
"지난 24시간 동안 실패한 로그인 시도를 보여줘"
"특정 사용자의 CloudTrail 이벤트를 모두 찾아줘"
"소스 IP 주소별 이벤트 수를 구해줘"
설정 아이콘을 클릭하여 선호하는 추론 수준을 선택하세요:
기본: 빠르고 간결한 응답
표준: 균형 잡힌 분석(권장)
고급: 포괄적인 설명이 포함된 상세 분석
다음 아이콘을 클릭하거나 Generate query 아이콘을 클릭하거나 Enter 키를 눌러 SQL 쿼리를 생성하세요.
AI가 요청에 따라 SQL 쿼리를 생성합니다. 쿼리를 검토한 다음 Run query 를 클릭하여 실행하세요.

효과적인 프롬프트를 위한 팁
시간 범위를 구체적으로 지정하세요: "지난 1시간의 이벤트" 또는 "2024-01-01과 2024-01-02 사이의 데이터"
특정 필드나 열을 언급하세요 "source_ip로 group by" 또는 "event_name에 'login'이 포함된 경우"
테이블을 지정하세요 특정 로그 유형을 쿼리하려는 경우: "CloudTrail 이벤트 중..."
요약 또는 집계를 요청하세요: "사용자별 count", "상위 10개 source IP", "시간별 분해"
Data Explorer 매크로 사용 방법
지원되는 백엔드 데이터베이스의 모든 테이블은 시간 필터를 사용한 쿼리 성능 향상을 위해 이벤트 시간 기준으로 분할되어 있습니다.
효율성과 사용 편의성을 위해 Panther는 데이터베이스로 전송될 때 전체 표현식으로 확장되는 매크로를 제공합니다:
이 매크로는 템플릿 매크로와 다릅니다. 템플릿 매크로에 대해 자세히 알아보려면 다음을 참조하세요 템플릿 검색.
매크로 형식
시간 지속 형식
일부 매크로는 시간 지속을 매개변수로 사용합니다. 이 지속 형식은 양의 정수 뒤에 선택적 접미사가 붙어 시간 단위를 나타냅니다. 접미사가 없으면 숫자는 초로 해석됩니다.
지원되는 접미사는 아래 목록에 있습니다:
s, sec, second, seconds— 매크로가 지정된 초를 더합니다m, min, minute, minutes— 매크로가 지정된 분을 오프셋에 더합니다h, hr, hrs, hour, hours— 매크로가 지정된 시간을 오프셋에 더합니다d, day, days— 매크로가 지정된 일을 오프셋에 더합니다w, wk, week, weeks— 매크로가 지정된 주 수를 오프셋에 더합니다접미사가 감지되지 않으면 기본값은 초입니다
예:
'6 d'- 6일'2 weeks'- 2주900- 900초'96 hrs'- 96시간
타임스탬프 형식
시간 표현식이 팀이 사용하는 데이터베이스 백엔드에서 파싱될 수 있는지 확인하세요. 기본 안전 시간 형식은 아마도 다음과 비슷해야 하며 2021-01-02 15:04:05.000 UTC 시간대로 간주됩니다.
Data Explorer 매크로
현재 시간: p_current_timestamp
p_current_timestampp_current_timestamp()
이 매크로는 다음으로 확장됩니다 current_timestamp Data Explorer에서는 이 값으로 확장되지만, p_occurs_since와 유사하게 예약 쿼리에서 실행될 때는 쿼리의 예약된 시간으로 확장됩니다(실제로 쿼리가 실행되는 시점과 무관).
시간 범위 필터: p_occurs_between
p_occurs_betweenp_occurs_between(startTime, endTime, [, tableAlias [, column]])
startTime- 다음 형식의 시간 타임스탬프 형식, 검색 창의 시작을 나타냄endTime- 다음 형식의 시간 타임스탬프 형식, 검색 창의 끝을 나타냄tableAlias- 제공된 경우 테이블 별칭으로 사용될 선택적 식별자column- 제공된 경우 열로 사용될 선택적 식별자없으면 기본 열은
p_event_time.다른 열을 지정하면(예:
p_parsed_time)column를 사용하면, 다음에 대한 제한이 없을 경우 전체 테이블을 검색하므로 쿼리 시간이 훨씬 길어질 수 있습니다p_event_time.
매크로 p_occurs_between() 는 다음 형식의 시작 시간과 종료 시간을 사용합니다 타임스탬프 형식 그리고 올바른 파티션을 사용하여 시간 범위 내 이벤트만 결과 세트로 필터링합니다(I/O를 최소화하고 쿼리를 빠르게 함).
올바르게 사용하려면 이 매크로는 다음과 같은 필터 안에 있어야 합니다 WHERE 절.
다음 Snowflake 명령에는 매크로가 포함되어 있습니다:
매크로는 쿼리가 데이터베이스로 전송되기 전에 자동으로 확장됩니다. 확장 방식은 데이터베이스마다 다릅니다. Snowflake에서는 이 확장이 매우 간단합니다:
이 매크로는 선택적 테이블 별칭도 사용합니다. 이는 다음과 같은 여러 테이블을 참조할 때 유용할 수 있습니다 JOIN:
현재 시점으로부터의 시간 오프셋: p_occurs_since
p_occurs_sincep_occurs_since(offsetFromPresent [, tableAlias[, column]])
offsetFromPresent- 다음 형식의 표현식 시간 지속 형식, 현재 기준으로 해석되며, 예:'1 hour'tableAlias- 제공된 경우 테이블 별칭으로 사용될 선택적 식별자column- 제공된 경우 열로 사용될 선택적 식별자없으면 기본 열은
p_event_time.다른 열을 지정하면(예:
p_parsed_time)column를 사용하면, 다음에 대한 제한이 없을 경우 전체 테이블을 검색하므로 쿼리 시간이 훨씬 길어질 수 있습니다p_event_time.
매크로 p_occurs_since() 은 다음으로 지정된 오프셋 매개변수를 사용합니다 시간 지속 형식 그리고 올바른 파티션 또는 클러스터 키를 사용하여 현재 시간과 지정된 오프셋 사이의 이벤트만 결과 세트로 필터링합니다(I/O를 최소화하고 쿼리를 빠르게 함).
이 매크로는 여러 테이블을 참조할 때 유용할 수 있는 선택적 테이블 별칭도 사용합니다 JOIN.
올바르게 사용하려면 이 매크로는 다음과 같은 필터 안에 있어야 합니다 WHERE 절.
예:
만약 p_occurs_since 가 다음에서 사용되면 예약 검색, 현재 시간을 기준으로 사용하는 대신 예약 실행 시간이 사용됩니다. 예를 들어 쿼리가 매 시간 시작에 실행되도록 예약된 경우 p_occurs_since('1 hour') 매크로는 각 시간 시작 시점부터 1시간 범위로 확장됩니다(실제로 쿼리가 실행되는 시점과 무관). 자세한 내용은 다음에서 확인하세요 사용 p_occurs_since 룩백 창 정의.
다음은 테이블 별칭 매개변수가 있는 매크로 예시입니다. CloudTrail 로그를 살펴 S3 버킷이 생성된 후 1시간 이내에 삭제되었는지 확인하는데, 이는 잠재적으로 의심스러운 행동입니다. 이 정보를 얻기 위해 aws_cloudtrail 테이블에서 panther_logs를 사용해 self-join을 수행하고, self-join의 두 요소 각각에 대해 지난 24시간으로 검색 범위를 제한하기 위해 매크로 확장을 사용합니다(별칭 ct1 및 ct2 는 아래와 같음):
다음에 대한 두 개의 별도 호출이 있습니다 p_occurs_since 각각 다른 테이블에 적용되며, 두 번째 매개변수로 사용된 테이블 별칭에서 이를 알 수 있습니다. 이는 다음 Snowflake 쿼리로 확장됩니다:
특정 시간 주변 필터: p_occurs_around
p_occurs_aroundp_occurs_around(timestamp, timeOffset [, tableAlias[, column]])
timestamp- 다음 형식의 시간 타임스탬프 형식, 검색할 기준 시간이 되는timeOffset- 다음 형식의 표현식 시간 지속 형식, 기준 시간 주변에서 검색할 시간의 양을 나타냄timestamp, 예:'1 hour'tableAlias- 제공된 경우 열 별칭으로 사용될 선택적 식별자column- 제공된 경우 열로 사용될 선택적 식별자없으면 기본 열은
p_event_time.다른 열을 지정하면(예:
p_parsed_time)column를 사용하면, 다음에 대한 제한이 없을 경우 전체 테이블을 검색하므로 쿼리 시간이 훨씬 길어질 수 있습니다p_event_time.
참고: 사용 중인 인스턴스의 데이터베이스 백엔드에서 시간 표현식을 파싱할 수 있는지 확인하세요. 자세한 내용은 다음을 참조하세요 타임스탬프 형식.
해당 p_occurs_around() 매크로를 사용하면 주어진 시간 주변에 발생한 이벤트를 필터링할 수 있습니다. 이 매크로는 다음 형식의 타임스탬프를 사용합니다 타임스탬프 형식 검색할 기준 시간을 나타내며, 다음 형식의 오프셋을 사용합니다 시간 지속 형식 검색할 간격을 지정합니다. 검색 범위는 다음과 같습니다 timestamp - timeOffset 부터 timestamp + timeOffset.
예를 들어, 매크로 p_occurs_around('2022-01-01 10:00:00.000', '10 m') 는 2022년 1월 1일 UTC 오전 9:50부터 오전 10:10 사이에 발생한 이벤트를 필터링합니다.
이 매크로는 여러 테이블을 참조할 때 유용할 수 있는 선택적 테이블 별칭도 사용합니다 JOIN.
올바르게 사용하려면 이 매크로는 다음과 같은 필터 안에 있어야 합니다 WHERE SQL 문장의 절.
예:
Data Explorer에서 저장된 검색을 관리하는 방법
Data Explorer에서 자주 실행하는 검색을 저장해 두면 같은 내용을 계속 다시 작성할 필요가 없습니다.
Saved Search를 삭제하는 방법은 다음에 설명되어 있습니다 저장 및 예약 쿼리.
Data Explorer에서 저장 또는 예약 검색 만들기
아래는 Data Explorer에서 작성한 검색을 저장하는 방법에 대한 지침입니다. 또한 다음도 할 수 있습니다 Search에서 저장된 검색 만들기.
Panther Console의 왼쪽 탐색 바에서 Investigate > Data Explorer.
SQL 편집기에서 SQL을 사용해 검색을 작성하세요.
다음에 대한 시스템 전체 설정을 활성화한 경우 LIMIT 절 필요를 확인하고 쿼리에 LIMIT가 포함되어 있는지 확인하세요.

SQL 표현식에 변수를 포함하여 템플릿 검색을 만들 수 있습니다. 자세한 내용은 다음에서 확인하세요 템플릿 검색.
SQL 편집기 아래에서 다음을 클릭하세요 Save as.
다음에서 Save Search 모달이 나타나면 양식을 채우세요:
Search Name: 설명적인 이름을 추가하세요.
Tags: 유사한 검색을 함께 그룹화하는 데 도움이 되도록 태그를 추가하세요.
Description: 검색 목적을 설명하세요.
Default Database: 쿼리를 실행할 데이터베이스를 선택하세요.
예약 검색 만들기: 이 저장된 검색을 예약된 일정으로 실행하려면(예약 검색이 되도록) 토글을 ON으로 전환하세요. 이 토글을 ON으로 전환하면 아래 옵션이 표시됩니다:
활성 실행 중인가요?: 이 예약 검색을 선택한 일정에 따라 실행하도록 하려면 토글을 ON.
다음 중 하나를 클릭하여 일정을 구성하세요:
Period (쿼리를 고정된 시간 간격으로 실행하려면 선택):
Period(days) 및 Period(min): SQL 쿼리를 다시 실행해야 하는 일수 및/또는 분 수를 입력하세요. 예: 0일 30분으로 설정하면 쿼리가 매일 30분마다 실행됩니다.
Timeout(min): 허용 가능한 최대값 10분으로 제한된 시간 초과 기간을 분 단위로 입력하세요. 쿼리가 허용 시간 내에 완료되지 않으면 Panther는 자동 취소하기 전에 3번 재시도합니다.
Cron Expression (쿼리를 특정 날짜에 반복 실행하려면 선택하고, cron 표현식을 만드는 방법에 대해 자세히 알아보려면 다음을 참조하세요 예약 검색 crontab 사용 방법):
Minutes 및 Hours: 쿼리가 실행될 시간을 입력하세요.
Day 및 Month (month의 day): 이 쿼리를 특정 일자와 월에 실행하려면 해당 일자와 월을 입력하세요.
Day (day of week): 이 쿼리를 특정 요일에 실행하려면 해당 요일을 입력하세요.
Timeout: 허용 가능한 최대값 10분으로 제한된 시간 초과 기간을 분 단위로 입력하세요. 쿼리가 허용 시간 내에 완료되지 않으면 Panther는 자동 취소하기 전에 3번 재시도합니다.
예약 검색 결과 이메일 발송: 검색 결과를 이메일로 보내고 싶다면 이 토글을 ON로 전환하세요. 자세한 내용은 다음에서 확인하세요 예약 검색을 이메일 보고서로 생성하도록 구성하는 방법.

다음을 클릭하세요 Save Search.
예약 검색을 만들었다면(토글하여 예약 검색 만들기 부터 ON)이제 다음을 할 수 있습니다 예약 룰을 만드는 지침을 따르세요 검색 결과로 반환된 데이터를 디택션을 통해 전달하고 싶다면.
Data Explorer에서 저장 또는 예약 검색 업데이트
Panther Console의 왼쪽 탐색 바에서 Investigate > Data Explorer.
오른쪽 상단에서 다음을 클릭하세요 Open Saved Search.
다음의 Open a Search 모달이 나타납니다.
모달에서 업데이트할 Saved Search를 선택한 다음 Open Search.
을 클릭하세요.
Saved Search가 Data Explorer SQL 편집기에 표시됩니다.
편집기 아래에서 다음을 클릭하세요 Update.

다음의 Update Search 모달이 나타납니다.
다음을 포함하여 Saved Search의 메타데이터를 원하는 대로 변경하세요. Search Name, Tags, Description, Default Database와 Create a scheduled search (및 관련 필드).
다음을 클릭하세요 Update Search 를 눌러 변경 사항을 저장하세요.
마지막 업데이트
도움이 되었나요?

