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

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

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

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

検索の順序

ADC は次のロケーションで認証情報を検索します。

  1. GOOGLE_APPLICATION_CREDENTIALS 環境変数
  2. Google Cloud CLI で設定されたユーザー認証情報
  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 CLI で提供されるユーザー認証情報

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

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

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

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

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

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

次のステップ