CloudTrail에서 S3 객체 읽기 이벤트가 검색되지 않아도 객체에 접근이 없었다고 결론 내릴 수 없습니다. CloudTrail은 기본적으로 data event를 기록하지 않으므로 trail 선택자, 버킷·prefix, read/write 조건, 리전·기간과 로그 보존 위치를 확인해야 합니다.
management event가 보인다는 사실은 S3 GetObject 같은 data plane activity까지 수집했다는 뜻이 아닙니다. 검색 결과 부재와 실제 접근 부재를 구분해 보고합니다.
관리 작업과 객체 작업은 다른 이벤트 범주입니다
AWS CloudTrail의 EventSelector 문서는 trail에 구체적인 selector를 설정하지 않은 경우 management event를 읽기·쓰기로 기록할 수 있지만 data event는 기본 포함되지 않는다고 설명합니다. S3 객체의 GetObject, PutObject, DeleteObject는 객체 수준 작업 예시인 data event입니다. 따라서 IAM 사용자 생성 기록이나 trail 설정 변경 기록이 검색된다고 해서 객체 자체의 접근 기록도 수집됐다고 볼 수 없습니다.
data event selector를 켰다고 모든 S3 객체가 자동 포함되는 것도 아닙니다. AWS API 문서는 S3 객체 data event가 선택된 resource 범위를 따른다고 설명하고, 읽기 전용·쓰기 전용 범위도 따로 지정할 수 있습니다. AWS 가이드는 trail과 event data store가 기본으로 data event를 기록하지 않고 추가 요금이 적용될 수 있다고 안내하므로, 범위를 넓히기 전 비용·소유자 승인도 고려합니다.
가상 설정 스냅샷에서 누락 원인을 찾습니다
| 가상 기록 | 선택 설정 | 검색 결과 | 해석 |
|---|---|---|---|
| Trail EDU-A | Management events: read/write all; S3 data events 선택 없음 | IAM 변경 1건, GetObject 결과 없음 | 객체 읽기가 없었다는 증거가 아니라 선택자에서 data event를 제외했을 가능성 |
| Trail EDU-B | S3 bucket edu-audit, prefix reports/2026/, read-only | reports/2026/a.txt GetObject 있음 | 해당 리소스·읽기 동작은 선택 범위 안 |
| 검색 대상 | edu-audit/archive/old.zip, GetObject, 같은 날짜 | 결과 없음 | prefix가 선택 범위와 달라 기록되지 않았을 수 있음 |
| 검색 위치 | 다른 account·region 또는 별도 trail 로그 저장소 | Event history에서 결과 없음 | 대상·로그 목적지·보존 기간이 맞는지 재검증 |
이 예시에서 archive/old.zip 접근은 reports/2026/로 제한된 selector 범위 밖입니다. Event history의 조회 결과만 보고 trail이 기록하지 않았다고 단정하지 말고, 해당 조사 시점에 실제로 활성화된 trail과 로그 저장소도 확인해야 합니다. 반대로 selector가 설정돼 있었다는 사실만으로 로그가 보존됐다고 보증할 수도 없습니다. 전달·저장 실패, 리전·계정 차이, 삭제·보존 정책을 추가로 확인합니다.
기록 부재를 보고하기 전 확인할 순서
- 검색 대상의 AWS account, region, bucket 이름, object key, 행위 시간과 시간대를 확인합니다.
- 조사 시점에 해당 trail 또는 CloudTrail Lake event data store가 활성 상태였는지 확인합니다.
- management event와 data event를 분리하고 S3 객체 읽기·쓰기 유형이 포함됐는지 확인합니다.
- resource selector의 bucket·prefix 또는 advanced selector의 filter가 대상 key와 일치하는지 비교합니다.
- 로그 목적지, 전송 상태, 조회 기간, 권한과 보존·삭제 범위를 확인합니다.
- 선택 범위 밖이나 미확인 조건은 ‘수집되지 않았을 수 있음’으로 남기고 접근 부재와 구분합니다.
selector는 사전 수집 설정의 증거입니다
CloudTrail selector는 어떤 이벤트를 기록할지 정하는 설정입니다. 요청 당시의 사용자 의도, 객체에 저장된 내용, 이벤트가 실제로 정상 전달됐는지는 selector만으로 알 수 없습니다. 반대로 data event가 발견되면 그 이벤트가 설명하는 API 작업과 actor, 시각을 원본 로그에서 확인하되, 한 event로 전체 권한 사용 이력을 대신하지 않습니다.
복습: GetObject가 안 보이면 접근이 없었나요?
문제: Trail은 S3 data event를 선택하지 않았고 IAM 변경 management event만 검색됩니다. 조사 대상 객체의 GetObject 결과가 없습니다. 무엇을 결론 내릴 수 있나요?
정답: 해당 검색 자료에서 객체 접근 기록을 확인하지 못했다는 사실만 말할 수 있습니다. selector에서 data event가 제외됐으므로 접근 부재를 입증하지 않습니다.
정답을 가리고 확인해 보세요
이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.
가상 trail은 bucket edu-audit의 reports/2026/ prefix에 read-only S3 data event를 기록합니다. 같은 날짜 archive/x.zip의 GetObject가 검색되지 않을 때 가장 먼저 확인할 설정과 안전한 결론을 쓰세요.
정답과 해설 확인
선택된 bucket/prefix가archive/x.zip을 포함하는지 확인합니다. 검색 결과가 없다는 이유로 객체 접근이 없었다고 결론 내리지 않고, selector 범위 밖이면 수집되지 않았을 수 있다고 기록합니다.CloudTrail data event 기록은 기본 비활성이고 리소스·읽기/쓰기 selector 범위를 따르므로, 검색 결과 해석은 설정된 수집 범위에 한정해야 합니다.