DEV Community

Seizan Shimazaki
Seizan Shimazaki

Posted on

GCP API の認証設定

GCP (Google Cloud Platform) の API を使うための認証・認可は OAuth 2.0 で、
サーバーでの使い方は Using OAuth 2.0 for Server to Server Applications に書かれている。
結論としては Google Application Default Credentials (ADC) を使い、OAuth 2.0 Access Token を取得して使う。

ADC は AWS での Default Credential Provider Chain にあたる。

ADC とは

次のロジックで得られる credentials が ADC と呼ばれる。

  1. 環境変数 GOOGLE_APPLICATION_CREDENTIALS が指定されていたら、そのファイルを service account の credentials として読んで使う
  2. gcloud auth application-default login を実行して well_known_file が作成済みであれば、それを authorized user の credentials として読んで使う
  3. GAE (Google App Engine) 上で実行されていれば、その built-in service account を使う
  4. GCE (Google Compute Engine) 上で実行されていれば、その build-in service account を使う
  5. ここまで該当がなければエラーとする

well_known_file について

$ gcloud auth application-default login
Enter fullscreen mode Exit fullscreen mode

を実行すると作成される。
デフォルトだと ~/.config/gcloud/application_default_credentials.json
環境変数 CLOUDSDK_CONFIG が指定されていれば $CLOUDSDK_CONFIG/application_default_credentials.json

Access Token を取得する

service account か authorized user の credentials を使う場合は、
然るべきリクエストを作ってトークンエンドポイントに POST する。
GCE の場合はメタデータサーバーに GET する。

Access Token を使って API を叩く

取得した access token を Authorization ヘッダに Bearer 形式で入れる。
Authorization: Bearer xxxx.yyyyyyyyyyyyy

使うとき

Google 的に優先度高い言語 は公式ライブラリが用意されていて、マニュアル見て使えばよい。
Elixir はライブラリが無かったので作った。
https://github.com/aktsk/gcp_auth

Top comments (0)