create-service-account

create-service-account-Übersicht

create-service-account ist ein Befehlszeilentool, das mit Apigee Hybrid bereitgestellt wird. Es erstellt Google Cloud- Dienstkonten mit Rollen, die es einzelnen Apigee Hybridkomponenten ermöglichen, autorisierte API-Aufrufe durchzuführen und die verknüpften Dienstkonto-Schlüsseldateien herunterzuladen. Sie können die von diesem Befehl generierten Dienstkonto-Schlüsseldateien in Ihrer Konfigurationsdatei verwenden.

create-service-account erstellt ein oder mehrere Dienstkonten in Ihrem aktuellen Google Cloud-Projekt oder im angegebenen Projekt und weist die richtige IAM-Rolle dem Dienstkonto zu und lädt die Zertifikatsdatei für das Dienstkonto in ein Verzeichnis auf Ihrem lokalen Computer herunter.

Weitere Informationen zu Dienstkonten und die vollständige Liste der Dienstkonten, die für Produktionsumgebungen empfohlen werden, finden Sie hier:

Sie können Dienstkonten auch in der Google Cloud Console erstellen. Weitere Informationen finden Sie unter Dienstkonten erstellen und verwalten.

Voraussetzungen

Rolle

Für das create-service-account-Tool muss die gcloud-Befehlszeile installiert sein. Nutzer, die das Dienstprogramm aufrufen, sollten die Rolle Service Account Admin haben.

Projekt

Dienstkonten sind an ein bestimmtes Google Cloud-Projekt gebunden. create-service-account erstellt Dienstkonten in Ihrem aktuellen Projekt oder in dem von Ihnen angegebenen Projekt und bindet die IAM-Rollen an die Dienstkonten in diesem Projekt. create-service-account verwendet die Projekt-ID auch als Teil des Dienstkonto-Schlüsseldateienamens und der E-Mail-Adresse. Wenn Ihr Projekt beispielsweise den Namen my-hybrid-project hat, erhält die Dienstkontoschlüsseldatei von Apigee Logger den Namen my-hybrid-project-apigee-logger.json und die E-Mail-Adresse des Dienstkontos lautet apigee-logger@my-hybrid-project.iam.gserviceaccount.com.

Sie können ein Projekt angeben, indem Sie eine Umgebungsvariable PROJECT_ID definieren oder das Flag --project-id verwenden. Wenn beide festgelegt sind, hat das Flag --project-id Vorrang vor der Umgebungsvariable PROJECT_ID und create-service-account protokolliert eine [WARNING]. In allen Fällen protokolliert das Tool, aus welcher Quelle die Projekt-ID gelesen wurde, und gibt den aufgelösten Bereitstellungstyp, das Projekt und das Ausgabeverzeichnis aus, bevor Dienstkonten erstellt werden.

Wenn Sie keine Cloud-Projekt-ID angeben, verwendet create-service-account das Projekt in Ihrer aktuellen gcloud-Projektkonfiguration.

Mit dem folgenden Befehl können Sie die aktuelle gcloud-Projektkonfiguration prüfen:

gcloud config list project

Wenn Sie die aktuelle Projekt-ID ändern müssen, verwenden Sie den folgenden Befehl:

gcloud config set project PROJECT_ID

Dabei gilt: PROJECT_ID ist die ID Ihres aktuellen Cloud-Projekts. Eine Anleitung zum Erstellen eines Cloud-Projekts finden Sie unter Schritt 2: Google Cloud-Projekt erstellen.

Dateispeicherort

Sie finden das create-service-account-Tool im folgenden Verzeichnis:

$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/

Prüfen, ob das Tool create-service-account ausführbar ist

Prüfen Sie, ob Sie create-service-account ausführen können. Wenn Sie gerade die Apigee Helm-Diagramme heruntergeladen haben, befinden sich die Befehlszeilentools möglicherweise nicht in einem ausführbaren Modus. Wechseln Sie in das Verzeichnis, in dem create-service-account installiert ist, und prüfen Sie, ob es ausführbar ist. Führen Sie es dazu mit --help aus:

./create-service-account --help

Wenn in der Ausgabe permission denied angegeben ist, müssen Sie die Datei ausführbar machen, z. B. mit chmod in Linux, MacOS oder UNIX oder im Windows Explorer oder mit dem Befehl icacls in Windows Beispiel:

chmod +x ./create-service-account

create-service-account verwenden

Die folgenden Beispiele zeigen, wie create-service-account für gängige Apigee-Hybrid-Einrichtungsaufgaben verwendet wird.

