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 mit einem Standarddienstkonto ausgeführt wird, kann die Anwendung die Anmeldedaten des Dienstkontos abrufen, um Google Cloud APIs aufzurufen. Zu diesen Umgebungen gehören 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 die Dienstkontodatei, auf die diese 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.Wenn die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
nicht gesetzt ist und der Ressource, auf der Ihr Code ausgeführt wird, kein Dienstkonto zugeordnet ist, verwendet ADC das Standarddienstkonto, das Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run und Cloud Functions bereitstellen.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:
C#
Go
Java
Node.js
PHP
Python
Ruby
Anmeldedaten manuell übergeben
Wenn Ihre Anwendung außerhalb von Google Cloud-Umgebungen ausgeführt wird, die ein Standarddienstkonto bereitstellen, müssen Sie manuell eines erstellen. Anschließend können Sie einen oder mehrere Dienstkontoschlüssel erstellen. Das sind dem Dienstkonto zugeordnete Anmeldedaten. Die Dienstkontoschlüssel können dann manuell an Ihre Anwendung übergeben werden.
Dienstkonto erstellen
In den folgenden Schritten wird beschrieben, wie Sie ein Dienstkonto erstellen, wenn Sie noch keines haben:
Cloud Console
Erstellen Sie ein Dienstkonto:
-
Wechseln Sie in der Cloud Console zur Seite Dienstkonto erstellen.
Zur Seite „Dienstkonto erstellen“ - Wählen Sie ein Projekt aus.
-
Geben Sie im Feld Dienstkontoname einen Namen ein. In der Cloud Console wird das Feld Dienstkonto-ID anhand dieses Namens ausgefüllt.
Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel:
Service account for quickstart
. - Klicken Sie auf Erstellen.
-
Klicken Sie auf das Feld Rolle auswählen.
Klicken Sie unter Schnellzugriff auf Einfach und dann auf Inhaber.
- 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.
Dienstkontoschlüssel erstellen
- 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.
Befehlszeile
Sie können die folgenden Befehle mithilfe des Cloud SDK auf Ihrem lokalen Computer oder in Cloud Shell ausführen.
-
Erstellen Sie das Dienstkonto. Ersetzen Sie NAME mit einem Namen für das Dienstkonto.
gcloud iam service-accounts create NAME
-
Gewähren Sie dem Dienstkonto Berechtigungen. Geben Sie für PROJECT_ID Ihre Projekt-ID an.
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role="roles/owner"
-
Erstellen Sie die Schlüsseldatei. Geben Sie für FILE_NAME einen Namen für die Schlüsseldatei an.
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com
Anmeldedaten mit einer Umgebungsvariable übergeben
Die Anmeldedaten zur Authentifizierung für Ihren Anwendungscode geben Sie durch Festlegung der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS
an.
Geben Sie für [PATH] den Dateipfad der JSON-Datei an, die Ihren Dienstkontoschlüssel enthält. Diese Variable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable neu festlegen.
Linux oder macOS
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Beispiel:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
Windows
Mit PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Beispiel:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\my-key.json"
Mit Eingabeaufforderung:
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
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
Best Practices für die Verwaltung von Anmeldedaten
Anmeldedaten gewähren Zugriff auf sensible Daten. Mit den folgenden Vorgehensweisen können Sie Ihre Anmeldedaten vor unberechtigtem Zugriff schützen.
Betten Sie keine Secrets zur Authentifizierung im Quellcode ein, z. B. API-Schlüssel, OAuth-Tokens und Dienstkontoschlüssel. Verwenden Sie dafür eine Umgebungsvariable, die auf Anmeldedaten außerhalb des Quellcodes der Anwendung verweist, beispielsweise im Cloud Key Management Service.
Erstellen und verwenden Sie in verschiedenen Kontexten, z. B. in Test- und Produktionsumgebungen, unterschiedliche Anmeldedaten.
Übertragen Sie Anmeldedaten ausschließlich über einen sicheren Kanal wie HTTPS, um zu verhindern, dass Dritte Ihre Anmeldedaten abfangen. Übertragen Sie Anmeldedaten niemals im Klartext oder als Teil der URL.
Betten Sie niemals langlebige Anmeldedaten in Ihre clientseitige Anwendung ein. Beispielsweise dürfen Anmeldedaten eines Dienstkontos nicht in eine mobile App eingebettet werden. Clientseitige Anwendungen können ausgewertet und Anmeldedaten auf einfache Weise von Dritten ermittelt sowie angewendet werden.
Widerrufen Sie ein Token, wenn Sie es nicht mehr benötigen.
API-Fehler beheben
Weitere Informationen über die Fehlerbehandlung bei fehlgeschlagenen Anfragen in Fehlerbehebung für Cloud-APIs.
Weitere Informationen
- 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