• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

GCP Google Auth(ADC)

date: 2022-04-07 excerpt: GCP Google Auth(ADC)のプラクティス

tag: gcpgoogle authADC


GCP Google Authのプラクティス

概要

  • GCPでpythonやjsなどから他のシステムを参照するときにどのようなフローで認証するのがよいのかプラクティスがある
  • 一般的に、サービスアカウントのクレデンシャル情報をdockerの中に入れたりするのはセキュリティ上よくない
    • gcloud 認証ヘルパーという機能を用いてクレデンシャル情報を入れたり、特定のpythonライブラリを用いる

Application Default Credentials (ADC) の優先順位

  1. GOOGLE_APPLICATION_CREDENTIALSに設定された鍵フィアル
  2. OAuth2時に出力された~/.config/gcloud/applicstion_default_credentials.jsonのファイル
  3. GCP上のメタデータから得られた情報

OAuth2で認証ファイルを出力する

# デフォルのスコープで認証ファイルを出力
$ gcloud auth application-default login
# 特定のスコープで認証ファイルを出力
$ gcloud auth application-default login --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery,https://www.googleapis.com/auth/drive

すると~/.config/gcloud/applicstion_default_credentials.jsonが得られる

これをdocker等で使うときは以下のように認証ファイルを共有する

$ docker run -it -v ~/.config/:/root/.config <container-name>

これは一般的なGCPを用いたpythonスクリプトでも最初に参照される

pythonでADCからクレデンシャル情報を得る

google-authのインストール

$ python3 -m pip install google-auth

credentialsインスタンスを得る

import google.auth
credentials, project_id = google.auth.default()
  • 環境変数のGOOGLE_APPLICATION_CREDENTIALSがセットされていると最初にそちらから読み取られる

GOOGLE_APPLICATION_CREDENTIALSを優先しないようにする

$ unset GOOGLE_APPLICATION_CREDENTIALS

dockerコンテナの内部で認証を通す

  • ローカル開発などに限定したとき
  • root部分は適宜変更
$ docker run -v ~/.config/gcloud/:/root/.config/gcloud -p 8080:8080 -it <image-name>

参考

  • google.auth package
  • gcloud auth application-default login/Google Cloud
  • Docker に対する認証の設定/Google Cloud
  • GCP の Application Default Credentials を使った認証


gcpgoogle authADC Share Tweet