Dienstkonten für eine Produktionsumgebung erstellen

In einer Hybridumgebung in einer Produktionsumgebung empfiehlt Apigee, für jede Komponente ein separates Dienstkonto zu verwenden. Verwenden Sie den folgenden Befehl, um alle Dienstkonten für die Hybrid-Komponenten mit ihren Standardnamen im Standardverzeichnis zu erstellen.

./tools/create-service-account --prod

Es werden die folgenden Dienstkonten mit den Zertifikatsdateien erstellt, die in das Verzeichnis ./tools/service-accounts heruntergeladen wurden:

Dienstkonto IAM-Rolle E-Mail Zertifikatsdatei
apigee-cassandra roles/storage.objectAdmin apigee-cassandra@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-cassandra.json
apigee-guardrails roles/serviceusage.serviceUsageViewer apigee-guardrails@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-guardrails.json
apigee-logger roles/logging.logWriter apigee-logger@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-logger.json
apigee-mart roles/apigeeconnect.Agent apigee-mart@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-mart.json
apigee-metrics roles/monitoring.metricWriter apigee-metrics@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-metrics.json
apigee-mint-task-scheduler Keine Rolle zugewiesen apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-mint-task-scheduler.json
apigee-runtime Keine Rolle zugewiesen apigee-runtime@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-runtime.json
apigee-synchronizer roles/apigee.synchronizerManager apigee-synchronizer@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-synchronizer.json
apigee-watcher roles/apigee.runtimeAgent apigee-watcher@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-watcher.json

Einzelnes Dienstkonto für eine Nicht-Produktionsumgebung erstellen

Für Umgebungen, die keine Produktionsumgebungen sind, z. B. eine Test- oder Demoumgebung, können Sie ein einzelnes Dienstkonto mit dem Namen „apigee-non-prod“ erstellen, das Sie für alle Komponenten verwenden können. Diesem Dienstkonto werden alle IAM-Rollen aus dem vorherigen Beispiel zugewiesen.

./tools/create-service-account --non-prod

Dadurch wird ein einzelnes Dienstkonto mit dem Namen apigee-non-prod erstellt und die Zertifikatsdatei in das Verzeichnis ./tools/service-accounts heruntergeladen:

Dienstkonto IAM-Rollen E-Mail Zertifikatsdatei
apigee-non-prod roles/apigee.runtimeAgent
roles/apigee.synchronizerManager
roles/apigeeconnect.Agent
roles/logging.logWriter
roles/monitoring.metricWriter
roles/serviceusage.serviceUsageViewer
roles/storage.objectAdmin
apigee-non-prod@PROJECT_ID.iam.gserviceaccount.com PROJECT_ID-apigee-non-prod.json

Einzelnem Produktionsdienstkonto einen benutzerdefinierten Namen geben

Standardmäßig wird ein einzelnes Produktionsdienstkonto nach dem von Ihnen ausgewählten unterstützten Dienstkontonamen benannt. Mit --prod apigee-cassandra wird beispielsweise ein Dienstkonto mit dem Namen apigee-cassandra erstellt. Wenn Sie einem einzelnen Produktionsdienstkonto einen anderen Namen geben möchten, ohne die IAM-Rolle zu ändern, fügen Sie das Flag --name (oder das Alias -n) hinzu:

./tools/create-service-account --prod apigee-cassandra --name my-cassandra-sa

Dadurch wird ein Produktionsdienstkonto mit dem Namen my-cassandra-sa mit der IAM-Rolle apigee-cassandra (roles/storage.objectAdmin) erstellt. Die IAM-Rolle stammt immer aus dem Dienstkontonamen, den Sie an --prod übergeben. --name ändert nur den Namen des Kontos.

create-service-account syntax

Das create-service-account-Tool verwendet die folgende Syntax:

create-service-account [flags] 

In der folgenden Tabelle sind die Flags create-service-account aufgeführt:

Flag Werte Beschreibung
--dir
-d
Verzeichnisname Gibt ein Ausgabeverzeichnis für die Dienstkontoschlüsseldateien an. Wenn das Verzeichnis nicht vorhanden ist, wird es von create-service-account erstellt. Wenn das Verzeichnis bereits vorhanden ist, überschreibt create-service-account alle Dateien im Verzeichnis, die denselben Namen wie die erstellten Schlüsseldateien haben.

