このページでは、アプリケーションのデフォルト認証情報(ADC)の使用時に発生する可能性のある一般的な問題について説明します。
認証情報の場所など、ADC の仕組みについては、アプリケーションのデフォルト認証情報の仕組みをご覧ください。
ユーザーの認証情報が機能しない
API リクエストから、「この API でサポートされていないユーザー認証情報」、「API がプロジェクトで有効になっていない」、または「割り当てプロジェクトが設定されていない」などのエラー メッセージが返される場合は、次の情報を確認してください。
Google Cloud API には次の 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 リクエストで Error creating credential
from JSON. Unrecognized credential type
を含むエラーが返された場合は、有効な認証情報を使用していることを確認してください。クライアント ID ファイルでは、ADC の認証情報を提供できません。
サービス アカウントの権限借用からローカル認証情報に対してエラーが返される
サービス アカウントの権限借用を使用して生成されたローカル ADC ファイルの認証情報は、すべての認証ライブラリでサポートされているわけではありません。呼び出しが Neither metadata server or valid service
account credentials are found
のようなエラーを返した場合、このタスクにローカルの権限借用認証情報は使用できません。
このエラーを回避するには、ユーザー認証情報から ADC ファイルを作成するか、メタデータ サーバーを利用できる環境(Compute Engine など)でコードを実行します。
リクエストに使用された不明なプロジェクト 764086051850
プロジェクト 764086051850
は、gcloud CLI で使用されるプロジェクトです。このプロジェクトを参照する認証エラーが表示される場合は、クライアント ベースの API の使用を試みており、構成のプロジェクトと割り当てプロジェクトの両方を設定していません。
詳細については、ユーザー認証情報が機能しないをご覧ください。
スコープを使用しているときにアクセスがブロックされる
ローカル ADC ファイルを作成しようとしたときに、This app
is blocked
や Access blocked: Authorization Error
のようなエラーが返された場合は、デフォルトの ADC 設定コマンドでサポートされていないスコープを使用している可能性があります。通常、この問題は、Google ドライブなど Google Cloud以外のアプリケーションのスコープを追加することで発生します。
デフォルトでは、ユーザーの認証情報で作成されたローカル 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
フラグでスコープを指定します。