설명
ignore_public_acls는 공개 ACL이 적용되어 있어도 S3가 그 공개 권한을 접근 제어에 사용하지 않게 하는 보호 장치입니다. block_public_acls가 새 공개 ACL 요청을 차단한다면, 이 옵션은 기존 공개 ACL의 효력도 무시합니다.
실제 권한은 다른 차단 설정과 Object Ownership에도 달려 있습니다. ACL이 비활성화된 버킷에서는 ACL이 권한을 부여하지 않으므로, 이 옵션 하나만으로 공개 상태를 판단할 수는 없습니다.
잠재적 영향
- 기존 공개 ACL이 유효하면 의도하지 않은 사용자의 접근이 계속 허용될 수 있습니다.
- 불필요한 읽기 권한으로 객체 내용이나 버킷 내 객체 목록이 공개될 수 있습니다.
해결 방법
ignore_public_acls = true로 설정해 공개 ACL의 권한이 접근 제어에 반영되지 않게 하세요.block_public_acls도 함께 검토하고 불필요한 공개 ACL을 제거하세요. 공개 ACL을 무시하더라도 저장된 ACL 자체가 삭제되지는 않습니다.- ACL이 필요 없다면 Object Ownership으로 비활성화하세요. 버킷 정책을 포함한 다른 권한도 별도로 확인하세요.
예시
예시는 공개 ACL 무시 옵션을 비교합니다. 새 버킷의 기본 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 = true
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 = true
}
설명:
변경 후에는 공개 ACL의 권한을 무시합니다. 기존 ACL을 삭제하거나 버킷 정책에서 부여한 권한까지 차단하는 설정은 아니므로 실제 접근을 함께 확인하세요.