설명
GCP Storage Bucket에서 Uniform Bucket-Level Access를 사용하지 않으면 IAM 정책과 버킷·객체 ACL을 함께 관리해야 합니다. ACL 권한을 놓치거나 서로 다르게 구성하면 의도하지 않은 주체가 데이터에 접근할 수 있습니다.
균일한 버킷 수준 액세스는 ACL을 비활성화하고 IAM으로 권한을 관리하게 합니다. 이것만으로 공개 접근이 금지되는 것은 아니므로 IAM의 공개 권한과 Public access prevention도 별도로 확인해야 합니다.
잠재적 영향
- 객체별 ACL에 불필요한 읽기 권한이 남아 데이터가 노출될 수 있습니다.
- 분산된 권한 설정으로 접근 범위를 파악하거나 일관되게 회수하기 어려워질 수 있습니다.
해결 방법
애플리케이션이 사용하는 ACL 권한을 확인하고 필요한 접근을 IAM 정책으로 먼저 옮기세요. 호환성을 시험한 뒤 uniform_bucket_level_access를 true로 설정하고 ACL 의존성을 제거하세요. 공개 접근이 필요하지 않으면 공개 IAM 권한을 제거하고 Public access prevention 적용을 검토하세요. 필요한 접근과 미승인 요청의 거부를 확인하세요.
예시
같은 버킷에서 균일한 버킷 수준 액세스를 활성화하는 예시입니다. 버킷 이름은 사용할 수 있는 고유 이름으로 바꾸세요. 도메인 형식의 이름에는 도메인 소유권 확인이 필요합니다.
변경 전
hcl
resource "google_storage_bucket" "artifact_bucket" {
name = "image-store.com"
location = "EU"
uniform_bucket_level_access = false
}
ACL과 IAM을 함께 사용하는 구성입니다. 이 설정만으로 버킷이 공개되어 있다고 단정할 수는 없습니다.
변경 후
hcl
resource "google_storage_bucket" "artifact_bucket" {
name = "image-store.com"
location = "EU"
uniform_bucket_level_access = true
}
ACL을 비활성화하고 IAM으로 권한을 관리합니다. 기존 ACL에 의존하던 사용자의 필요한 접근을 미리 IAM으로 옮겨야 합니다.