S3 서버 액세스 로깅 설정 점검

S3 버킷의 요청 이력을 조사할 수 있도록 접근 로그를 관리하세요.

설명

서버 액세스 로깅은 S3 버킷과 객체에 대한 요청 정보를 수집해 운영 분석과 보안 조사에 도움을 줍니다. 특히 민감 데이터, 백업, 애플리케이션 자산을 저장하는 버킷은 필요한 접근 기록을 확보해야 합니다.

로그 전달은 최선 노력 방식입니다. 모든 요청의 즉시 기록이나 완전한 감사 이력을 보장하지 않으므로, 필요한 객체 작업에는 CloudTrail 데이터 이벤트도 함께 검토하세요.

잠재적 영향

  • 감사 추적 부족: 필요한 접근 기록이 없으면 버킷 요청 이력을 확인하기 어렵습니다.
  • 사고 조사 지연: 삭제, 다운로드, 비정상 접근의 원인을 파악하는 데 시간이 더 걸릴 수 있습니다.

해결 방법

  • aws_s3_bucket_logging으로 서버 액세스 로깅을 설정하고 실제 전달을 확인하세요.
  • 같은 계정과 리전의 별도 대상 버킷을 사용하고, 로그 전달 권한과 보존 기간을 관리하세요.
  • ACL이 비활성화된 대상에는 버킷 정책으로 전달을 허용하고, 민감 로그의 읽기·삭제 권한을 제한하세요.

예시

아래는 AWS 공급자 3.x의 인라인 logging과 versioning 문법을 사용한 예시입니다. 대상 logs 버킷과 전달 권한은 별도로 준비해야 합니다. mfa_delete = true는 기존 AWS 상태를 반영하는 값이며, 이 코드만으로 MFA Delete를 활성화하지는 않습니다. 현재 구성에서는 별도 로깅 리소스를 사용하세요.

변경 전

hcl
resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }

  versioning {
    mfa_delete = true
  }
}

변경 후

hcl
resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }

  logging {
    target_bucket = "logs"
  }

  versioning {
    mfa_delete = true
  }
}

설명:

변경 후에는 서버 액세스 로그를 대상 버킷으로 보내도록 설정합니다. 설정 후 실제 로그 수신을 확인하고, 필요한 감사 범위를 충족하는지 점검하세요.

참조