[AWS] CloudTrail : AWS 리소스 활동 기록 및 감사 로그 추적
이번 포스팅에서는 AWS의 활동 보안 및 감사를 위한 서비스인 CloudTrail에 대해서 살펴볼 예정이다.
AWS CloudTrail
- AWS 리소스에 대한 사용 활동을 기록하고 감사할 수 있게 해주는 보안 및 컴플라이언스 서비스
- 서비스 사용(EC2 종료, S3 버킷 생성 등), 콘솔, CLI, API 등을 통해 발생한 이벤트를 시간, 결과, 오류, 인증 정보와 함께 로그로 저장
- 기본적으로 최근 90일간의 이벤트 로그는 무료로 제공되며 장기 보관을 원할 경우 Trail을 생성해 S3에 저장해야 한다.
- CloudTrail의 주요 구성 요소는 Event, Trail이 있다.
CloudTrail vs CloudWatch
- CloudTrail : AWS의 모든 서비스에 대한 사용 로그, AWS 서비스가 언제, 어디서, 누구에 의해 사용되었는가?
- CloudWatch : AWS의 서비스 내부를 모니터링하기 위한 서비스 : 퍼포먼스 체크 중심
이벤트(Event)
AWS 계정에서 발생한 활동을 기록한 것으로 JSON 형식으로 저장되어 Athena 등으로 분석할 수 있다. 이벤트의 종류는 크게 세 가지로 나뉜다.
- Management Event: 로그인, IAM 역할 부여, VPC 생성 등 계정 관리와 관련된 활동을 기록
- Data Event: S3 객체 접근(ex : GetObject, PutObject), Lambda 함수 호출 등 리소스 수준의 동작을 기록하며 별도 활성화와 추가 비용 발생
- Insight Event: 반복적 실패나 비정상적인 활동(ex : S3 대량 삭제, Deny된 요청 대량 발생)을 감지하는 이벤트
일부 리소스(S3, Lambda 등)의 데이터 이벤트는 기본적으로 비활성화되어 있어 필요한 경우 수동으로 활성화해야 한다.
이벤트의 세부 정보에는, 이벤트의 이름, 소스, 사용 시간 등 기본적인 정보와, 참조 리소스(어떤 AWS 리소스가 영향을 받았는지), 이벤트의 원시 로그 데이터인 JSON을 확인할 수 있다.
Trail
AWS 계정에서는 Trail을 따로 생성하지 않아도 일부 이벤트가 자동으로 기록된다. 기본 기록 사항은 최근 90일간의 자원 생성, 수정, 삭제, 인증 관련 작업 등의 Management Event에 한정된다. 저장 위치는 CloudTrail 콘솔이다.
그렇지만 더 많은 이벤트 유형을 기록하거나 추가 기능을 원할 경우 Trail을 직접 생성해야 한다. 예를 들어 Data Event 기록, 다중 리전 기록, S3 저장, CloudWatch 연동 등을 수행할 경우 Trail을 생성하여 이벤트를 기록하도록 설정할 수 있다.
- 이벤트 로그 수집 단위 : 어디에, 어떤 방식으로 로그를 남길지 결정하는 설정 단위
- S3 버킷 생성 및 지정 필요 : 사용자의 AWS 활동을 기록하여 지정한 S3 버킷에 저장
- 리전 단위 설정 : 단일 리전 또는 모든 리전을 대상으로 설정 가능,
- 글로벌 서비스(IAM 등)의 로그는 us-east-1 리전에서만 생성되므로 해당 리전에 Trail 생성 또는 다중 리전 설정이 필요
- 이벤트 트리거 : Trail을 통해 수집된 이벤트는 EventBridge, CloudWatch 등과 연동하여 경고, 자동 처리 등 다양한 작업을 수행할 수 있다.
Trail 생성을 통한 S3 버킷 이벤트 추적
앞에서 언급했듯 S3의 GetObject, PutObject 같은 객체 수준의 API 호출을 추적하려면 Trail을 생성하고 Data Event 로깅을 활성화해야 한다. 따라서 트레일을 생성하고 S3의 이벤트를 추적하도록 설정해보자.
1. Trail 생성
- Trail은 S3 기반으로 동작한다고 했다. 따라서 Trail 생성 시 S3를 신규 생성, 혹은 지정하는 옵션을 설정한다.
- CloudTrail의 로그를 암호화하기 위해서 KMS를 지정할 수 있다.
- CloudTrail의 이벤트 로그를 CloudWatch으로 전송하도록 설정할 수 있다.
- 이 때 CloudTrail 로그가 저장될 CloudWatch 로그 그룹을 지정하고, 전송하기 위한 권한을 가진 IAM 역할을 지정해야 한다.
2. 로그 이벤트 설정
- Trail에서 어떤 유형의 이벤트를 추적할지를 설정하는 부분이다.
- 이벤트 유형 3가지(관리 이벤트, 데이터 이벤트,인사이트 이벤트)를 조합하여 설정할 수 있다.
- 해당 이벤트 유형에 따른 세부사항을 설정한다.
- 관리 이벤트로서는 API 읽기, 쓰기 관련 호출을 추적하도록 설정했다.
- 데이터 이벤트로서는 S3에서 발생하는 ReadOnly 이벤트들을 로깅하도록 설정했다. 즉 S3 버킷에 대한 GetObject를 추적할 수 있다.
3. 로그 확인
- Trail을 직접 생성하여 추적하는 로그들은 CloudTrail 콘솔에서 확인할 수 없고 S3 버킷에서 확인할 수 있다.
- 로그 확인을 위해서 S3에 저장된 로그 데이터를 직접 다운로드하여 보는 방법도 있지만, S3의 로그 데이터를 쿼리하기 유용한 AWS Athena를 활용하여 로그를 분석할 수 있다.
- 로그 결과에서 GetObject 등 S3 버킷에 대한 객체 수준의 API 호출 로그를 확인할 수 있다.
<함께 보기> Amazone Athena
https://sjh9708.tistory.com/262
[AWS] Amazone Athena & Amazone Glue : 데이터 소스에 대한 스키마 분석 및 쿼리 수행 기초
그리스 신화에 등장하는 아테나는 지혜와 전략, 전쟁, 기술, 예술을 관장하는 신으로 알려져 있으며, 지식과 분석 능력을 상징한다.이름에서 유래되었듯 Amazone Athena는 S3, DynamoDB 등의 데이터
sjh9708.tistory.com
References
https://docs.aws.amazon.com/
docs.aws.amazon.com
쉽게 설명하는 AWS 기초 강의 강의 | AWS 강의실 - 인프런
AWS 강의실 | , 안녕하세요. AWS 강의실입니다.AWS 공식 커뮤니티 빌더이자 2만명의 구독자를 보유한 AWS Only 강의 유튜브의 경험으로 AWS를 쉽게 알려드립니다.이 강의는AWS의 서비스 및 활용 지식을
www.inflearn.com
'Backend > AWS' 카테고리의 다른 글
[AWS + Spring] SQS 활용 : 메시지 큐 기반 비동기 통신 구현 (Standard & FIFO) (1) | 2025.04.30 |
---|---|
[AWS] 메시지 서비스의 이해 : SQS & SNS & Kinesis (1) | 2025.04.28 |
[AWS] CloudWatch : 기타 기능 (Dashboard, Synthetics, Resource Health) (1) | 2025.04.04 |
[AWS] CloudWatch : 주요 개념과 구성요소 (로그, 지표, 경보) (0) | 2025.03.23 |
[AWS + Spring] RDS + Secrets Manager 연동하기 (0) | 2025.03.11 |