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 | 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 | Zertifikatsdatei | |
|---|---|---|---|
apigee-non-prod |
roles/apigee.runtimeAgentroles/apigee.synchronizerManagerroles/apigeeconnect.Agentroles/logging.logWriterroles/monitoring.metricWriterroles/serviceusage.serviceUsageViewerroles/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 |
--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 |
--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 |
--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:
|
--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
Wenn Sie keine Projekt-ID mit dem Flag oder der Umgebungsvariable angeben, verwendet |
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.