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 aber nicht wie ein menschlicher Nutzer anmelden.
Dienstkonten sind nützlich für die Verwaltung der Google Distributed Cloud (GDC)-Appliance-Infrastruktur, die nicht mit dem Internet verbunden ist, z. B.:
- Interne GDC-Appliance-Dienste und -Arbeitslasten, um sicher auf die GDC-Appliance-Steuerungsebene-API zuzugreifen.
- Kundenarbeitslasten in der GDC-Appliance, um auf GDC-Appliance-Dienste zuzugreifen und autorisierte API-Aufrufe auszuführen.
- Externe Arbeitslasten, um sich mit der GDC-Appliance zu verbinden.
- GDC-Appliance-Dienste oder Systemcontroller, um sicher auf Kundenressourcen zuzugreifen. Dienstkonten können beispielsweise Authentifizierungs- und Autorisierungsworkflows verwalten, bei denen die Dienstcontroller, die im Bare-Metal-Kubernetes-Cluster ausgeführt werden, von Kunden verwaltete Arbeitslasten ausführen müssen.
Sie können Konten über die GDC Console, die gdcloud CLI oder die API verwalten. In der gdcloud CLI basiert die Funktion für Dienstidentitäten auf der ProjectServiceAccount API.
Hinweis
Sie können Dienstkonten nur in einem Projekt erstellen. Weitere Informationen 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 die GDC Console, die gdcloud CLI oder die API, um Dienstidentitäten in einem Projekt zu erstellen.
Console
- Melden Sie sich in der GDC Console 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:
Test service identity. - Klicken Sie auf Erstellen.
gdcloud
So erstellen Sie eine Dienstidentität:
gdcloud iam service-accounts create NAME \
--project=PROJECT
Ersetzen Sie die folgenden Werte:
- NAME: der Name von
ProjectServiceAccount. Der Name muss innerhalb des Projektnamespaces eindeutig sein. - PROJECT: das Projekt, in dem die Dienst
identität erstellt werden soll. Wenn
gdcloud initbereits festgelegt ist, lassen Sie das--projectFlag weg.
Mit diesem Befehl wird ein ProjectServiceAccount im Projektnamespace erstellt.
API
Erstellen Sie eine YAML-Datei für die benutzerdefinierte Ressource
ProjectServiceAccount, z. B.my-project-sa.yaml:apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectServiceAccount metadata: name: NAME namespace: PROJECT spec: keys: - algorithm: ALGORITHM id: KEY_ID key: BASE64_ENCODED_KEY validAfter: "START_TIME" validBefore: "EXPIRATION_TIME"Ersetzen Sie die folgenden Variablen:
NAME: der Name der RessourceProjectServiceAccount. Der Name muss innerhalb des Projektnamespaces 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, mit welchem Schlüssel die Überprüfung erfolgen soll.BASE64_ENCODED_KEY: der base64-codierte öffentliche Schlüssel im PEM-Format, mit dem die Überprüfung erfolgen soll. Der private Schlüssel, der zum Generieren dieses öffentlichen Schlüssels verwendet wird, muss das ECDSA P256 PEM-Format haben.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
ProjectServiceAccountauf den Management API-Server an:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f my-project-sa.yamlErsetzen Sie die Variable
MANAGEMENT_API_SERVER_KUBECONFIGdurch den Pfad zur kubeconfig-Datei für den Management API-Server.
Dienstidentitäten ansehen
Verwenden Sie die GDC Console oder die gdcloud CLI, um eine Liste der Dienstkonten in einem Projekt aufzurufen.
Console
- Melden Sie sich in der GDC Console 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
So listen Sie die Dienstkonten in einem Projekt auf:
gdcloud iam service-accounts list \
--project=PROJECT
Rollenbindung der Dienstidentität 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.
Verwenden Sie die GDC Console oder die gdcloud CLI, um eine Rollenbindung zuzuweisen.
Console
- Melden Sie sich in der GDC Console 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-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 Rollenbindung für das Projekt erstellt und benannt, um die angegebene Rolle mit dem ProjectServiceAccount zu verknüpfen:
gdcloud iam service-accounts add-iam-policy-binding \
--project=PROJECT \
--role=ROLE \
--iam-account=NAME
Ersetzen Sie die folgenden Werte:
- PROJECT: das Projekt, in dem die Rollenbindung erstellt werden soll.
Wenn
gdcloud initbereits festgelegt ist, können Sie das--projectFlag weglassen. - ROLE: die vordefinierte Rolle, die dem
ProjectServiceAccountzugewiesen werden soll. Geben Sie Rollen im FormatRole/namean, wobei Role der Kubernetes-Typ ist, z. B.RoleoderProjectRole, und name der Name der vordefinierten Rolle. Wenn Sie beispielsweise die Rolle „Projektbetrachter“ zuweisen möchten, legen Sie die Rolle aufRole/project-viewerfest. - NAME: der Name der zu verwendenden Dienstidentität.
Dienstidentität löschen
Verwenden Sie die GDC Console oder die gdcloud CLI, um Dienstkonten in einem Projekt zu löschen.
Nachdem Sie eine Dienstidentität gelöscht haben, haben Anwendungen über diese Dienstidentität keinen Zugriff mehr auf Projektressourcen.
Console
- Melden Sie sich in der GDC Console an.
- Wählen Sie im Navigationsmenü Identität & Zugriff > Dienstidentitäten aus.
- Klicken Sie auf das Kästchen neben der Dienstidentität, die Sie löschen möchten.
- Klicken Sie auf Löschen.
- Das Bestätigungsdialogfeld wird angezeigt. Geben Sie im Feld Bestätigen Sie, indem Sie Folgendes eingeben
removeein. - 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, die gdcloud CLI oder die API, um Schlüsselpaare in einem Projekt zu erstellen und hinzuzufügen.
Console
- Melden Sie sich in der GDC Console 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 ein Dialogfeld bestätigt, dass Sie den Schlüssel erfolgreich erstellt haben.
gdcloud
Mit dem Befehl gdcloud werden die JSON-Datei mit den Standardanmeldedaten der 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 initbereits festgelegt ist, können Sie das Flag--projectweglassen. - NAME: der Name der Dienstidentität, für die der Schlüssel hinzugefügt werden soll.
- CA_CERTIFICATE_PATH: Optional: der Pfad zum Zertifikat der Zertifizierungsstelle , um den Authentifizierungsendpunkt zu überprüfen. Wenn Sie diesen Pfad nicht angeben, werden die System-CA-Zertifikate verwendet. Sie müssen die Zertifizierungsstelle in den System-CA-Zertifikaten installieren.
Die GDC-Appliance fügt den öffentlichen Schlüssel den ProjectServiceAccount-Schlüsseln hinzu, mit denen Sie die JSON-Webtokens (JWT) überprüfen, die mit dem privaten Schlüssel signiert wurden. Der private Schlüssel wird in die JSON-Datei mit den Standardanmeldedaten der Anwendung geschrieben.
Das folgende Beispiel zeigt die JSON-Datei mit den Standardanmeldedaten der Anwendung:
{
"type": "gdch_service_account",
"format_version": "1",
"project": "project_name",
"private_key_id": "abcdef1234567890",
"private_key": "-----BEGIN PRIVATE KEY-----\nETC\n-----END 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 Projektnamespace in der Organisation.private_key_id: die dem Schlüssel zugewiesene ID.private_key: der private ECDSA P256-Schlüssel im PEM-Format, der von der CLI generiert wird.name: der Name der Dienstidentität.token_uri: die Adresse des Authentifizierungsendpunkts.
API
Generieren Sie das Schlüsselpaar aus öffentlichem und privatem Schlüssel. In den folgenden Befehlen wird
opensslals Beispiel verwendet. Dies ist ein gängiges Tool für diesen Zweck.openssl ecparam -name prime256v1 -genkey -noout -out "key.pem" openssl ec -in "key.pem" -pubout > "pub.pem"Base64-codieren Sie den öffentlichen Schlüssel und rufen Sie die Schlüssel-ID ab:
KEY_ID=$(openssl pkey -in key.pem -pubout -outform der | openssl dgst -sha256 | sed 's/^.* //') BASE64_ENCODED_KEY=$(cat pub.pem | base64)Erstellen oder aktualisieren Sie die YAML-Datei für die benutzerdefinierte Ressource
ProjectServiceAccount, einschließlich der generierten Schlüsselinformationen aus dem vorherigen Schritt:apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectServiceAccount metadata: name: NAME namespace: PROJECT spec: keys: - algorithm: ALGORITHM id: KEY_ID key: BASE64_ENCODED_KEY validAfter: "START_TIME" validBefore: "EXPIRATION_TIME"Ersetzen Sie die folgenden Variablen:
NAME: der Name der RessourceProjectServiceAccount. Der Name muss innerhalb des Projektnamespaces eindeutig sein.PROJECT: das Projekt, in dem Sie den Schlüssel erstellen.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, mit welchem Schlüssel die Überprüfung erfolgen soll.BASE64_ENCODED_KEY: der base64-codierte öffentliche Schlüssel im PEM-Format, mit dem die Überprüfung erfolgen soll. Der private Schlüssel, der zum Generieren dieses öffentlichen Schlüssels verwendet wird, muss das ECDSA P256 PEM-Format haben.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
ProjectServiceAccountauf den Management API-Server an:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f my-project-sa.yamlErsetzen Sie die Variable
MANAGEMENT_API_SERVER_KUBECONFIGdurch den Pfad zur kubeconfig-Datei für den Management API-Server.Erstellen Sie die JSON-Datei mit den Standardanmeldedaten der Anwendung, die den privaten Schlüssel enthält. Achten Sie darauf, dass die Variable
KEY_IDin der JSON-Datei auf denselben Wert wie die VariableKEY_IDin derProjectServiceAccount-Spezifikation festgelegt ist.cat <<EOF > "key_file.json" { "format_version": "1", "name": "NAME", "private_key": "$(tr '\n' '\t' < "key.pem" | sed 's/\t/\\n/g')", "private_key_id": "KEY_ID", "project": "PROJECT", "token_uri": "AUTH_URL", "type": "gdch_service_account" } EOFErsetzen Sie die folgenden Variablen:
NAME: der Name der Dienstidentität.KEY_ID: die eindeutige Kennung des Schlüssels. Die ID wird verwendet, um zu bestimmen, mit welchem Schlüssel die Überprüfung erfolgen soll. Sie muss mit dem WertKEY_IDübereinstimmen, der in derProjectServiceAccount-Spezifikation verwendet wird.PROJECT: der Projektnamespace in der Organisation.AUTH_URL: die Adresse des Authentifizierungsendpunkts.
Fügen Sie dem Projekt das Schlüsselpaar hinzu, indem Sie das Dienstkonto aktivieren:
gdcloud auth activate-service-account –-key-file=key_file.json
Anmeldedaten für Dienstkonten auflisten
Listen Sie die öffentlichen Schlüssel aus einem bestimmten ProjectServiceAccount im Projekt auf:
gdcloud iam service-accounts keys list \
--project=PROJECT \
--iam-account=NAME
Anmeldedaten löschen
Verwenden Sie die GDC Console oder die gdcloud CLI, um den öffentlichen Schlüssel zu löschen.
Console
- Melden Sie sich in der GDC Console 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 angegebenen ProjectServiceAccount im Projekt:
gdcloud iam service-accounts keys delete KEY_ID \
--project=PROJECT \
--iam-account=NAME
Dienstkonto mit einem Dienstkontoschlüssel autorisieren
Sie können den Befehl gdcloud verwenden, um ein Dienstkonto mit einem Dienstkontoschlüssel zu aktivieren:
Erstellen Sie eine Dienstkontoschlüsseldatei, falls Sie noch keine haben.
Führen Sie den folgenden Befehl aus, um das Dienstkonto zu aktivieren:
gdcloud auth activate-service-account --key-file=KEY_FILEErsetzen Sie KEY_FILE durch den Pfad zur Dienstkonto Schlüsseldatei.
Nachdem Sie das Dienstkonto aktiviert haben, verwendet
gdclouddie Anmeldedaten des Dienstkontos für nachfolgende Befehle anstelle Ihrer Nutzeranmeldedaten.