説明
Cloud Storage ACL の allUsers は匿名ユーザーを含み、allAuthenticatedUsers は組織外の認証済みユーザーやサービスアカウントも含みます。公開配信を目的としない場合は、これらのプリンシパルにアクセス権限を付与しないでください。
公開範囲は付与したロールと、バケット・オブジェクトのどちらに適用するかによって変わります。バケットの READER ACL はバケット内のオブジェクト一覧の取得を許可します。オブジェクトの内容を読む権限は別途確認する必要があります。
想定される影響
- 一覧取得を広く許可すると、オブジェクト名や保存構造が公開される場合があります。
- オブジェクトの読み取りも公開すると、ファイルの漏えいや許可する必要のないダウンロードにつながる可能性があります。
対処方法
- ACL と IAM から不要な
allUsers、allAuthenticatedUsersへの付与を削除し、承認されたプリンシパルに必要なロールだけを付与してください。 - 非公開バケットでは Public Access Prevention を検討してください。均一なバケットレベルのアクセスで ACL を無効にする場合は、必要なアクセスを IAM に移し、実際の権限を確認してください。
例
サポートが終了した Deployment Manager 形式で、ACL プリンシパルだけを比較した抜粋です。対象バケットや role などの必須設定は省略しています。現在サポートされているツールで、実際のプリンシパルと最小限の権限を構成してください。
変更前
yaml
resources:
- name: bucket-access-control
type: storage.v1.bucketAccessControl
properties:
entity: allUsers
変更後
yaml
resources:
- name: bucket-access-control
type: storage.v1.bucketAccessControl
properties:
entity: user-example@example.com
説明:
- 変更前: 匿名ユーザーを含む公開プリンシパルを指定します。許可する操作はロールによって決まります。
- 変更後: プリンシパルを特定のユーザーに限定します。例のアドレスを承認されたユーザーに置き換え、他の ACL と IAM の公開権限も削除する必要があります。