PythonでGoogle Cloud Platform(GCP)のサービスを利用する際に、認証処理は避けて通れない重要な要素です。
その中でも google.auth.default
は「適切な認証情報を自動で取得する」「環境に応じた認証方法を選択する」など、認証処理を簡単に実装するための基本的な関数です。
この記事では google.auth.default
の基本的な使い方から、活用シーン、注意点までをわかりやすく丁寧に解説します。
google.auth.defaultとは?
google.auth.default
は、Google Cloud Client Librariesにおける認証情報の自動取得のための関数です。
実行環境に応じて最適な認証方法を自動的に選択し、Google Cloud サービスにアクセスするためのクレデンシャル(認証情報)を取得します。
Pythonでは、環境変数やサービスアカウントキー、Application Default Credentials(ADC)などから google.auth.default()
を使って認証情報を自動で見つけて取得できます。
基本的な使い方
まずは、基本的な認証情報の取得コードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import google.auth from google.cloud import storage # 認証情報を自動取得 credentials, project_id = google.auth.default() # Cloud Storageクライアントを作成 client = storage.Client(credentials=credentials, project=project_id) # バケット一覧を取得 buckets = client.list_buckets() for bucket in buckets: print(f"バケット名: {bucket.name}") |
このコードでやっていることは:
google.auth.default()
で認証情報とプロジェクトIDを取得- 取得した認証情報でCloud Storageクライアントを初期化
- 認証済みクライアントでバケット一覧を取得
- バケット情報を出力
認証情報の取得からサービス利用まで、シンプルなコードで実現できます。
具体例:BigQuery操作の認証として使う
google.auth.default
はBigQueryなどの他のGCPサービスでも頻繁に使われます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import google.auth from google.cloud import bigquery # 認証情報を取得 credentials, project_id = google.auth.default() # BigQueryクライアントを作成 client = bigquery.Client(credentials=credentials, project=project_id) # SQLクエリを実行 query = """ SELECT name, SUM(number) as total_people FROM `bigquery-public-data.usa_names.usa_1910_2013` WHERE state = 'TX' GROUP BY name ORDER BY total_people DESC LIMIT 10 """ query_job = client.query(query) results = query_job.result() for row in results: print(f"名前: {row.name}, 人数: {row.total_people}") |
このように:
google.auth.default()
で認証情報を自動取得- BigQueryクライアントを認証情報で初期化
- SQLクエリを実行してデータを取得
この一連の操作で、BigQueryを使ったデータ分析処理を自動化できます。
google.auth.defaultで使える認証方法の例
google.auth.default()
は以下のような順序で認証情報を探します。
優先順位 | 認証方法 | 説明 |
---|---|---|
1 | 環境変数 | GOOGLE_APPLICATION_CREDENTIALS で指定されたサービスアカウントキー |
2 | gcloud CLI | gcloud auth application-default login で設定された認証情報 |
3 | Cloud Shell | Google Cloud Shell環境での自動認証 |
4 | Compute Engine | GCEインスタンスのサービスアカウント |
5 | App Engine | GAE環境でのデフォルトサービスアカウント |
認証情報は、Google Cloud Consoleのサービスアカウント画面や gcloud auth list
コマンドで確認できます。
google.auth.defaultの引数オプション
google.auth.default()
には以下のようなオプション引数も指定できます:
1 2 3 4 5 6 |
credentials, project_id = google.auth.default( scopes=['https://www.googleapis.com/auth/cloud-platform'], request=None, quota_project_id='my-quota-project' ) |
- scopes:アクセス権限のスコープを指定(リスト形式)
- request:HTTPリクエストオブジェクトを指定
- quota_project_id:課金対象のプロジェクトIDを指定
また、特定のサービス向けのスコープを指定したい場合は、サービスごとの適切なスコープを使用します。
google.auth.defaultを使うときの注意点
環境変数の設定に注意
ローカル開発環境で使用する場合、GOOGLE_APPLICATION_CREDENTIALS
環境変数にサービスアカウントキーのパスを設定する必要があります。
1 2 |
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json" |
この環境変数が設定されていないと、認証情報が見つからないエラーが発生します。
その場合は環境変数の設定確認や、gcloud auth application-default login
での認証を実行します。
権限不足に注意
取得した認証情報が、実行したい操作に対して十分な権限を持っていない場合があります。
必要な権限(ロール)がサービスアカウントに付与されているかを確認しましょう。
1 2 3 4 5 6 7 8 9 10 |
import google.auth from google.auth.exceptions import DefaultCredentialsError try: credentials, project_id = google.auth.default() print(f"認証成功: プロジェクトID = {project_id}") except DefaultCredentialsError as e: print(f"認証エラー: {e}") print("認証情報の設定を確認してください") |
プロダクション環境での認証情報管理
本番環境では、サービスアカウントキーをファイルとして配置するのではなく、環境の機能(Compute EngineのサービスアカウントやWorkload Identityなど)を活用することを推奨します。
これにより、認証情報の漏洩リスクを最小化できます。
まとめ
今回はGoogle Cloud用認証ライブラリの google.auth.default
関数について紹介しました。
google.auth.default
は環境に応じて最適な認証情報を自動取得する基本関数- スコープ(権限範囲)を指定して、必要な権限での認証が可能
- 認証→クライアント作成→サービス利用といった一連の操作も簡単に自動化できる
- 環境変数の設定や権限確認には注意し、適切なエラーハンドリングとの併用が有効
google.auth.default
をマスターすれば、Cloud Storage、BigQuery、Cloud Functions など、さまざまなGoogle Cloudサービスを認証付きで利用できるようになります。
Google Cloudを使ったPython開発の基礎として、ぜひしっかり理解しておきましょう。