In diesem Thema wird erklärt, wie Sie eine Anwendung als Dienstkonto authentifizieren können. Allgemeine Informationen zur Authentifizierung bei Google Cloud APIs, einschließlich gängiger Authentifizierungsszenarien und -strategien, finden Sie in der Übersicht zu Authentifizierung. Weitere Informationen zu Dienstkonten finden Sie in der Dokumentation zu Identitäts- und Zugriffsverwaltung unter Dienstkonten.
Anmeldedaten automatisch finden
Wenn Ihre Anwendung in einer Google Cloud-Umgebung ausgeführt wird und Sie an diese Umgebung ein Dienstkonto angehängt haben, kann Ihre Anwendung Anmeldedaten für das Dienstkonto abrufen. Die Anwendung kann diese Anmeldedaten dann zum Aufrufen von Google Cloud APIs verwenden.
Sie können Dienstkonten mit Ressourcen für viele verschiedene Google Cloud-Dienste verbinden, z. B. Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run und Cloud Functions. Wir empfehlen diese Strategie, da sie praktischer und sicherer ist, als die Anmeldedaten manuell zu übergeben.
Darüber hinaus empfehlen wir die Verwendung von Google Cloud-Clientbibliotheken für Ihre Anwendung. Google Cloud-Clientbibliotheken verwenden eine Bibliothek namens "Standardanmeldedaten für Anwendungen" (Application Default Credentials, ADC), um die Anmeldedaten Ihres Dienstkontos automatisch zu finden. ADC sucht in der folgenden Reihenfolge nach Anmeldedaten für Dienstkonten:
Wenn die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
festgelegt ist, verwendet ADC den Dienstkontoschlüssel oder die Konfigurationsdatei, auf die die Variable verweist.Wenn die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
nicht festgelegt ist, verwendet ADC das Dienstkonto, das an die Ressource angehängt ist, die Ihren Code ausführt.Dieses Dienstkonto kann ein Standarddienstkonto sein, das von Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run oder Cloud Functions bereitgestellt wird. Es kann auch ein nutzerverwaltetes Dienstkonto sein, das Sie erstellt haben.
Wenn ADC keine der oben genannten Anmeldedaten verwenden kann, tritt ein Fehler auf.
Das folgende Codebeispiel zeigt, wie Sie die ADC-Bibliothek in Ihrem Anwendungscode verwenden können. Sie müssen die Cloud Storage-Clientbibliothek installieren, um dieses Beispiel auszuführen.
C#
Go
Java
Node.js
PHP
Python
Ruby
Anmeldedaten manuell übergeben
Wenn Ihre Anwendung in einer Umgebung ausgeführt wird, in der kein Dienstkonto angehängt ist, z. B. lokal oder bei einem anderen Cloud-Anbieter, sollten Sie die Workload Identity-Föderation verwenden.
Wenn Sie die Workload Identity-Föderation nicht verwenden können, müssen Sie ein Dienstkonto und einen oder mehrere Dienstkontoschlüssel erstellen. Dies sind die dem Dienstkonto zugeordneten Anmeldedaten. Die Dienstkontoschlüssel können dann manuell an Ihre Anwendung übergeben werden.
Best Practices für die Verwaltung von Dienstkontoschlüsseln
Dienstkonto erstellen
In den folgenden Schritten wird beschrieben, wie Sie ein Dienstkonto erstellen, wenn Sie noch keines haben:
Console
Erstellen Sie ein Dienstkonto:
-
Wechseln Sie in der Cloud Console zur Seite Dienstkonto erstellen.
Zur Seite „Dienstkonto erstellen“ - Wählen Sie Ihr Projekt aus.
-
Geben Sie im Feld Dienstkontoname einen Namen ein. Die Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.
Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel:
Service account for quickstart
. - Klicken Sie auf Erstellen und fortfahren.
-
Um Zugriff auf Ihr Projekt zu gewähren, weisen Sie Ihrem Dienstkonto die folgenden Rollen zu: Projekt > Inhaber .
Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
Klicken Sie auf
Weitere Rolle hinzufügen, um weitere Rollen hinzuzufügen. - Klicken Sie auf Weiter.
-
Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
Schließen Sie das Browserfenster nicht. Sie verwenden es in der nächsten Aufgabe.
Erstellen Sie einen Dienstkontoschlüssel:
- Klicken Sie in der Cloud Console auf die E-Mail-Adresse des von Ihnen erstellten Dienstkontos.
- Klicken Sie auf Schlüssel.
- Klicken Sie auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
- Klicken Sie auf Erstellen. Daraufhin wird eine JSON-Schlüsseldatei auf Ihren Computer heruntergeladen.
- Klicken Sie auf Schließen.
gcloud
Richten Sie die Authentifizierung ein:
-
Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create NAME
Ersetzen Sie
NAME
mit einem Namen für das Dienstkonto. -
Weisen Sie dem Dienstkonto Rollen zu. Führen Sie den Befehl
roles/owner
für jede der folgenden IAM-Rollen einmal aus:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Dabei gilt:
SERVICE_ACCOUNT_NAME
: der Name des DienstkontosPROJECT_ID
: die Projekt-ID, unter der Sie das Dienstkonto erstellt habenROLE
: die zu gewährende Rolle
-
Erstellen Sie die Schlüsseldatei:
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Dabei gilt:
FILE_NAME
: ein Name für die SchlüsseldateiSERVICE_ACCOUNT_NAME
: der Name des DienstkontosPROJECT_ID
: die Projekt-ID, unter der Sie das Dienstkonto erstellt haben
Anmeldedaten mit einer Umgebungsvariable übergeben
Geben Sie die Anmeldedaten zur Authentifizierung für Ihren Anwendungscode durch Festlegung der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS
an. Diese Variable gilt nur für Ihre aktuelle Shellsitzung. Wenn Sie möchten, dass die Variable für zukünftige Shell-Sitzungen gilt, legen Sie die Variable in Ihrer Shell-Startdatei fest, z. B. in der Datei ~/.bashrc
oder ~/.profile
.
Linux oder macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Geben Sie für KEY_PATH
den Dateipfad der JSON-Datei an, die Ihren Dienstkontoschlüssel enthält.
Beispiel:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Für PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Geben Sie für KEY_PATH
den Dateipfad der JSON-Datei an, die Ihren Dienstkontoschlüssel enthält.
Beispiel:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Für Eingabeaufforderung:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
Geben Sie für KEY_PATH
den Dateipfad der JSON-Datei an, die Ihren Dienstkontoschlüssel enthält.
Nachdem Sie die oben genannten Schritte ausgeführt haben, kann ADC Ihre Anmeldedaten automatisch finden. Dies wurde im Abschnitt oben beschrieben. Wir empfehlen die Verwendung von Standardanmeldedaten für Anwendungen, da es weniger Codeeingaben erfordert und der Code in verschiedene Umgebungen portierbar ist.
Anmeldedaten mithilfe von Code übergeben
Alternativ können Sie im Code explizit auf Ihre Dienstkontodatei verweisen. Dies wird im folgenden Beispiel gezeigt. Für das folgende Beispiel müssen Sie die Cloud Storage-Clientbibliothek installieren.
C#
Go
Java
Node.js
PHP
Python
Ruby
API-Fehler beheben
Weitere Informationen über die Fehlerbehandlung bei fehlgeschlagenen Anfragen in Fehlerbehebung für Cloud-APIs.
Nächste Schritte
- Lesen Sie unsere Best Practices zum Verwalten von Dienstkonten und Dienstkontoschlüsseln.
- Best Practices zum Schutz von Dienstkonten
- Weitere Informationen zur Authentifizierung bei Google Cloud APIs
- Weitere Informationen zur Authentifizierung als Endnutzer
- Weitere Informationen zur Verwendung von API-Schlüsseln
Jetzt testen
Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
Jetzt kostenlos starten