D2-07. Amazon CloudTrail

D2-07. Amazon CloudTrail

in

1. Amazon CloudTrail

Amazon CloudTrail은 AWS 계정의 가버넌스, 규정 준수, 감사를 위한 서비스입니다.

계정 내에서 발생하는 모든 API 호출 및 활동을 로그로 기록합니다.
누가(Who), 무엇을(What), 언제(When) 수행했는지에 대한 기록을 제공합니다.

1-1. 로그 보관 및 분석

CloudTrail은 이벤트가 발생하는 즉시 기록하지만, 이 기록을 보관하고 분석하는 방식은 설정에 따라 다릅니다.

항목 설명
기본 보관 (Default) CloudTrail Console(이벤트 기록)에서 최근 90일간의 활동을 조회할 수 있습니다.
장기 보관 90일 이상 이벤트를 보관하려면 Trail을 생성해야 합니다.Trail은 이벤트를 Amazon S3 버킷으로 영구적으로 전송합니다.
  • Amazon Athena: S3에 저장된 장기 로그를 SQL로 쿼리하고 분석할 때 사용합니다.
  • CloudWatch Logs: 이벤트를 CloudWatch Logs로 전송하여 실시간 모니터링 및 알람을 설정할 수 있습니다.

1-2. 이벤트 유형

유형 설명 예시
Management Events AWS 리소스에 대한 운영(관리) 활동을 기록합니다. 리소스 생성, 수정, 삭제 등 계정 수준의 변경 사항을 추적합니다. 기본적으로 항상 로깅됩니다. RunInstances (EC2 인스턴스 시작)CreateSubnet (서브넷 생성)AttachRolePolicy (IAM 역할에 정책 연결)TerminateInstances (EC2 인스턴스 종료)
Data Events 리소스 자체 또는 리소스 내부의 데이터에 대한 작업을 기록합니다.볼륨이 매우 크므로 기본적으로 로깅되지 않습니다. GetObject (S3 객체 다운로드)PutObject (S3 객체 업로드)DeleteObject (S3 객체 삭제)Invoke (Lambda 함수 실행)
Insights Events 관리 이벤트를 분석하여 AWS 계정의 비정상적인 활동(Anomalies) 을 감지하고 생성하는 이벤트입니다.별도 유료 활성화 필요합니다. 특정 API 호출의 급증,서비스 한도(Limit) 도달,평소와 다른 리소스 프로비저닝 활동

1-3. CloudTrail Insights

CloudTrail Insights는 AWS 계정의 Management Events를 지속적으로 분석하여, 비정상적인 활동(Anomalies) 이나 패턴을 자동으로 감지하는 별도 유료 기능입니다.

이 기능은 계정 활동의 정상 기준(Baseline)을 학습한 뒤, 평소와 다른 API 호출 급증, 서비스 한도 도달 시도, 비정상적인 리소스 프로비저닝과 같은 특이점을 Insights Events로 생성하여 알려줍니다.


2. EventBridge 연동

CloudTrail과 EventBridge의 연동은 AWS 계정 내에서 발생하는 모든 API 호출을 실시간으로 감지하고 이에 대응(알림, 자동화)할 수 있습니다.

2-1. 동작 방식

모든 CloudTrail 로그(API 호출)는 Event로서 EventBridge의 Default Event Bus로도 전송됩니다.

  • Step 1. API 호출 발생
    사용자가 API(ex. DynamoDB의 DeleteTable, EC2의 AuthorizeSecurityGroupIngress 등)를 호출합니다.
  • Step 2. CloudTrail 로깅 및 EventBridge 수신
    해당 API 호출이 CloudTrail에 로그로 기록됩니다.
    이와 동시에 API 호출 이벤트가 EventBridge로 전송됩니다.
  • Step 3. 규칙 일치
    EventBridge는 특정 API 호출(ex. DeleteTable) 패턴과 일치하는 규칙을 설정합니다.
  • Step 4. 대상 트리거
    규칙이 일치하면, 이벤트가 SNS 토픽이나 Lambda 같은 대상으로 전송되어 알림이나 자동화 작업이 실행됩니다.

3. CloudTrail for SysOps

SysOps 관리자 관점에서 알아야 할 CloudTrail의 세 가지 주요 기능을 다룹니다.

