排解 ADC 設定問題

本頁說明使用應用程式預設憑證 (ADC) 時可能遇到的一些常見問題。

如要瞭解 ADC 的運作方式 (包括憑證的尋找位置),請參閱「應用程式預設憑證的運作方式」。

使用者憑證無法運作

如果 API 要求傳回錯誤訊息,指出這個 API 不支援使用者憑證、API 未在專案中啟用,或未設定配額專案,請參閱下列資訊。

Google Cloud API 分為兩種:

  • 以資源為準的 API:這類 API 會使用與所存取資源相關聯的專案,進行計費和配額管理。

  • 以用戶端為準的 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 權限,才能將專案指定為帳單專案。服務使用情形消費者 IAM 角色已具備 serviceusage.services.use 權限。如果您沒有任何專案的 serviceusage.services.use 權限,請與安全管理員或專案擁有者聯絡,由對方授予您專案的「Service Usage Consumer」角色。

如要進一步瞭解配額專案,請參閱「配額專案總覽」。如要瞭解設定配額專案的其他方式,請參閱「設定配額專案」。

憑證不正確

如果憑證無法提供預期存取權,或系統找不到憑證,請檢查下列事項:

  • 如果您使用 gcloud CLI 在本機環境中存取 Google Cloud ,請務必瞭解您使用的憑證。使用 gcloud CLI 時,您會使用透過 gcloud auth login 指令提供給 gcloud CLI 的憑證。您並未使用提供給 ADC 的憑證。如要進一步瞭解這兩組憑證,請參閱「gcloud CLI 驗證設定和 ADC 設定」。

  • 請確認您在為 ADC 使用服務帳戶金鑰或其他 JSON 檔案時,才設定 GOOGLE_APPLICATION_CREDENTIALS 環境變數。環境變數所指向的憑證優先於其他憑證,包括 GKE 的 Workload Identity Federation。

  • 確認提出要求的主體具備必要的 IAM 角色。如果您使用使用者憑證,則必須將角色授予與使用者帳戶相關聯的電子郵件地址。如果您使用服務帳戶,該帳戶必須具備必要角色。

  • 如果您在 API 要求中提供 API 金鑰,無論在任何位置,API 金鑰的優先順序都會高於 ADC。如果您已設定 GOOGLE_APPLICATION_CREDENTIALS 環境變數,且使用 API 金鑰,API 可能會傳回警告,指出您提供給 ADC 的憑證遭到忽略。如要停止顯示警告,請取消設定 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 blockedAccess blocked: Authorization Error 的錯誤,可能是因為您嘗試使用的範圍不支援預設 ADC 設定指令。通常,這個問題是因為為 Google Cloud以外的應用程式 (例如 Google 雲端硬碟) 新增範圍所致。

根據預設,使用使用者憑證建立的本機 ADC 檔案所產生的存取權杖,會包含 雲端範圍 https://www.googleapis.com/auth/cloud-platform。 如要明確指定範圍,請將 --scopes 標記搭配 gcloud auth application-default login 指令使用。

如要為 Google Cloud以外的服務 (例如 Google 雲端硬碟) 新增範圍,請建立 OAuth 用戶端 ID,並使用 --client-id-file 旗標將該 ID 提供給 gcloud auth application-default login 指令,然後使用 --scopes 旗標指定範圍。