排解 ADC 設定問題

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

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

使用者憑證無法運作

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

Google Cloud 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 權限,才能將該專案指定為帳單專案。serviceusage.services.use 權限已納入服務使用情形消費者 IAM 角色。如果您沒有任何專案的 serviceusage.services.use 權限,請與安全性管理員或專案擁有者聯絡,請對方為您授予專案中的「服務用量使用者」角色。

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

憑證不正確

如果憑證似乎無法提供預期的存取權,或無法找到憑證,請檢查下列項目:

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

  • 請確認您在使用 ADC 的服務帳戶金鑰或其他 JSON 檔案時,才設定 GOOGLE_APPLICATION_CREDENTIALS 環境變數。環境變數所指向的憑證優先於其他憑證,包括 GKE 的工作負載身分聯合。

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

  • 如果您在 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 標記將其提供給 gcloud auth application-default login 指令,並使用 -–scopes 標記指定範圍。