説明
GCP Storage Bucket で Uniform Bucket-Level Access を使用しない場合、IAM ポリシーとバケットやオブジェクトの ACL の両方を管理する必要があります。ACL 権限の見落としや設定の不一致によって、意図しないプリンシパルがデータにアクセスするおそれがあります。
均一なバケットレベルのアクセスは ACL を無効にし、IAM で権限を管理します。これだけで公開アクセスが禁止されるわけではないため、IAM の公開権限と公開アクセス防止も別途確認が必要です。
想定される影響
- オブジェクト ACL に不要な読み取り権限が残ると、データが公開されるおそれがあります。
- 権限設定が分散し、アクセス範囲の把握や一貫した取り消しが難しくなる可能性があります。
対処方法
アプリケーションが使う ACL 権限を確認し、必要なアクセスを先に IAM ポリシーへ移してください。互換性を試験してから uniform_bucket_level_access を true に設定し、ACL への依存を取り除いてください。公開アクセスが不要なら公開 IAM 権限を削除し、公開アクセス防止の適用を検討してください。必要なアクセスの成功と未承認のリクエストの拒否を確認してください。
例
同じバケットで均一なバケットレベルのアクセスを有効にする例です。利用可能な一意のバケット名を使ってください。ドメイン形式の名前にはドメインの所有権確認が必要です。
変更前
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 に移してください。