Dienstkonten sind die Konten, die von Arbeitslasten oder Diensten verwendet werden, um Ressourcen programmatisch zu nutzen und sicher auf Microservices zuzugreifen. Sie sind eine spezielle Art von Identität, die von einer Anwendung oder Arbeitslast und nicht von einer Person verwendet wird. Ähnlich wie bei einem Nutzerkonto können Dienstkonten Berechtigungen und Rollen zugewiesen werden. Sie können sich jedoch nicht wie ein menschlicher Nutzer anmelden.
Dienstkonten sind nützlich für die Verwaltung von Google Distributed Cloud (GDC)-Infrastruktur ohne Internetverbindung, z. B.:
- Interne Distributed Cloud-Dienste und ‑Arbeitslasten für den sicheren Zugriff auf die Distributed Cloud-Steuerungsebene-API (Application Programming Interface). Beispielsweise interagieren Datenbankdienste mit den Kubernetes APIs, um Datenbanken zu erstellen und zu löschen.
- Kundenarbeitslasten in Distributed Cloud, um auf Distributed Cloud-Dienste zuzugreifen und autorisierte API-Aufrufe (Application Programming Interface) auszuführen. Dienstkonten können beispielsweise einen Kunden verwalten, der ein Vertex AI Workbench-Notebook verwendet, um Audiodateien mit der Speech-to-Text API zu transkribieren.
- Externe Arbeitslasten, die mit Distributed Cloud verbunden werden sollen. Dienstkonten können beispielsweise eine Anwendung außerhalb von Distributed Cloud verwalten, die Dokumente digitalisiert, aber die OCR API verwenden möchte, um die aktuelle OCR-Engine zu ersetzen.
- Distributed Cloud-Dienste oder Systemcontroller für den sicheren Zugriff auf Kundenressourcen oder Nutzercluster. Dienstkonten können beispielsweise Authentifizierungs- und Autorisierungsworkflows verwalten, bei denen die Dienstcontroller, die in Administratorclustern ausgeführt werden, Arbeitslasten in den von Kunden verwalteten Nutzerclustern ausführen müssen.
Sie können Konten über die GDC Console oder die gdcloud CLI verwalten. In der gcloud CLI basiert das Feature für Dienstkontoidentitäten auf der globalen ProjectServiceAccount
API. Da Dienstkonten global konfiguriert sind, funktionieren sie in allen Zonen in Ihrem gdcloud-Universum.
Hinweise
Sie können Dienstkonten nur innerhalb eines Projekts erstellen. Weitere Informationen zum Erstellen eines Projekts finden Sie unter Projekt erstellen.
Dienstidentität erstellen
Bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die Rolle „Projekt-IAM-Administrator“ (project-iam-admin
) zuzuweisen, um die Berechtigungen zu erhalten, die zum Erstellen von Dienstkonten erforderlich sind.
Nutzer mit Zugriff auf Dienstkonten können auf alle Dienstkonten in einem Projekt zugreifen.
Verwenden Sie zum Erstellen von Dienstkonten in einem Projekt die GDC Console oder die gdcloud CLI.
Console
- Melden Sie sich in der GDC-Konsole an.
- Wählen Sie im Navigationsmenü Identität & Zugriff > Dienstidentitäten aus.
- Klicken Sie auf Dienstidentität erstellen. Die Seite Details zur Dienstidentität wird geöffnet.
- Geben Sie im Feld Name der Dienstidentität einen Namen für die Dienstidentität ein. Beispiel:
testserviceidentity
- Klicken Sie auf Erstellen.
gdcloud
Dienstidentität erstellen:
gdcloud iam service-accounts create NAME \
--project=PROJECT
Ersetzen Sie die folgenden Werte:
- NAME: der Name des
ProjectServiceAccount
. Der Name muss innerhalb des Projektnamespace eindeutig sein. - PROJECT: Das Projekt, in dem die Dienstidentität erstellt werden soll. Wenn
gdcloud init
bereits festgelegt ist, lassen Sie das Flag--project
weg.
Mit diesem Befehl wird ein ProjectServiceAccount
im Projektnamespace auf dem Management API-Server erstellt.
API
Erstellen Sie eine YAML-Datei für die benutzerdefinierte Ressource vom Typ
ProjectServiceAccount
, z. B.my-project-sa.yaml
:apiVersion: resourcemanager.global.gdc.goog/v1 kind: ProjectServiceAccount metadata: name: NAME namespace: PROJECT spec: keys: - algorithm: ALGORITHM id: KEY_ID key: KEY validAfter: "START_TIME" validBefore: "EXPIRATION_TIME"
Ersetzen Sie die folgenden Variablen:
NAME
: der Name derProjectServiceAccount
-Ressource. Der Name muss innerhalb des Projekt-Namespace eindeutig sein.PROJECT
: Das Projekt, in dem die Dienstidentität erstellt werden soll.ALGORITHM
: Der Algorithmus des Schlüssels. Es werden nur ES256-Schlüssel unterstützt.KEY_ID
: die eindeutige Kennung des Schlüssels. Die ID wird verwendet, um zu bestimmen, welcher Schlüssel für die Überprüfung verwendet werden soll.KEY
: Der base64-codierte öffentliche Schlüssel, mit dem die Signatur verglichen werden soll.START_TIME
: Die Startzeit, ab der der Schlüssel gültig ist, z. B.2025-02-07T00:59:34Z
.EXPIRATION_TIME
: Die Ablaufzeit für den Schlüssel, z. B.2026-02-07T00:59:34Z
.
Wenden Sie die benutzerdefinierte Ressource
ProjectServiceAccount
auf den globalen API-Server an:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f my-project-sa.yaml
Ersetzen Sie die Variable
GLOBAL_API_SERVER_KUBECONFIG
durch den Pfad zur kubeconfig-Datei für den globalen API-Server.
Dienstidentitäten ansehen
Wenn Sie eine Liste der Dienstkonten in einem Projekt aufrufen möchten, verwenden Sie die GDC Console oder die gdcloud CLI.
Console
- Melden Sie sich in der GDC-Konsole an.
- Wählen Sie ein Projekt aus.
- Klicken Sie im Navigationsmenü auf Identität & Zugriff > Dienstidentitäten, um die Liste der Dienstkonten für das Projekt aufzurufen.
gdcloud
Dienstkonten in einem Projekt auflisten:
gdcloud iam service-accounts list \
--project=PROJECT
Der Dienstidentität eine Rollenbindung zuweisen
Zum Zuweisen einer Rollenbindung benötigen Sie die entsprechenden Berechtigungen. Bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die Rolle „Projekt-IAM-Administrator“ (project-iam-admin
) zuzuweisen, um die Berechtigungen zu erhalten, die zum Zuweisen von Rollen erforderlich sind.
Sie können entweder die GDC Console oder die gdcloud CLI verwenden, um eine Rollenbindung zuzuweisen.
Console
- Melden Sie sich in der GDC-Konsole an.
- Wählen Sie ein Projekt aus.
- Wählen Sie im Navigationsmenü Identität & Zugriff > Zugriff aus.
- Klicken Sie in der Liste Mitglied auf Mitglied hinzufügen. Die Seite Nutzer und Rollen wird angezeigt.
- Wählen Sie in der Liste Mitgliedstyp die Option Dienstidentität aus.
- Wählen Sie in der Liste Dienstidentität die Dienstidentität aus, der Sie eine Rollenbindung zuweisen möchten.
- Wählen Sie in der Liste Rolle die Rolle aus, die Sie der Dienstidentität zuweisen möchten, z. B. Backup Creator (Backup-Ersteller).
- Optional: Wenn Sie eine weitere Rolle hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen. Wählen Sie die zusätzliche Rolle aus.
- Klicken Sie auf Hinzufügen.
gdcloud
Mit diesem Befehl wird die Projektrollenbindung erstellt und benannt, um die angegebene Rolle mit ProjectServiceAccount
auf dem Management API-Server zu binden:
gdcloud iam service-accounts add-iam-policy-binding \
--project=PROJECT \
--role=ROLE \
--role-namespace=ROLE_NAMESPACE \
--iam-account=NAME
Ersetzen Sie die folgenden Werte:
- PROJECT: das Projekt, in dem die Rollenbindung erstellt werden soll.
Wenn
gdcloud init
bereits festgelegt ist, können Sie das Flag--project
weglassen. - ROLE: Die vordefinierte Rolle, die dem
ProjectServiceAccount
zugewiesen werden soll. Geben Sie Rollen im FormatRole/name
an, wobei Role der Kubernetes-TypIAMRole
und name der Name der vordefinierten Rolle ist. Wenn Sie beispielsweise die Rolle „Projektbetrachter“ zuweisen möchten, legen Sie die Rolle aufIAMRole/project-viewer
fest. - ROLE_NAMESPACE: der Namespace der Rolle, die an das Dienstkonto gebunden werden soll. Dies gilt nur, wenn Ihr Universum mehrere Zonen hat.
- NAME: Der Name der zu verwendenden Dienstidentität.
Dienstidentität löschen
Wenn Sie Dienstkonten in einem Projekt löschen möchten, verwenden Sie die GDC Console oder die gdcloud CLI.
Console
- Melden Sie sich in der GDC-Konsole an.
- Wählen Sie im Navigationsmenü Identität & Zugriff > Dienstidentitäten aus.
- Klicken Sie das Kästchen neben der Dienstidentität an, die Sie löschen möchten.
- Klicken Sie auf Löschen.
- Das Bestätigungsdialogfeld wird angezeigt. Geben Sie im Feld Bestätigen Sie das Löschen durch folgende Eingabe den Wert
remove
ein. - Klicken Sie auf Löschen.
gdcloud
Führen Sie den folgenden Befehl aus, um eine Dienstidentität zu löschen:
gdcloud iam service-accounts delete NAME \
--project=PROJECT
Schlüsselpaare erstellen und hinzufügen
Verwenden Sie die GDC Console oder die gdcloud CLI, um Schlüsselpaare in einem Projekt zu erstellen und hinzuzufügen.
Console
- Melden Sie sich in der GDC-Konsole an.
- Wählen Sie im Navigationsmenü Identität & Zugriff > Dienstidentitäten aus.
- Klicken Sie auf den Namen der Dienstidentität, die Sie dem Schlüssel hinzufügen möchten.
- Klicken Sie auf Neuen Schlüssel erstellen.
- Der neue Schlüssel wird in der Liste Schlüssel angezeigt und in einem Dialogfeld wird bestätigt, dass Sie den Schlüssel erfolgreich erstellt haben.
gdcloud
Mit diesem Befehl werden die JSON-Datei mit den Standardanmeldedaten für die Anwendung sowie die öffentlichen und privaten Schlüsselpaare erstellt:
gdcloud iam service-accounts keys create APPLICATION_DEFAULT_CREDENTIALS_FILENAME \
--project=PROJECT \
--iam-account=NAME \
--ca-cert-path=CA_CERTIFICATE_PATH
Ersetzen Sie die folgenden Werte:
- APPLICATION_DEFAULT_CREDENTIALS_FILENAME: der Name der JSON-Datei.
- PROJECT : Wählt das Projekt aus, für das der Schlüssel erstellt werden soll.
Wenn
gdcloud init
bereits festgelegt ist, können Sie das Flag--project
weglassen. - NAME: Der Name der Dienstidentität, für die der Schlüssel hinzugefügt werden soll.
- CA_CERTIFICATE_PATH (optional): Der Zertifikatspfad der Zertifizierungsstelle (Certificate Authority, CA) zum Überprüfen des Authentifizierungsendpunkts. Wenn Sie diesen Pfad nicht angeben, werden die CA-Zertifikate des Systems verwendet. Sie müssen die CA in den System-CA-Zertifikaten installieren.
Distributed Cloud fügt den öffentlichen Schlüssel den ProjectServiceAccount
-Schlüsseln hinzu, die Sie zum Überprüfen der JSON-Webtokens (JWTs) verwenden, die mit dem privaten Schlüssel signiert werden. Der private Schlüssel wird in die JSON-Datei mit den Standardanmeldedaten der Anwendung geschrieben.
Das folgende Beispiel zeigt die JSON-Datei für die Standardanmeldedaten der Anwendung:
{
"type": "gdch_service_account",
"format_version": "1",
"project": "project_name",
"private_key_id": "abcdef1234567890",
"private_key": "-----BEGIN RSA PRIVATE KEY-----\nETC\n-----END RSA PRIVATE KEY-----\n",
"name": "service_identity_name",
"ca_cert_path": "service_identity_name",
"token_uri": "https://service-identity.<Domain>/authenticate"
}
In diesem Beispiel werden die folgenden Werte verwendet:
project
: der Projekt-Namespace in der Organisation.private_key_id
: die dem Schlüssel zugewiesene ID.private_key
: Der private Schlüssel, den die CLI generiert.name
: der Name der Dienstidentität.token_uri
: die Adresse des Authentifizierungsendpunkts.
Anmeldedaten für Dienstkonten auflisten
Öffentliche Schlüssel aus einem bestimmten ProjectServiceAccount
im Projekt auflisten:
gdcloud iam service-accounts keys list \
--project=PROJECT \
--iam-account=NAME
Anmeldedaten löschen
Verwenden Sie zum Löschen des öffentlichen Schlüssels die GDC Console oder die gdcloud CLI.
Console
- Melden Sie sich in der GDC-Konsole an.
- Wählen Sie im Navigationsmenü Identität & Zugriff > Dienstidentitäten aus.
- Klicken Sie auf den Namen der Dienstidentität, die den Schlüssel enthält, den Sie löschen möchten.
- Klicken Sie auf Löschen.
- Klicken Sie im Bestätigungsdialogfeld auf Löschen.
gdcloud
Entfernen Sie den öffentlichen Schlüssel mit der Schlüssel-ID aus dem entsprechenden ProjectServiceAccount
im Projekt:
gdcloud iam service-accounts keys delete KEY_ID \
--project=PROJECT \
--iam-account=NAME