Wenn Sie kein Ausgabeverzeichnis angeben, schreibt create-service-account die Dienstkontodateien in das Verzeichnis service-accounts/ innerhalb des Verzeichnisses, in dem sich create-service-account befindet.

--prod Name des Dienstkontos
(optional)
Erstellt Dienstkonten für eine hybride Produktionsumgebung. Dies ist die Standardeinstellung: Wenn Sie create-service-account ohne Flag für den Bereitstellungstyp ausführen, wird so verfahren, als ob --prod übergeben wurde.

In einer Produktionsumgebung wird empfohlen, dass Sie für jeden Apigee-Dienst ein einziges Dienstkonto haben. Jedem erstellten Dienstkonto ist eine einzelne IAM-Rolle zugeordnet.

Wenn Sie create-service-account --prod ohne Dienstkontonamen ausführen, werden alle von Apigee Hybrid verwendeten Dienstkonten erstellt. Wenn Sie nur ein einzelnes Produktions-Dienstkonto erstellen möchten, übergeben Sie dessen Namen, z. B. --prod apigee-cassandra. Die unterstützten Namen von Dienstkonten für die Produktionsumgebung sind in der Tabelle mit Dienstkonten weiter oben auf dieser Seite unter Dienstkonten für eine Produktionsumgebung erstellen aufgeführt.

--non-prod Name des Dienstkontos
(optional)
Erstellt ein einzelnes Dienstkonto mit allen daran angebundenen IAM-Rollen. Dies ist nützlich für Nicht-Produktionsumgebungen wie eine Test- oder Demoinstallation.

Das Dienstkonto heißt apigee-non-prod, sofern Sie keinen Namen wie --non-prod my-account übergeben.

--name
-n
Name des Dienstkontos Ändert nur den Namen des erstellten Dienstkontos, nicht die IAM-Rollen, die es erhält. Die Rollen werden weiterhin durch den Bereitstellungstyp und für ein einzelnes Produktionsdienstkonto durch SA_NAME bestimmt.

Die Vorrangregeln hängen vom Bereitstellungstyp ab:

  • --prod SA_NAME --name NAME erstellt ein einzelnes Produktionsdienstkonto mit dem Namen NAME und der IAM-Rolle SA_NAME. So können Sie einem Produktions-Dienstkonto einen anderen Namen als SA_NAME geben.
  • --prod --name NAME ohne SA_NAME ist ein Fehler: Ohne Dienstkontonamen erstellt --prod ein separates Dienstkonto für jeden unterstützten Produktionsdienstkontonamen. Ein einzelnes --name wäre also mehrdeutig. Verwenden Sie --prod SA_NAME --name NAME, um ein einzelnes Produktions-Dienstkonto umzubenennen.
  • --non-prod SA_NAME --name NAME: --name hat Vorrang. Das Tool protokolliert eine [WARNING], dass sowohl ein Positionsname als auch --name angegeben wurden, und benennt das einzelne Nicht-Produktions-Dienstkonto NAME.
  • --non-prod --name NAME ist der Name des einzelnen Nicht-Produktionsdienstkontos NAME.
--skip-key-download – Erstellt die Dienstkonten und weist ihnen die IAM-Rollen zu, lädt aber nicht die JSON-Schlüsseldateien herunter. Verwenden Sie dieses Flag, wenn Sie die Schlüsseldateien nicht benötigen, z. B. bei den Authentifizierungsmethoden von Workload Identity Federation for GKE.
--help
-h
– Zeigt den Hilfetext an.
‑‑project‑id
-i
project id Die Projekt-ID des Google Cloud-Projekts, in dem Sie die Dienstkonten erstellen.

Sie können die Projekt-ID entweder mit dem Flag --project-id oder durch Exportieren einer Umgebungsvariable PROJECT_ID angeben. Wenn beide festgelegt sind, hat das Flag --project-id Vorrang vor der Umgebungsvariable PROJECT_ID und create-service-account protokolliert eine [WARNING]. In allen Fällen wird im Tool protokolliert, aus welcher Quelle die Projekt-ID gelesen wurde.

Wenn Sie keine Projekt-ID mit dem Flag oder der Umgebungsvariable angeben, verwendet create-service-account die ID des Projekts in der aktuellen gcloud-Konfiguration.

Weitere Informationen zu den von Apigee Hybrid verwendeten Dienstkonten finden Sie unter Informationen zu Dienstkonten.

Sie können Dienstkonten auch in der Google Cloud Console erstellen. Weitere Informationen finden Sie unter Dienstkonten erstellen und verwalten.