CloudWatch Logs Transformation을 활용한 CloudTrail 보강
소개
AWS CloudTrail은 AWS API 활동에 대한 포괄적인 감사 범위를 제공하여 조직의 완벽한 보안 및 규정 준수 기반을 구축합니다. 이러한 로그를 Amazon CloudWatch Logs로 전송할 때, CloudWatch Logs Transformation을 사용하면 커스텀 Lambda 함수, 외부 ETL 파이프라인 또는 후처리 스크립트 없이 CloudTrail 데이터를 보강하고 최적화할 수 있습니다.
선언적 JSON 프로세서 구성을 사용하여 CloudTrail 이벤트가 CloudWatch Logs로 유입될 때 중첩된 필드를 파싱하고, 보안 컨텍스트를 추가하고, 리소스를 분류하고, 다운스트림 전달을 위한 데이터를 최적화할 수 있습니다. 이 가이드에서는 AWS 네이티브 로그 관리의 단순성과 안정성을 유지하면서 보안 모니터링, 규정 준수 보고 및 운영 효율성을 위한 실용적인 변환 패턴을 소개합니다.
이것이 중요한 이유
CloudTrail 로그를 CloudWatch Logs로 전송하는 조직은 특정 운영 워크플로우 및 도구 요구사항에 맞게 이 데이터를 향상시켜야 하는 경우가 많습니다:
- 보안 팀은 위협 탐지 워크플로우를 가속화하기 위해 커스텀 위험 지표 및 분류 태그를 추가하고자 합니다
- 규정 준수 팀은 감사 대응을 간소화하기 위해 이벤트를 규정 프레임워크(PCI-DSS, HIPAA, SOC2)별로 사전 분류해야 합니다
- 운영 팀은 멀티 계정 환경을 관리하면서 CloudTrail의 기술적 이벤트 데이터에 환경 레이블, 비용 센터 또는 팀 소유권과 같은 비즈니스 컨텍스트를 추가하고자 합니다
- 모든 팀이 다운스트림 시스템(SIEM, OpenSearch, S3)으로 데이터를 전달할 때 데이터 구조를 최적화하려 합니다—도구 호환성을 위해 중첩 필드를 평탄화하거나 다운스트림 수집 비용을 줄이기 위해 보안 관련 필드에 집중합니다
네이티브 변환 기능 없이는 팀이 커스텀 Lambda 함수를 구축하거나, 외부 ETL 파이프라인을 유지하거나, 후처리를 수행해야 하여 로그 관리 인프라에 복잡성, 지연 시간 및 운영 오버헤드를 추가하게 됩니다.
CloudWatch Logs와 Transformation 작동 방식
CloudWatch Logs
Amazon CloudWatch Logs는 CloudTrail의 감사 로그 대 상으로 사용됩니다. CloudTrail이 CloudWatch Logs로 로그를 전송하면 각 API 이벤트는 로그 그룹 및 스트림 내에 구성된 로그 이벤트가 되어 조직이 다음을 수행할 수 있습니다:
- CloudWatch Logs Insights를 사용한 최근 API 활동 쿼리
- 메트릭 필터 및 알람을 사용한 보안 알림 생성
- 구독 필터를 사용한 다운스트림 시스템으로 로그 전달
CloudWatch Logs Transformation
CloudWatch Logs Transformation은 선언적 프로세서를 사용하여 수집 중에 로그 데이터를 수정할 수 있게 합니다. Transformation은 다음과 같은 작업을 지정하는 JSON 구성으로 정의됩니다:
- parseJSON: JSON 구조 파싱 및 중첩 필드 추출
- copyValue: 보강을 위해 값을 새 필드로 복사
- substituteString: 패턴 기반 문자열 대체 수행
- deleteKeys: 불필요한 필드 제거
로그 그룹에 적용되면 Transformation은 저장 전에 모든 수신 로그 이벤트에 대해 자동으로 실행됩니다. 원본 버전과 변환된 버전 모두 CloudWatch Logs에 보존되며, 구독 필터는 변환된 데이터를 다운스트림 시스템으로 전달하고 CloudWatch Logs Insights 쿼리는 분석을 위해 변환된 버전을 표시합니다. GetLogEvents 및 FilterLogEvents API는 변환된 버전이 아닌 원본 로그 버전을 반환합니다.
솔루션
CloudWatch Logs Transformation은 커스텀 인프라를 제거하면서 즉각적인 운영 가치를 제공하는 네이티브 실시간 보강 기능을 통해 이러한 과제를 해결합니다. 다음 섹션에서는 조직이 네 가지 핵심 영역에서 Transformation을 활용하는 방법에 대한 샘플을 제공합니다:
보안 모니터링
조직은 CloudTrail의 포괄적인 이벤트 데이터에 보강된 필드를 추가하여 위협 탐지를 간소화할 수 있습니다:
- 즉각적인 위협 탐지: 즉시 필터링을 위한
is_root_user플래그 추가 (사용 사례 #4: Root 사용자 활동 탐지 참조) - 리소스 민감도 태깅: 네이밍 패턴을 기반으로 S3 버킷 자동 분류 (사용 사례 #1: S3 데이터 분류 참조)
- 간소화된 알림: 복잡한 JSON 파싱 없이 보강된 필드에 CloudWatch 알람을 메트릭 필터와 함께 생성
- SIEM 준비 데이터: 보안 도구와의 원활한 통합을 위해 중첩 필드 평탄화 (사용 사례 #2: 중첩 필드 평탄화 참조)
최적화된 데이터 전달
CloudTrail Data Events는 포괄적인 감사 범위를 제공하며 매일 수백만 건의 로그를 생성합니다. 조직은 특정 다운스트림 시스템을 위해 이 데이터를 최적화할 수 있습니다:
- 간소화된 다운스트림 전달: 구독 필터를 통해 S3, OpenSearch 또는 타사 SIEM으로 전송하기 전에 불필요한 필드 제거 (사용 사례 #3: 최적화된 다운스트림 전달 참조)
- 선택적 필드 보존: 운영 노이즈를 제거하면서 보안에 중요한 데이터만 유지
- 향상된 쿼리 성능: 더 작고 평탄화된 로그 구조로 CloudWatch Logs Insights 쿼리 속도 향상
- 다운스트림 비용 절감: 외부 시스템에 관련 데이터만 전송하여 수집 및 저장 비용 절감
참고: 원본 로그와 변환된 로그 모두 CloudWatch Logs에 저장됩니다. 주요 이점은 구독 필터를 통해 다운스트림 시스템으로 전송되는 데이터를 최적화하는 것이며, CloudWatch Logs 저장 비용을 줄이는 것이 아닙니다.
운영 효율성
수십 또는 수백 개의 AWS 계정을 보유한 조직은 환경 전반에서 CloudTrail 이벤트의 상관관계를 간소화할 수 있습니다:
- 환경 태깅: 계정 ID를 기반으로 이벤트를
production,staging또는development로 자동 레이블링 (사용 사례 #5: 멀티 계정 환경 태깅 참조) - 표준화된 필드 이름: 모든 계정에서 일관된 쿼리를 위해
userIdentity.type및sourceIPAddress와 같은 중첩 필드 평탄화 (사용 사례 #2: 중첩 필드 평탄화 참조) - 비즈니스 컨텍스트: 수집 시점에 규정 준수 프레임워크 태그 추가 (사용 사례 #6: 규정 준수 프레임워크 태깅 참조)
- 간소화된 교차 계정 분석: CloudWatch Logs Insights에서 일관된 필드 이름을 사용하여 모든 계정 쿼리