アプリケーションのデフォルト認証情報の仕組み

このページでは、アプリケーションのデフォルト認証情報(ADC)が認証情報を探す場所について説明します。ADC の仕組みを理解することで、ADC で使用されている認証情報と、その認証情報の検出方法を理解できます。

Application Default Credentials (ADC) は、アプリケーション環境に基づいて認証情報を自動的に検索するために、認証ライブラリが使用する手法です。認証ライブラリは、これらの認証情報を Cloud クライアント ライブラリと Google API クライアント ライブラリで使用可能にします。ADC を使用すると、アプリケーションがサービスと API に対して認証を行う方法を変更せずに、開発環境または本番環境でコードを実行できます。 Google Cloud

ローカル ADC ファイルを生成する方法など、ADC に認証情報を指定する方法については、アプリケーションのデフォルト認証情報を設定するをご覧ください。

検索の順序

ADC は次の場所で認証情報を検索します。

  1. GOOGLE_APPLICATION_CREDENTIALS 環境変数
  2. gcloud auth application-default login コマンドを使用して作成された認証情報ファイル
  3. 接続済みのサービス アカウント(メタデータ サーバーから返されます)

ADC が認証情報を確認する場所の順序は、各場所の相対的な優劣とは関係ありません。ADC に認証情報を指定する最適な方法については、アプリケーションのデフォルト認証情報を設定するをご覧ください。

GOOGLE_APPLICATION_CREDENTIALS 環境変数

GOOGLE_APPLICATION_CREDENTIALS 環境変数を使用して、認証情報の JSON ファイルの場所を指定できます。この JSON ファイルは、次のいずれかのタイプのファイルになります。

  • Workforce Identity 連携の認証情報構成ファイル

    Workforce Identity 連携を使用すると、外部 ID プロバイダ(IdP)を使用して、リソースにアクセスするユーザーを認証および認可できます。 Google Cloud詳細については、Identity and Access Management(IAM)ドキュメントの Workforce Identity 連携をご覧ください。

  • Workload Identity 連携の認証情報構成ファイル

    Workload Identity 連携を使用すると、外部 IdP を使用してワークロードの認証と認可を行い、Google Cloud リソースへのアクセスを許可できます。詳細については、Identity and Access Management(IAM)のドキュメントのクライアント ライブラリ、gcloud CLI、または Terraform を使用した認証をご覧ください。

  • サービス アカウント キー

    サービス アカウント キーはセキュリティ上のリスクをもたらすため、推奨されません。他の認証情報ファイル形式とは異なり、不正使用されたサービス アカウント キーは不正な行為者によって追加情報なしに使用される可能性があります。詳細については、サービス アカウント キーの使用と管理のベスト プラクティスをご覧ください。

gcloud auth application-default login コマンドを使用して作成された認証情報ファイル

gcloud auth application-default login コマンドを実行して、ADC に認証情報を提供できます。このコマンドは、指定した認証情報(ユーザー アカウントまたはサービス アカウントの権限借用から取得した認証情報)を含む JSON ファイルを作成し、ファイル システム上の既知の場所に配置します。オペレーティング システムによって場所が異なります。

  • Linux / macOS: $HOME/.config/gcloud/application_default_credentials.json
  • Windows: %APPDATA%\gcloud\application_default_credentials.json

gcloud CLI で ADC に提供する認証情報は、gcloud CLI が Google Cloudの認証に使用する認証情報とは異なります。この 2 つの認証情報の詳細については、gcloud CLI 認証構成と ADC 構成をご覧ください。

デフォルトでは、ユーザーの認証情報で作成されたローカル ADC ファイルから生成されたアクセス トークンには、クラウド全体のスコープ https://www.googleapis.com/auth/cloud-platform が含まれます。スコープを明示的に指定するには、gcloud auth application-default login コマンドで –-scopes フラグを使用します。

Google Cloud以外のサービス(Google ドライブなど)のスコープを追加するには、OAuth クライアント ID を作成し、 –-client-id-file フラグを使用して gcloud auth application-default login コマンドに渡します。 -–scopes フラグでスコープを指定します。

接続されたサービス アカウント

多くの Google Cloud サービスでは、API にアクセスするための認証情報を提供するサービス アカウントを追加できます。 Google Cloud ADC が GOOGLE_APPLICATION_CREDENTIALS 環境変数、またはローカル ADC 認証情報の既知の場所で使用できる認証情報を検出しない場合は、ADC はメタデータ サーバーを使用して、コードが実行されているサービスの認証情報を取得します。

Google Cloudの本番環境内で認証情報を見つける場合、接続されたサービス アカウントの認証情報を使用することが推奨の方法です。接続されたサービス アカウントを使用する手順は次のとおりです。

  1. ユーザーが管理するサービス アカウントを作成します。
  2. そのサービス アカウントに最小権限の IAM ロールを付与します。
  3. コードが実行されているリソースにサービス アカウントを接続します。

サービス アカウントの作成方法については、サービス アカウントの作成と管理をご覧ください。サービス アカウントの接続方法については、サービス アカウントをリソースに接続するをご覧ください。サービス アカウントに必要な IAM ロールの決定については、事前定義ロールの選択をご覧ください。

次のステップ