Amazon Athena로 로그 내보내는 방법

Amazon Athena로 로그 내보내는 방법

SOC Prime Team
SOC Prime Team linkedin icon 팔로우

Athena는 로그를 자체적으로 저장하지 않습니다. S3의 로그 파일, 예를 들어 CloudTrail, VPC Flow Logs, 로드 밸런서 및 WAF 로그를 테이블을 정의하여 쿼리합니다. 일반 쿼리 결과는 CSV로 저장되며 결과 버킷에 저장됩니다. JSON 형식으로 받으려면 UNLOAD … WITH (format = ‘JSON’): 구문을 이용하세요. Athena는 뉴라인으로 구분된 JSON을 S3 접두사에 저장하며, 이를 다운로드할 수 있습니다.

많은 AWS 팀들이 수 개월의 로그를 S3에 저장하고 이를 SIEM으로 전송하는 대신 Athena로 쿼리합니다. Prime Core는 676개의 MITRE ATT&CK 기술에 매핑된 24,000개 이상의 고유 탐지 규칙을 보유하고 있습니다. 아래는 LogTotal에서 무료로 추출하여, 정리하고 조사하는 방법입니다.

무료로 시작하기

시작하기 전에

권한. Athena 쿼리 실행 권한(athena:StartQueryExecution 등), Glue의 테이블 정의 읽기, 소스 버킷 읽기, 내보내기 버킷에 쓰기 권한이 필요합니다. 로그가 KMS로 암호화된 경우 kms:Decrypt를 추가하세요.

테이블과 그 파티션을 알아두세요. CloudTrail 테이블은 보통 지역과 날짜별로 파티션이 구분됩니다. 이는 파티션 프로젝션이나 추가된 파티션으로 이루어지며, Athena는 데이터 스캔 양에 따라 과금되므로 매번 파티션을 필터링하세요. 파티션 없이 쿼리할 경우 수년간의 로그가 스캔될 수 있습니다.

작업 그룹. Athena는 결과 위치가 지정된 작업 그룹에서 쿼리를 실행합니다. UNLOAD는 자체 대상을 쓰지만, 작업 그룹이 여전히 설정되어 있어야 합니다.

UNLOAD로 내보내기

UNLOAD (
  SELECT *
  FROM cloudtrail_logs
  WHERE region = 'eu-west-1'
    AND day = '2026/10/19'
    AND useridentity.arn LIKE '%suspicious-user%'
)
TO 's3://my-athena-exports/ct-1019/'
WITH (format = 'JSON', compression = 'NONE')

파티션 열(region, day)을 테이블 정의에 맞게 조정하세요. 대상 접두사는 비어 있어야 합니다.

명령줄에서:

QID=$(aws athena start-query-execution –work-group primary
  –query-string “$(cat unload.sql)”
  –query ‘QueryExecutionId’ –output text)

# 완료될 때까지 대기
until [ “$(aws athena get-query-execution –query-execution-id “$QID”
  –query ‘QueryExecution.Status.State’ –output text)” = “SUCCEEDED” ]; do sleep 5; done

aws s3 cp s3://my-athena-exports/ct-1019/ ./ct-1019/ –recursive
zcat -f ./ct-1019/* > ct_1019.jsonl

zcat -f 명령은 압축된 출력과 압축되지 않은 출력을 모두 처리하며, 만약 기본 압축 설정이 적용된 경우 유용합니다. 쿼리가 실패하면 대기 루프가 끝나지 않습니다. 정기적으로 스크립트를 사용한다면 실패 여부도 확인하세요.

왜 get-query-results? 이 방법도 사용할 수 있지만, 이는 페이지당 1,000개의 문자열 목록으로 행을 반환하여 객체로 다시 결합해야 합니다. UNLOAD는 한 번의 과정으로 깨끗한 JSON을 제공합니다.

LogTotal에서 업로드, 정리 및 검토

  1. 업로드. 열기 logtotal.com 그리고 .jsonl 파일을 드롭하세요.
  2. 정리. 
  3. 검토. 

문제가 발생할 때

증상가능한 원인Fix
쿼리가 테라바이트를 스캔파티션 필터 없음파티션 열에서 필터링
출력 위치 오류대상 접두사가 비어 있지 않음새 접두사 사용
권한 거부S3, Glue 또는 KMS 권한 누락각 항목을 확인하세요; KMS가 일반적인 원인입니다
행이 없음파티션이 로드되지 않음, 또는 잘못된 파티션 형식파티션 프로젝션 확인 또는 MSCK REPAIR TABLE 실행
출력 파일이 텍스트로 열리지 않음GZIP 압축zcat을 사용하거나, 압축 = ‘NONE’으로 설정

FAQ

Amazon Security Lake와 같은 것인가요?

Security Lake는 또한 Athena를 사용하지만, 자체 OCSF 테이블과 Lake Formation 권한을 사용합니다.

원시 CloudTrail 파일을 대신 내보낼 수 있나요?

네. 만약 전체 날짜만 필요하다면, S3에서 파일을 복사하는 것이 더 간단합니다. 필터링이 필요할 때 Athena를 유용하게 사용할 수 있습니다.

SOC Prime의 Detection as Code 플랫폼에 가입하세요 귀사의 비즈니스에 가장 중요한 위협에 대한 가시성을 개선하세요. 시작을 돕고 즉각적인 가치를 제공하기 위해 지금 SOC Prime 전문가와의 회의를 예약하세요.