S3 공개 버킷 접근 제한 설정 점검

공개 정책이 있는 버킷의 불필요한 외부 접근을 제한하세요.

설명

restrict_public_buckets는 공개 정책이 있는 버킷의 접근을 AWS 서비스 주체와 해당 계정의 권한 있는 사용자로 제한하는 보호 장치입니다. 공개 접근뿐 아니라 그 공개 정책에 포함된 특정 교차 계정 권한도 차단할 수 있습니다.

block_public_policy가 새 공개 정책의 적용을 차단한다면, 이 옵션은 공개 정책이 이미 있는 버킷의 접근 범위를 제한합니다. 실제 접근은 정책과 다른 수준의 차단 설정에도 달려 있으므로 한 옵션만으로 공개 여부를 판단할 수는 없습니다.

잠재적 영향

  • 공개 정책이 의도하지 않은 계정이나 사용자에게 접근을 허용할 수 있습니다.
  • 불필요한 읽기 권한으로 데이터가 공개되거나 허용된 작업에 따라 데이터가 변경될 수 있습니다.

해결 방법

  • 공개 접근이 필요하지 않으면 계정과 버킷에서 restrict_public_buckets = true를 적용하세요.
  • 필요한 교차 계정 접근이 차단되지 않도록 기존 공개 정책을 필요한 주체, 작업과 리소스로 좁히고 실제 요청을 시험하세요.
  • S3의 다른 공개 접근 차단 옵션, ACL과 버킷 정책도 함께 검토하세요.

예시

다음은 계정 수준 설정을 비교하는 발췌 예시입니다. 실제 계정 ID와 같은 계정의 버킷을 사용하세요. 버킷 정책과 다른 수준의 차단 설정은 생략되어 있습니다.

변경 전

hcl
resource "aws_s3_account_public_access_block" "example" {
  account_id = 250924516109
}

resource "aws_s3_bucket_public_access_block" "example" {
  bucket                  = aws_s3_bucket.public_bucket.id
  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

변경 후

hcl
resource "aws_s3_account_public_access_block" "example" {
  account_id               = 250924516109
  restrict_public_buckets  = true
}

resource "aws_s3_bucket_public_access_block" "example" {
  bucket                  = aws_s3_bucket.public_bucket.id
  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

설명:

변경 후에는 계정 수준에서 공개 정책이 있는 버킷의 접근을 제한합니다. 버킷의 restrict_public_buckets = false는 계정 제한을 완화하지 않습니다. 기존 교차 계정 업무와 나머지 접근 제어도 확인하세요.

참조