やりたいこと
個人用途で、Pythonのクライアントライブラリ(google-cloud-bigquery)からBigQueryのAPIを叩きたいみたいなケースを考えてください。
インターネット上のブログの多くでは、サービスアカウントを発行して、jsonの鍵を取得し、GOOGLE_APPLICATION_CREDENTIALS
の環境変数に指定する方法が紹介されています。
ですが、個人ごとにサービスアカウントを発行するのは面倒です。
こうすればできる
個人の権限(=ユーザアカウント)を用いて、プログラミング言語のクライアントライブラリからGCPを利用する場合は gcloud auth application-default login
コマンドを利用します
やり方は簡単で、ターミナルなどで以下のコマンドを実行します
$ gcloud auth application-default login
そうするとWebブラウザに飛ばされ、そこで個人の権限でGCPの認証をすれば、ローカルの ~/.config/gcloud/application_default_credentials.json
にトークンが保存されます。
これがあればGOOGLE_APPLICATION_CREDENTIALS
の環境変数がなくても、プログラミング言語のクライアントライブラリからGCPを利用できます。
gcloud auth application-default loginコマンドの公式マニュアル
注意
似たようなコマンドに gcloud auth login
やgcloud longin
がありますが、これはgcloud, gsutil, bqなどのCLIコマンドの認証にしか使われません。
詳細
整理すると、GCPの認証は四通りあります。
タイプが
- ユーザアカウント
- サービスアカウント
の二種類があり、
対象が
- CLIコマンド (gcloud, gsutil, bq)
- プログラミング言語のクライアントライブラリ等 ( pythonのgoogle-cloud-bigquery等)
の二種類があります。
CLIコマンド(gcloud, gsutil, bq) | プログラミング言語のクライアントライブラリ等 | |
---|---|---|
ユーザーアカウント | gcloud login | gcloud auth application-default login |
サービスアカウント | gcloud auth activate-service-account --key-file JSONのキー | サービスアカウントのJSONのキーをGOOGLE_APPLICATION_CREDENTIALSに指定 |
詳細については https://medium.com/google-cloud-jp/gcp-%E3%81%A8-oauth2-91476f2b3d7f がとてもわかり易いです。