설명
CloudTrail 데이터 이벤트는 S3 객체의 읽기·쓰기 작업을 조사하는 데 사용됩니다. 관리 이벤트만 수집하면 객체 작업의 감사 요구를 충족하지 못할 수 있으므로, 대상 버킷과 이벤트 범위를 확인하세요.
event_selector의 read_write_type 기본값은 All입니다. 생략만으로 읽기나 쓰기 이벤트가 제외되는 것은 아니며, 실제 수집 범위는 데이터 리소스와 선택기 설정에도 달려 있습니다.
잠재적 영향
- 접근 추적 부족: 필요한 객체 이벤트가 수집되지 않으면 조회나 변경 이력을 확인하기 어렵습니다.
- 사고 조사 지연: 대량 다운로드, 삭제, 덮어쓰기 같은 활동을 조사할 자료가 부족할 수 있습니다.
해결 방법
- 필요한 S3 객체를 데이터 이벤트 대상으로 지정하고, 읽기와 쓰기가 모두 필요하면
read_write_type = "All"을 명시하세요. - 대상 버킷·접두사와 리전을 검토하고 데이터 이벤트 비용을 고려하세요.
- 실제 이벤트 전달을 확인한 뒤 알림, 로그 접근 권한과 보존 정책을 구성하세요.
예시
아래 예시는 기본값과 명시적 All 설정을 비교하며, 둘 다 읽기·쓰기 이벤트를 선택합니다. arn:aws:s3:::는 넓은 S3 범위이므로 필요한 버킷·접두사로 조정하세요. 로그 저장 버킷과 CloudTrail 전달 정책은 생략되어 있습니다.
변경 전
hcl
resource "aws_cloudtrail" "example" {
name = "tf-trail-foobar"
s3_bucket_name = aws_s3_bucket.foo.id
s3_key_prefix = "prefix"
include_global_service_events = false
event_selector {
include_management_events = true
data_resource {
type = "AWS::S3::Object"
values = ["arn:aws:s3:::"]
}
}
}
변경 후
hcl
resource "aws_cloudtrail" "example" {
name = "tf-trail-foobar"
s3_bucket_name = aws_s3_bucket.foo.id
s3_key_prefix = "prefix"
include_global_service_events = false
event_selector {
read_write_type = "All"
include_management_events = true
data_resource {
type = "AWS::S3::Object"
values = ["arn:aws:s3:::"]
}
}
}
설명:
변경 후에는 read_write_type = "All"을 명시해 의도를 분명히 합니다. 변경 전의 생략된 값도 기본적으로 All이므로, 실제 이벤트가 빠지는지는 선택기 범위와 로그 전달 상태를 확인해야 합니다.