3-1. 로그 파일 무결성 검증

CloudTrail이 S3에 저장한 로그 파일이 전송된 이후 수정되거나 삭제되지 않았음을 검증하는 기능입니다.

CloudTrail은 전송한 로그 파일 목록과 각 파일의 Hash(SHA-256) 값이 포함된 Digest File을 생성합니다.
이 Digest File은 로그 파일과 동일한 S3 버킷 내의 다른 폴더에 저장됩니다.

나중에 로그 파일의 실제 Hash 값과 Digest File에 기록된 Hash 값을 비교 시 일치하면 파일의 무결성을 보장한다고 볼 수 있습니다.

주로, 규정 준수 및 감사 요건을 충족하는 데 필수적으로 사용됩니다.

3-2. EventBridge 연동 및 지연 시간

CloudTrail에서 기록되는 거의 모든 API 호출을 Amazon EventBridge의 이벤트 소스로 사용하여 자동화 워크플로우를 트리거하는 기능입니다.

사용 시 주의할 점은 API 호출 발생 후 Event가 EventBridge로 전달되기까지 약 최대 15분의 지연이 발생할 수 있습니다.
또한 S3로 로그 파일이 전송되는 데는 약 5분이 소요될 수 있습니다.

3-3. Organization Trails

AWS Organization 수준에서 Trail을 생성하여, 조직 내 모든 계정의 API 활동을 중앙에서 수집 및 관리하는 기능입니다.

관리 계정에서 설정이 가능하며, 관리 계정을 포함한 모든 맴버 계정의 로그를 단일 중앙 S3 버킷으로 집계합니다.
맴버 계정은 Organization Trails을 수정하거나 삭제할 수 없습니다.

이를 통해 중앙 로깅을 강제화하고 규정 준수를 보장할 수 있습니다.


4. CloudTrail와 CloudWatch Logs Metric Filter

CloudTrail 로그를 CloudWatch Logs로 전송한 뒤, Metric Filter를 적용하여 특정 API 호출의 빈도를 모니터링하고 이에 대한 알림을 생성하는 아키텍처 패턴을 설명합니다.

4-1. 동작 방식

  • Step 1. 로그 전송
    CloudTrail이 모든 API 호출 로그를 CloudWatch Logs의 특정 로그 그룹으로 스트리밍하도록 설정합니다.
  • Step 2. 필터 생성
    CloudWatch Logs에서 Metric Filter를 생성합니다.
    • 필터 패턴: RunIntances 또는 StartInstances API 호출을 감지
    • Metric 생성: 필터 패턴이 감지될 때마다 1씩 증가하는 새로운 Custom Metric를 생성합니다.
  • Step 3. 알람 설정
    CloudWatch Alarms에서 위에서 생성한 RunInstancesCount 지표를 모니터링하는 알람을 생성합니다.
  • Step 4. 조치
    알람이 ALARM 생태가 되면, SNS 토픽이 알림을 전송하여 즉시 경고합니다.

4-2. 장점

CloudTrail만으로는 Event 발생 사실만을 알 수 있지만, 해당 아키텍처를 사용하면 특정 기간 동안 Event가 몇 번 발생했는지를 확인할 수 있습니다.
이를 통해 단순 API 호출 감지를 넘어, API 호출 빈도에 기반한 정교한 임계값 설정 및 자동화된 대응이 가능해집니다.


5. Athena 연동

Athena를 사용하여 S3에 저장된 CloudTrail 로그를 SQL로 직접 쿼리하고 분석하는 통합 기능을 사용할 수 있습니다.

5-1. 동작 방식

  • Step 1. Athena 테이블 생성
    CloudTrail 콘솔의 Event history에서 Athena 테이블 생성 시도
  • Step 2. S3 버킷 위치 지정
    CloudTrail 로그가 저장되어 있는 S3 버킷 위치를 지정합니다.
  • Step 3. 테이블 생성
    Athena가 해당 S3 경로를 기반으로 쿼리할 수 있는 테이블을 자동으로 생성해 줍니다.
  • Step 4. 분석
    테이블이 생성된 후, Athena 쿼리 편집기로 이동하여 S3의 로그 데이터를 대상으로 즉시 SQL 쿼리를 실행할 수 있습니다.