0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BigQueryの権限エラー 403 Access Denied bigquery.jobs.create

Last updated at Posted at 2025-07-15
エラー
403 POST https:// bigquery.googleapis.com/bigquery/v2/projects/{project-name}/jobs?prettyPrint=false: Access Denied: Project {project-name}: User does not have bigquery.jobs.create permission in project {project-name}. 

Location: US
Job ID: 

このエラーはBigQueryでよく出る典型的なIAM権限エラーだそうです。

公開データセット(bigquery-public-data)を読み込もうとしているが
BigQueryのジョブ(クエリ)を自分のプロジェクト上で実行する権限が不足している。

BigQueryはどのプロジェクトで実行するか決める必要があり、
そのプロジェクトで最低でもbigquery.jobs.createの権限が必要である。

なんでこのエラーが発生したか?

GoogleColabでjsonキーの設定前

・以下のコードを用いて、Colabは自動的にGoogleアカウント認証情報を使って、BigQueryにアクセスしている。

from google.colab import auth
auth.authenticate_user()
GoogleColabでjsonキーの設定後

・「.jsonキ」ーを使って、指定したサービスアカウントの権限でBigQueryにしようとすると、上記のエラーが発生する。

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/content/bigdataset.json"
理由:使っているサービスアカウントにBigQueryのジョブ実行権限がないため、拒否される。

解決策:

方法①:使用しているサービスアカウントに権限をつける。

GCPコンソールから、そのサービスアカウント(bigdataset.json)に以下付与する。

・BigQuery User (roles/bigquery.user)
・BigQuery Job User (roles/bigquery.jobUser)

手順:

1)GCPの画面には、IAMと管理 > サービスアカウント
2)サービスアカウントの右端に︙を押して、「権限を管理する」を選ぶ
3)「アクセスを管理する」を押す
4)「ロールを追加する」を押してから、以下の二つのロールを選ぶ。
・BigQuery ユーザー
・BigQuery ジョブユーザー

上記の手順に従って、GoogleColabでQueryを実行できるようになる。

方法②:Google CloudShellで以下のコマンドを実行する(例)
gcloud projects add-iam-policy-binding {project-name} \
  --member="serviceAccount:{project-name}-xxxx@gserviceaccount.com" \
  --role="roles/bigquery.user"

gcloud projects add-iam-policy-binding {project-name} \
  --member="serviceAccount:{project-name}-xxxx@gserviceaccount.com" \
  --role="roles/bigquery.jobUser"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?