GCP BigQuery データセットへの広範な認証済みユーザーのアクセス

データセットへのアクセスを必要なユーザーとサービスアカウントに制限してください。

説明

GCP BigQuery データセットで allAuthenticatedUsers に権限を付与すると、組織外の Google 認証済みユーザーやサービスアカウントも対象になります。機密データセットへの広範な付与は、ロールに応じてデータの読み取り、変更、アクセス管理を許可するおそれがあります。

allAuthenticatedUsers は匿名ユーザーを意味しませんが、組織内のユーザーだけに限定されるものでもありません。実行できる操作は、付与したロールと他の適用される権限制御によって異なります。

想定される影響

  • 読み取り権限があると、組織外に情報が漏えいするおそれがあります。
  • 変更や管理の権限もあると、データの完全性やアクセス制御が損なわれる可能性があります。

対処方法

公開を意図したデータか確認し、不要な allAuthenticatedUsers への権限付与を削除してください。承認済みのユーザー、グループ、サービスアカウントに必要最小限のロールを付与し、上位から継承する IAM 権限も確認してください。必要なアクセスが成功し、未承認のアクセスが拒否されることを確認してください。

例

同じデータセットのアクセス対象を変更する例です。参照する bqowner サービスアカウントの定義は省略しています。

変更前

hcl
resource "google_bigquery_dataset" "analytics_dataset" {
  dataset_id = "example_dataset"
  location   = "EU"

  access {
    role          = "OWNER"
    special_group = "allAuthenticatedUsers"
  }
}

Google 認証済みユーザーとサービスアカウント全体に OWNER 権限を付与しているため、対象と権限の両方が広範です。

変更後

hcl
resource "google_bigquery_dataset" "analytics_dataset" {
  dataset_id = "example_dataset"
  location   = "EU"

  access {
    role          = "OWNER"
    user_by_email = google_service_account.bqowner.email
  }
}

対象を一つのサービスアカウントに制限していますが、OWNER 権限は残ります。データセットの管理まで必要か確認し、不要ならより限定的なロールを使用してください。

参考資料