S3 공개 ACL 차단 설정 점검

필요하지 않은 공개 ACL의 적용을 차단하세요.

설명

block_public_acls는 공개 권한을 부여하는 새 ACL 요청을 거부하는 보호 장치입니다. 이 보호가 적용되지 않고 ACL 사용이 허용된 버킷에서는 잘못된 ACL로 접근 범위가 넓어질 수 있습니다.

버킷 설정 하나만으로 실제 공개 상태가 결정되지는 않습니다. 계정 등의 더 엄격한 공개 접근 차단 설정과 Object Ownership의 ACL 비활성화 여부도 확인하세요.

잠재적 영향

  • ACL이 실제로 공개 권한을 부여하면 의도하지 않은 사용자가 버킷이나 객체에 접근할 수 있습니다.
  • 백업, 로그, 문서에 불필요한 읽기 권한이 부여되면 정보가 노출될 수 있습니다.

해결 방법

  • aws_s3_bucket_public_access_block에서 block_public_acls = true를 설정하세요.
  • 기존 공개 ACL의 효력도 막으려면 ignore_public_acls를 함께 검토하세요. 공개 ACL 차단만으로 기존 ACL이 제거되지는 않습니다.
  • ACL이 필요 없다면 Object Ownership으로 비활성화하고, 버킷 정책을 포함한 나머지 접근 권한도 점검하세요.

예시

예시는 버킷 수준의 한 옵션만 비교합니다. 새 버킷의 기본 ACL 비활성화와 다른 수준의 차단 설정도 적용되므로, 변경 전 설정만으로 버킷이 공개되었다고 판단할 수는 없습니다. 버킷 이름은 실제 사용할 이름으로 바꾸세요.

변경 전

hcl
resource "aws_s3_bucket" "example" {
  bucket = "example"
}

resource "aws_s3_bucket_public_access_block" "example" {
  bucket = aws_s3_bucket.example.id

  block_public_acls   = false
  block_public_policy = true
  ignore_public_acls  = false
}

변경 후

hcl
resource "aws_s3_bucket" "example" {
  bucket = "example"
}

resource "aws_s3_bucket_public_access_block" "example" {
  bucket = aws_s3_bucket.example.id

  block_public_acls   = true
  block_public_policy = true
  ignore_public_acls  = false
}

설명:

변경 후에는 새 공개 ACL 요청을 차단합니다. ignore_public_acls = false가 그대로이므로 기존 공개 ACL의 효력과 다른 접근 경로는 별도로 확인해야 합니다.

참조