설명
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의 효력과 다른 접근 경로는 별도로 확인해야 합니다.