Auf dieser Seite werden einige gängige Probleme beschrieben, die bei der Verwendung von Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) auftreten können.
Informationen zur Funktionsweise von ADC und dazu, wo Anmeldedaten gefunden werden, finden Sie unter Funktionsweise von Standardanmeldedaten für Anwendungen.
Nutzeranmeldedaten funktionieren nicht
Wenn Ihre API-Anfrage eine Fehlermeldung zurückgibt, die angibt, dass Nutzeranmeldedaten von dieser API nicht unterstützt werden, die API nicht im Projekt aktiviert ist oder kein Kontingentprojekt festgelegt ist, lesen Sie die folgenden Informationen.
Es gibt zwei Arten von Google Cloud APIs:
Ressourcenbasierte APIs, die das Projekt verwenden, das mit den Ressourcen verknüpft ist, auf die bei der Abrechnung und dem Kontingent zugegriffen wird.
Clientbasierte APIs, die das mit dem Client verknüpfte Projekt verwenden, das auf die Ressourcen für Abrechnung und Kontingente zugreift.
Wenn Sie Nutzeranmeldedaten für die Authentifizierung bei einer clientbasierten API angeben, müssen Sie das Projekt angeben, das für die Abrechnung und das Kontingent verwendet werden soll. Dieses Projekt wird als Kontingentprojekt bezeichnet.
Es gibt mehrere Möglichkeiten, ein Kontingentprojekt anzugeben, darunter die folgenden:
Aktualisieren Sie Ihre ADC-Datei, um ein anderes Projekt als Kontingentprojekt zu verwenden:
gcloud auth application-default set-quota-project YOUR_PROJECT
Wenn Sie die API über die gcloud CLI aufrufen, können Sie das Kontingentprojekt in der gcloud CLI-Konfiguration festlegen:
gcloud config set billing/quota_project YOUR_PROJECT
Wenn Sie die REST- oder RPC-API direkt aufrufen, verwenden Sie den HTTP-Header
x-goog-user-project
, um in jeder Anfrage ein Kontingentprojekt anzugeben. Weitere Informationen finden Sie unter Kontingentprojekt mit REST-Anfrage festlegen.
Sie benötigen die IAM-Berechtigung serviceusage.services.use
für ein Projekt, um es als Abrechnungsprojekt festlegen zu können. Die Berechtigung serviceusage.services.use
ist in der IAM-Rolle "Service Usage-Nutzer" enthalten. Wenn Sie die Berechtigung serviceusage.services.use
für ein Projekt nicht haben, wenden Sie sich an Ihren Sicherheitsadministrator oder einen Projektinhaber, der Ihnen die Rolle "Service Usage-Nutzer" im Projekt zuweisen kann.
Weitere Informationen zu Kontingentprojekten finden Sie unter Kontingentprojekte – Übersicht. Weitere Informationen zum Festlegen des Kontingentprojekts finden Sie unter Kontingentprojekt festlegen.
Anmeldedaten falsch
Wenn Ihre Anmeldedaten offenbar nicht den erwarteten Zugriff gewähren oder nicht gefunden werden, prüfen Sie Folgendes:
Wenn Sie die gcloud CLI verwenden, um in einer lokalen Umgebung auf Google Cloud zuzugreifen, müssen Sie wissen, welche Anmeldedaten Sie verwenden. Wenn Sie die gcloud CLI verwenden, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI mit dem Befehl
gcloud auth login
bereitgestellt haben. Sie verwenden nicht die Anmeldedaten, die Sie für ADC angegeben haben. Weitere Informationen zu diesen beiden Gruppen von Anmeldedaten finden Sie unter Authentifizierungskonfiguration der gcloud CLI und ADC-Konfiguration.Achten Sie darauf, dass die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
nur festgelegt ist, wenn Sie einen Dienstkontoschlüssel oder eine andere JSON-Datei für ADC verwenden. Die von der Umgebungsvariablen referenzierten Anmeldedaten haben Vorrang vor anderen Anmeldedaten, einschließlich Workload Identity Federation for GKE.Bestätigen Sie, dass das Hauptkonto die erforderlichen IAM-Rollen hat. Wenn Sie Nutzeranmeldedaten verwenden, müssen die Rollen der E-Mail-Adresse zugewiesen sein, die dem Nutzer-Konto zugeordnet ist. Wenn Sie ein Dienstkonto verwenden, muss dieses Dienstkonto die erforderlichen Rollen haben.
Wenn Sie mit der API-Anfrage einen API-Schlüssel angeben, hat der API-Schlüssel an beliebiger Stelle Vorrang vor ADC. Wenn Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
festgelegt haben und einen API-Schlüssel verwenden, gibt die API möglicherweise eine Warnung zurück, dass die Anmeldedaten, die Sie für ADC angegeben haben, ignoriert werden. Deaktivieren Sie die UmgebungsvariableGOOGLE_APPLICATION_CREDENTIALS
, um die Warnung zu beenden.
Unbekannter Anmeldedatentyp
Wenn Ihre API-Anfrage einen Fehler zurückgibt, der Error creating credential
from JSON. Unrecognized credential type
enthält, prüfen Sie, ob Sie gültige Anmeldedaten verwenden. Client-ID-Dateien werden nicht mit den Anmeldedaten für ADC unterstützt.
Fehler bei lokalen Anmeldedaten, die von der Identitätsübernahme des Dienstkontos zurückgegeben wurden
Anmeldedaten aus einer lokalen ADC-Datei, die mithilfe der Identitätsübernahme eines Dienstkontos generiert wurden, werden nicht von allen Authentifizierungsbibliotheken unterstützt. Wenn Ihr Aufruf einen Fehler ähnlich Neither metadata server or valid service
account credentials are found
zurückgibt, können Sie für diese Aufgabe keine lokal verwendeten Anmeldedaten für die Identitätsdiebstahl-Methode verwenden.
Um diesen Fehler zu vermeiden, erstellen Sie Ihre ADC-Datei aus Ihren Nutzeranmeldedaten oder führen Sie Ihren Code in einer Umgebung aus, in der ein Metadatenserver verfügbar ist (z. B. Compute Engine).
Unbekanntes Projekt 764086051850
für Anfrage verwendet
Projekt 764086051850
ist das Projekt, das von der gcloud CLI verwendet wird. Wenn Sie Authentifizierungsfehler sehen, die sich auf dieses Projekt beziehen, versuchen Sie, eine clientbasierte API zu verwenden, und haben nicht sowohl Ihr Projekt als auch Ihr Kontingentprojekt für Ihre Konfiguration festgelegt.
Weitere Informationen finden Sie unter Nutzeranmeldedaten funktionieren nicht.
Zugriff blockiert, wenn Bereiche verwendet werden
Wenn Sie versuchen, eine lokale ADC-Datei zu erstellen, und ein Fehler ähnlich This app
is blocked
oder Access blocked: Authorization Error
zurückgegeben wird, versuchen Sie möglicherweise, Bereiche zu verwenden, die vom Standardbefehl zur ADC-Einrichtung nicht unterstützt werden. Dieses Problem wird in der Regel durch das Hinzufügen von Bereichen für Anwendungen außerhalb von Google Cloudverursacht, z. B. durch Google Drive.
Standardmäßig enthalten die Zugriffstokens, die aus einer mit Nutzeranmeldedaten erstellten lokalen ADC-Datei generiert wurden, den cloudweiten Bereich https://www.googleapis.com/auth/cloud-platform
.
Um Bereiche explizit anzugeben, verwenden Sie das Flag –-scopes
mit dem Befehl gcloud auth application-default login
.
Wenn Sie Bereiche für Dienste außerhalb von Google Cloudwie Google Drive hinzufügen möchten, erstellen Sie eine OAuth-Client-ID und geben Sie sie mit dem
–-client-id-file
-Flag an den gcloud auth application-default login
-Befehl weiter. Geben Sie Ihre Bereiche mit dem
-–scopes
-Flag an.