概要
ローカルからGCPにアクセスする際に使う
- gcloud auth login
- gcloud auth application-default login
について区別できるようまとめます。
環境
- gcloud v340.0.0
gcloud auth login
用途
こちらはローカルで以下のようなGCP系CLIを実行する際の認証を得るために使います。
認証情報の場所
~/.config/gcloud/credentials.db
にあります。
これはsqlight3のデータベースなので、データを見たい場合は以下のようにコマンドを実行します。
$ sqlite3 credentials.db
sqlite> SELECT * from credentials;
中身は以下のようなフォーマットになっています。
<YOUR_EMAIL>|{ "client_id": "xxxx.apps.googleusercontent.com", "client_secret": "xxxx", "refresh_token": "xxxx", "revoke_uri": "https://accounts.google.com/o/oauth2/revoke", "scopes": [ "openid", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/accounts.reauth" ], "token_uri": "https://oauth2.googleapis.com/token", "type": "authorized_user" }
アカウントの切り替え
複数アカウント or 複数プロジェクトを管理している場合、
$ gcloud config configurations list NAME IS_ACTIVE ACCOUNT PROJECT p01 False jun06t@hoge.com project01 p01_admin False admin@hoge.com project01 p02 False jun06t@hoge.com project02 default False jun06t@gmail.com project03 playground True my_playground@gmail.com project04
で一覧と現在使用しているアカウントやプロジェクトを見ることができます。
IS_ACTIVE
が現在使っているアカウント&プロジェクトで、例えばproject02
に切り替えたい場合は
$ gcloud config configurations activate p02
とします。
gcloud auth application-default login
用途
こちらはGoやら各言語でのSDKを使ったプログラムを実行する際の認証を得るために使います。
例えばBigQueryのライブラリである
bigquery package - cloud.google.com/go/bigquery - Go Packages
を使って「ローカルから実行してみよう」となったときに認証情報をサービスアカウントからわざわざ鍵生成して用意しなくとも、
$ gcloud auth application-default login
でローカルに認証情報を持っていれば、ローカルから実行できます。
認証情報の場所
~/.config/gcloud/application_default_credentials.json
にあります。
以下のフォーマットになっています。
{ "client_id": "xxxx.apps.googleusercontent.com", "client_secret": "xxx", "quota_project_id": "xxxx", "refresh_token": "xxxx", "type": "authorized_user" }
アカウントの切り替え
application_default_credentials.json
は1つの認証情報しか保持しないため、複数アカウントを持っていて切り替えたい場合はその都度使いたいアカウントで
$ gcloud auth application-default login
を実行して認証し、クレデンシャルを再生成する必要があります。
gcloud auth login
ではプロジェクトも分かれて管理されていましたが、
NAME IS_ACTIVE ACCOUNT PROJECT p01 False jun06t@hoge.com project01 p01_admin False admin@hoge.com project01 p02 False jun06t@hoge.com project02 default False jun06t@gmail.com project03 playground True my_playground@gmail.com project04
こちらはアカウントのみです。
なので上記で説明するとmy_playground@gmail.com
で認証した状態であればproject04
のみ扱えますし、jun06t@hoge.com
で認証した状態あればproject01
とproject02
の両方で利用可能です。
参考
- google cloud platform - Difference between "gcloud auth application-default login" and "gcloud auth login" - Stack Overflow
- Local/Remote Authentication with Google Cloud Platform | by Theodore Siu | Google Cloud - Community | Medium
- gcloud auth login | Google Cloud CLI Documentation
- gcloud auth application-default login | Google Cloud CLI Documentation