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

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

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

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

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

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

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

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

クライアントベースの API の認証用にユーザー認証情報を提供する場合は、課金と割り当てに使用するプロジェクトを指定する必要があります。このプロジェクトは、割り当てプロジェクトと呼ばれます。

割り当てプロジェクトを指定するには、次のような方法があります。

  • 割り当てプロジェクトとして別のプロジェクトを使用するように ADC ファイルを更新する。

    gcloud auth application-default set-quota-project YOUR_PROJECT
    
  • gcloud CLI を使用して API を呼び出す場合は、gcloud CLI 構成で割り当てプロジェクトを設定できます。

    gcloud config set billing/quota_project YOUR_PROJECT
    
  • 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 つの認証情報の詳細については、gcloud CLI 認証構成と ADC 構成をご覧ください。

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

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

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

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

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

スコープを使用しているときにアクセスがブロックされる

ローカル ADC ファイルを作成しようとしたときに、「このアプリはブロックされています」や「アクセスがブロックされました: 認証エラー」などのエラーが返された場合は、デフォルトの ADC 設定コマンドでサポートされていないスコープを使用している可能性があります。通常、この問題は、Google ドライブなど Google Cloud 以外のアプリケーションのスコープを追加することで発生します。

デフォルトでは、ユーザーの認証情報で作成されたローカル 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 フラグにスコープを指定します。