S3 객체 CloudTrail 데이터 이벤트 수집 설정 점검

필요한 S3 객체의 읽기·쓰기 작업이 CloudTrail 데이터 이벤트에 포함되는지 확인하세요.

설명

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이므로, 실제 이벤트가 빠지는지는 선택기 범위와 로그 전달 상태를 확인해야 합니다.

참조