Cloud Storage の公開 ACL プリンシパルの確認

公開 ACL プリンシパルへの権限と、実際にアクセスできるデータの範囲を確認してください。

説明

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 の公開権限も削除する必要があります。

参考資料