설명
block_public_policy는 공개 접근을 허용하는 버킷 정책의 적용 요청을 거부하는 보호 장치입니다. 이 보호가 적용되지 않으면 잘못 작성한 정책이 불필요한 외부 접근을 허용할 수 있습니다.
실제 접근은 버킷 정책과 다른 접근 제어에도 달려 있습니다. S3는 계정과 버킷 등의 공개 접근 차단 설정 중 더 엄격한 설정을 적용하므로, 버킷의 한 옵션만으로 공개 상태를 판단할 수는 없습니다.
잠재적 영향
- 버킷 공개 가능: 잘못된 공개 정책이 외부 접근을 허용할 수 있습니다.
- 민감 정보 노출: 읽기 권한이 불필요하게 부여되면 백업, 로그, 내부 문서가 공개될 수 있습니다.
해결 방법
- 공개 정책이 필요하지 않으면 계정과 버킷에서
block_public_policy = true를 적용하세요. - 기존 공개 정책도 점검하고 불필요한 권한을 제거하세요. 이 옵션은 이미 적용된 정책을 삭제하거나 그 효력을 바꾸지는 않습니다.
- 공개가 필요한 예외는 필요한 작업과 리소스로 제한하고, 나머지 공개 접근 차단 옵션과 실제 접근도 확인하세요.
예시
다음은 계정 수준 설정을 비교하는 발췌 예시입니다. 계정 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
block_public_policy = 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
}
설명:
변경 후에는 계정 수준에서 공개 버킷 정책의 적용을 차단합니다. 버킷의 block_public_policy = false가 이 제한을 완화하지는 않습니다. 기존 정책과 나머지 공개 접근 차단 옵션은 별도로 검토하세요.