ADC 設定のトラブルシューティング

このページでは、アプリケーションのデフォルト認証情報(ADC)の使用時に発生する可能性のある一般的な問題について説明します。

認証情報の場所など、ADC の仕組みについては、アプリケーションのデフォルト認証情報の仕組みをご覧ください。

ユーザーの認証情報が機能しない

API リクエストから、「この API でサポートされていないエンドユーザー認証情報」、「API がプロジェクトで有効になっていない」、または「割り当てプロジェクトが設定されていない」などのエラー メッセージが返される場合は、次の情報を確認してください。

Google Cloud APIs には次の 2 種類があります。

  • リソースベースの API。課金と割り当てにアクセスされるリソースに関連付けられたプロジェクトを使用します。

  • クライアント ベースの API。課金と割り当てのリソースにアクセスするアカウントに関連付けられたプロジェクトを使用します。

クライアント ベースの API で Google アカウントの認証情報を使用する場合、アカウントに関連付けられたデフォルトのプロジェクトを請求目的で使用することはできません。

この問題を解決するには、以下のいずれかを行います。

  1. 請求先プロジェクトとして別のプロジェクトを使用するように ADC を更新する。

    gcloud auth application-default set-quota-project YOUR_PROJECT
    
  2. REST または RPC API を直接呼び出す場合は、x-goog-user-project HTTP ヘッダーを使用して各リクエストで請求先プロジェクトを指定する。詳細については、REST リクエストを使用して割り当てプロジェクトを設定するをご覧ください。

プロジェクトを請求先プロジェクトとして指定するには、serviceusage.services.use IAM 権限が必要です。serviceusage.services.use 権限には、Service Usage ユーザーの IAM ロールに含まれています。プロジェクトに対する serviceusage.services.use 権限がない場合は、セキュリティ管理者か、プロジェクトの Service Usage ユーザーのロールを付与できるプロジェクト オーナーに連絡します。

認証情報が間違っている

認証情報から適切なアクセス権が提供されない場合や、見当たらない場合は、次の点を確認してください。

  • gcloud CLI を使用してローカル環境で Google Cloud にアクセスする場合は、使用している認証情報を確認します。gcloud CLI を使用する場合は、gcloud auth login コマンドを使用して gcloud CLI に指定した認証情報を使用します。ADC に指定した認証情報を使用していません。この 2 つの認証情報の詳細については、ADC と gcloud の認証情報をご覧ください。

  • ADC にサービス アカウント キーまたは他の JSON ファイルを使用している場合にのみ、GOOGLE_APPLICATION_CREDENTIALS 環境変数が設定されていることを確認します。Workload Identity を含む他の認証情報よりも、環境変数によって示された認証情報が優先されます。

  • リクエスト対象のプリンシパルに必要な IAM ロールがあることを確認します。ユーザー認証情報を使用している場合は、Google アカウントに関連付けられているメールアドレスにロールを付与する必要があります。サービス アカウントを使用している場合は、そのサービス アカウントに必要なロールが必要です。

  • API リクエストで API キーを指定すると、任意の場所の ADC よりも API キーが優先されます。GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定して、API キーを使用している場合、ADC に指定した認証情報が無視されていることを示す警告が API から返されることがあります。警告を停止するには、GOOGLE_APPLICATION_CREDENTIALS 環境変数の設定を解除します。

認識されない認証情報のタイプ

API リクエストで、「JSON から認証情報を作成中にエラーが発生しました。認識できない認証情報タイプです」というエラーが表示された場合は、有効な認証情報を使用していることを確認してください。クライアント ID ファイルでは、ADC の認証情報を提供できません。