Diese Seite gilt für Apigee, aber nicht für Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
In diesem Dokument wird beschrieben, wie Sie Apigee über die Befehlszeile mit VPC-Peering installieren und konfigurieren. Diese Schritte gelten sowohl für Abo- als auch für „Pay as you go“-Preismodelle für bezahlte Organisationen mit oder ohne aktiviertem Datenstandort.
Zusammenfassung der Schritte
Dazu sind folgende Schritte erforderlich:
- Schritt 1: Umgebungsvariablen definieren: Richten Sie
gcloud
ein und definieren Sie Umgebungsvariablen. Die Google Cloud CLI verwaltet Authentifizierung, lokale Konfiguration, Entwickler-Workflow und Interaktionen mit den Google Cloud APIs. - Schritt 2: APIs aktivieren: Für Apigee müssen Sie mehrere Google Cloud APIs aktivieren.
- Schritt 3: Apigee-Dienstidentität erstellen: Dieses Dienstkonto wird von den Google Cloud-Clientbibliotheken zur Authentifizierung bei Google Cloud APIs verwendet.
- Schritt 4: Dienstnetzwerk konfigurieren: Das Dienstnetzwerk automatisiert die Einrichtung privater Verbindungen (mit VPC-Netzwerk-Peering) zwischen Ihrem Netzwerk und Apigee.
- Schritt 5: Organisation erstellen: Eine Apigee-Organisation (manchmal auch als Org bezeichnet) ist der oberste Container in Apigee. Sie enthält alle Umgebungen und Umgebungsgruppen, Nutzer, API-Proxys und zugehörigen Ressourcen.
- Schritt 6 Laufzeitinstanz erstellen: Eine Instanz oder Laufzeit, in der Ihr Projekt und die zugehörigen Dienste gespeichert sind. Er stellt den nutzerseitigen Endpunkt für Ihre Dienste bereit.
- Schritt 7: Umgebung erstellen: Ein API-Proxy muss in einer Umgebung bereitgestellt und einer Umgebungsgruppe hinzugefügt werden, bevor die APIs über das Netzwerk zugänglich sind.
- Schritt 8: Routing konfigurieren: Erlauben Sie den externen Zugriff oder den internen Zugriff auf Ihre API.
- Schritt 9: Beispielproxy bereitstellen: Testen Sie die Bereitstellung. Stellen Sie dazu einen API-Proxy bereit und rufen Sie ihn auf.
Schritt 1: Umgebungsvariablen definieren
Richten Sie gcloud
ein und definieren Sie Umgebungsvariablen zur Verwendung in späteren Schritten:
- Prüfen Sie, ob die unter Vorbereitung aufgeführten Einrichtungsanforderungen erfüllt sind.
- Das Cloud SDK muss installiert sein. Weitere Informationen zur Installation finden Sie unter Cloud SDK installieren.
- Initialisieren Sie das Cloud SDK, wie unter gcloud CLI initialisieren beschrieben, oder achten Sie darauf, dass das unter Voraussetzungen erstellte Google Cloud-Projekt das Standardprojekt für
gcloud
ist. - Definieren Sie in Ihrem Befehlsterminal die folgenden Umgebungsvariablen:
Wählen Sie den Tab aus, der dem Typ der benötigten Organisation entspricht: Kein Datenstandort oder
Datenstandort
Kein Datenstandort
AUTH="$(gcloud auth print-access-token)"
PROJECT_ID="YOUR_PROJECT_ID"
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
ANALYTICS_REGION="YOUR_ANALYTICS_REGION"
BILLING_TYPE="YOUR_BILLING_TYPE"
Dabei gilt:
-
AUTH definiert den Header
Authentication
mit einem Inhabertoken. Dieser Header wird beim Aufrufen von Apigee APIs verwendet. Beachten Sie, dass das Token nach einer gewissen Zeit abläuft. Wenn dies der Fall ist, können Sie es einfach mit demselben Befehl neu generieren. Weitere Informationen finden Sie auf der Referenzseite für den Befehl print-access-token. - PROJECT_ID ist die Cloud-Projekt-ID, die Sie als eine der Voraussetzungen erstellt haben.
- PROJECT_NUMBER ist die Cloud-Projektnummer, die Sie unter Voraussetzungen erstellt haben.
-
RUNTIME_LOCATION ist der physische Standort, an dem sich die Apigee-Instanz befindet, die Sie später erstellen. Eine Liste der verfügbaren Laufzeitstandorte finden Sie unter Apigee-Standorte.
-
ANALYTICS_REGION ist der physische Standort, an dem Apigee-Analysedaten gespeichert werden. Eine Liste der verfügbaren Apigee API Analytics-Regionen finden Sie unter Apigee-Standorte.
RUNTIME_LOCATION und RUNTIME_LOCATION können sich zwar auf dieselbe Region beziehen, müssen aber nicht identisch sein.
-
BILLING_TYPE ist der Abrechnungstyp für die von Ihnen erstellte Organisation. Gültige Werte sind:
PAYG
für Pay-as-you-go.SUBSCRIPTION
für Abo-Organisationen.
Datenstandort
AUTH="$(gcloud auth print-access-token)"
PROJECT_ID="YOUR_PROJECT_ID"
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
CONTROL_PLANE_LOCATION="YOUR_CONTROL_PLANE_LOCATION"
CONSUMER_DATA_REGION="YOUR_CONSUMER_DATA_REGION"
BILLING_TYPE="YOUR_BILLING_TYPE"
Dabei gilt:
-
AUTH definiert den Header
Authentication
mit einem Inhabertoken. Dieser Header wird beim Aufrufen von Apigee APIs verwendet. Beachten Sie, dass das Token nach einer gewissen Zeit abläuft. Wenn dies der Fall ist, können Sie es einfach mit demselben Befehl neu generieren. Weitere Informationen finden Sie auf der Referenzseite für den Befehl print-access-token. - PROJECT_ID ist die Cloud-Projekt-ID, die Sie als eine der Voraussetzungen erstellt haben.
- PROJECT_NUMBER ist die Cloud-Projektnummer, die Sie unter Voraussetzungen erstellt haben.
-
RUNTIME_LOCATION ist der physische Standort, an dem sich die Apigee-Instanz befindet, die Sie später erstellen. Eine Liste der verfügbaren Laufzeitstandorte finden Sie unter Apigee-Standorte.
Der Laufzeitstandort muss sich innerhalb des Speicherorts der Steuerungsebene befinden. - CONTROL_PLANE_LOCATION ist der physische Standort, an dem die Daten der Apigee-Steuerungsebene gespeichert werden. Eine Liste der verfügbaren Standorte der Steuerungsebene finden Sie unter Apigee-Standorte.
- CONSUMER_DATA_REGION ist eine Unterregion der Region der Steuerungsebene. Sie müssen sowohl die CONTROL_PLANE_LOCATION als auch die CONSUMER_DATA_REGION angeben. Eine Liste der verfügbaren Regionen für Nutzerdaten finden Sie unter Apigee-Standorte.
-
BILLING_TYPE ist der Abrechnungstyp für die von Ihnen erstellte Organisation. Gültige Werte sind:
PAYG
für Pay-as-you-go.SUBSCRIPTION
für Abo-Organisationen.
-
AUTH definiert den Header
- (Optional) Um Ihre Arbeit zu testen, rufen Sie die soeben festgelegten Werte ab. Wenn Sie in Ihren Befehlen eine Variable verwenden möchten, stellen Sie dem Variablennamen ein Dollarzeichen ($) voran.
Kein Datenstandort
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $ANALYTICS_REGION
echo $BILLING_TYPE
Die Antworten auf Ihre
echo
-Befehle sollten etwa so aussehen:YOUR_TOKEN my-cloud-project 1234567890 us-west1 us-west1 SUBSCRIPTION
Datenstandort
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $CONTROL_PLANE_LOCATION
echo $CONSUMER_DATA_REGION
echo $BILLING_TYPE
Die Antworten auf Ihre
echo
-Befehle sollten etwa so aussehen:YOUR_TOKEN my-cloud-project 1234567890 us-west1 us us-west1 SUBSCRIPTION
Schritt 2: APIs aktivieren
-
Für Apigee müssen Sie mehrere Google Cloud APIs aktivieren. Aktivieren Sie diese mit dem folgenden Befehl
services enable
:gcloud services enable apigee.googleapis.com \ servicenetworking.googleapis.com \ compute.googleapis.com \ cloudkms.googleapis.com --project=$PROJECT_ID
(Optional) Rufen Sie zum Prüfen Ihrer Arbeit mit dem Befehl
services list
alle aktivierten APIs auf:gcloud services list
In der Antwort werden alle aktivierten Dienste angezeigt, einschließlich der APIs, die Sie gerade aktiviert haben.
Schritt 3: Apigee-Dienstidentität erstellen
-
Erstellen Sie die Apigee-Dienstidentität:
gcloud beta services identity create --service=apigee.googleapis.com \ --project=$PROJECT_ID
Überprüfen Sie, ob der Agent erfolgreich erstellt wurde. Die Antwort sollte den Namen des Agents im folgenden Format enthalten:
service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com
. Beispiel:Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
Schritt 4: Dienstnetzwerk konfigurieren
In diesem Schritt weisen Sie Apigee ein Paar IP-Adressbereiche (einen CIDR-Bereich von /22 und /28) zu und führen das VPC-Peering zwischen Ihrem Netzwerk und dem Apigee-Netzwerk aus. Jede Apigee-Instanz erfordert einen nicht überlappenden CIDR-Bereich von /22 und /28. Der Apigee-Laufzeitebene werden IP-Adressen aus diesem CIDR-Bereich zugewiesen. Daher ist es wichtig, dass der Bereich für Apigee reserviert ist und nicht von anderen Anwendungen des VPC-Netzwerks genutzt wird. Weitere Informationen und wichtige Überlegungen finden Sie unter Informationen zu Peering-Bereichen.
Beachten Sie, dass Sie einen ausreichenden Netzwerk-IP-Bereich für eine Apigee-Instanz erstellen. Wenn Sie planen, zusätzliche Apigee-Instanzen zu erstellen, müssen Sie diesen Schritt für jede einzelne wiederholen. Die Bereiche können nicht von Instanzen gemeinsam genutzt werden. Weitere Informationen finden Sie auch unter Apigee auf mehrere Regionen erweitern.
- Erstellen Sie folgende Umgebungsvariablen:
RANGE_NAME=YOUR_RANGE_NAME
NETWORK_NAME=YOUR_NETWORK_NAME
Dabei gilt:
- RANGE_NAME ist der Name des IP-Adressbereichs, den Sie erstellen.
Sie können dem Bereich jeden beliebigen Namen geben. Beispiel:
google-svcs
- NETWORK_NAME ist der Name der Netzwerkressource, in der die Adressen reserviert werden sollen.
Google erstellt für jedes neue Projekt ein Standardnetzwerk namens
default
, das Sie verwenden können. Google empfiehlt jedoch, das Standardnetzwerk ausschließlich für Tests zu verwenden.
- RANGE_NAME ist der Name des IP-Adressbereichs, den Sie erstellen.
Sie können dem Bereich jeden beliebigen Namen geben. Beispiel:
- Erstellen Sie einen Netzwerk-IP-Bereich mit einer CIDR-Länge von /22:
gcloud compute addresses create $RANGE_NAME \ --global \ --prefix-length=22 \ --description="Peering range for Apigee services" \ --network=$NETWORK_NAME \ --purpose=VPC_PEERING \ --addresses=OPTIONAL_ADDRESSES \ --project=$PROJECT_ID
Mit
--addresses
können Sie optional einen Adressbereich angeben. Wenn Sie beispielsweise den CIDR-Block192.168.0.0/22
zuordnen möchten, geben Sie192.168.0.0
für die Adresse und22
für die Präfixlänge an. Weitere Informationen finden Sie unter IP-Zuordnung erstellen.Wenn Sie den Parameter
--addresses
nicht angeben, wählt gcloud einen verfügbaren Adressbereich für Sie aus.Bei Erfolg gibt
gcloud
Folgendes zurück:Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].
Wenn Sie einen Bereich von IP-Adressen erstellt haben, sind die Adressen mit dem Projekt verknüpft, bis Sie sie wieder freigeben.
- Prüfen Sie, ob der Netzwerk-IP-Bereich mit einer CIDR-Länge von /22 erstellt wurde:
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
- Erstellen Sie einen Netzwerk-IP-Bereich mit einer CIDR-Länge von /28. Dieser Bereich ist erforderlich und wird von Apigee zur Fehlerbehebung verwendet. Er kann nicht angepasst oder geändert werden.
gcloud compute addresses create google-managed-services-support-1 \ --global \ --prefix-length=28 \ --description="Peering range for supporting Apigee services" \ --network=$NETWORK_NAME \ --purpose=VPC_PEERING \ --addresses=OPTIONAL_ADDRESSES \ --project=$PROJECT_ID
Mit
--addresses
können Sie optional einen Adressbereich angeben. Wenn Sie beispielsweise den CIDR-Block192.168.0.0/28
zuordnen möchten, geben Sie192.168.0.0
für die Adresse und28
für die Präfixlänge an. Weitere Informationen finden Sie unter IP-Zuordnung erstellen.Wenn Sie den Parameter
--addresses
nicht angeben, wählt gcloud einen verfügbaren Adressbereich für Sie aus. - Prüfen Sie, ob der Netzwerk-IP-Bereich mit einer CIDR-Länge von /28 erstellt wurde:
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe google-managed-services-support-1 --global \ --project=$PROJECT_ID
- Nutzen Sie den folgenden Befehl, um Ihre Dienste mit dem Netzwerk zu verbinden:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=$NETWORK_NAME \ --ranges=$RANGE_NAME,google-managed-services-support-1 \ --project=$PROJECT_ID
Dieser Vorgang kann einige Minuten dauern. Bei Erfolg gibt
gcloud
Folgendes zurück, wobei OPERATION_ID die UUID des LRO (Vorgang mit langer Ausführungszeit) ist.Operation "operations/OPERATION_ID" finished successfully.
- Prüfen Sie nach einigen Minuten, ob das VPC-Peering erfolgreich war:
gcloud services vpc-peerings list \ --network=$NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --project=$PROJECT_ID
Apigee stellt eine Verbindung zwischen Ihrem Netzwerk und den Google-Diensten her. Insbesondere verbindet Apigee Ihr Projekt über VPC-Peering mit der Service Networking API. Apigee verknüpft außerdem IP-Adressen mit Ihrem Projekt.
Schritt 5: Organisation erstellen
Für das Erstellen einer Organisation müssen Sie einen Schlüsselbund und einen Schlüssel für die Verschlüsselung der Laufzeitdatenbank anlegen (siehe Schritt 1) und, wenn Sie Datenstandort verwenden, Schlüsselbunde und Schlüssel für die Verschlüsselung der Steuerungsebene (siehe Schritt 2) Diese Cloud KMS-Schlüssel verschlüsseln Daten, die an Laufzeit- und Steuerungsebenenstandorten gespeichert und repliziert werden. Apigee verwendet diese Entitäten zum Verschlüsseln von Anwendungsdaten wie KVMs, Cache- und Clientschlüssel, die dann in der Datenbank gespeichert werden. Weitere Informationen finden Sie unter Apigee-Verschlüsselungsschlüssel.
-
Erstellen Sie einen Schlüsselbund und Schlüssel für die Verschlüsselung der Laufzeitdatenbank:
-
Definieren Sie für den Speicherort von Schlüsselbund und Schlüssel zur Verschlüsselung Ihrer Laufzeitdatenbank eine Umgebungsvariable. Dies sorgt für Konsistenz bei der Erstellung und hilft Ihnen beim Befolgen der Dokumentation.
Der Wert ist der physische Standort, an dem der Schlüsselbund und der Schlüssel der Laufzeitdatenbank gespeichert sind.
Einzelne Region
Konfigurationen für eine einzelne Region (in denen Sie nur eine Instanz in einer Region haben): Wählen Sie einen der unterstützten regionalen KMS-Standorte aus.
Beispiel:
RUNTIMEDBKEY_LOCATION="us-west1"
Der Wert kann mit Ihrer $RUNTIME_LOCATION (auch eine Region) identisch sein, muss es aber nicht. Unter Umständen verbessert die Übereinstimmung aber die Leistung.
Mehrere Regionen
Multiregionale Konfigurationen: Wählen Sie einen unterstützten multiregionalen Standort (z. B.
us
odereurope
) oder einen dual-regionalen Standort aus.Beispiel:
RUNTIMEDBKEY_LOCATION="us"
Wenn Sie eine Konfiguration mit mehreren Regionen in den USA haben, empfehlen wir die Verwendung von
us
für Ihren Standort, sofern möglich. Verwenden Sie andernfallsnam4
. - Definieren Sie Umgebungsvariablen für den Schlüsselbund und den Schlüsselnamen der Datenbank.
Der Name des Schlüsselbunds muss für Ihre Organisation eindeutig sein. Wenn Sie eine zweite oder nachfolgende Region erstellen, darf der Name nicht mit den Namen anderer Schlüsselbunde übereinstimmen.
RUNTIMEDB_KEY_RING_NAME=YOUR_DB_KEY_RING_NAME
RUNTIMEDB_KEY_NAME=YOUR_DB_KEY_NAME
- (Optional) Um Ihre Arbeit zu testen, rufen Sie die soeben festgelegten Werte ab. Wenn Sie in Ihren Befehlen Variablen verwenden möchten, stellen Sie dem Variablennamen ein Dollarzeichen ($) voran.
echo $RUNTIMEDBKEY_LOCATION
echo $RUNTIMEDB_KEY_RING_NAME
echo $RUNTIMEDB_KEY_NAME
- Erstellen Sie einen neuen Schlüsselbund:
gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \ --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID
Der Speicherort des Verschlüsselungsschlüssels für die Apigee-Laufzeitdatenbank unterstützt alle Cloud KMS-Standorte, die Cloud HSM und Cloud EKM unterstützen.
Schlüssel erstellen:
gcloud kms keys create $RUNTIMEDB_KEY_NAME \ --keyring $RUNTIMEDB_KEY_RING_NAME \ --location $RUNTIMEDBKEY_LOCATION \ --purpose "encryption" \ --project $PROJECT_ID
Dieser Befehl erstellt den Schlüssel und fügt ihn dem Schlüsselbund hinzu.
Rufen Sie die Schlüssel-ID ab:
gcloud kms keys list \ --location=$RUNTIMEDBKEY_LOCATION \ --keyring=$RUNTIMEDB_KEY_RING_NAME \ --project=$PROJECT_ID
Die Schlüssel-ID hat die folgende Syntax (ähnlich einem Dateipfad):
projects/PROJECT_ID/locations/RUNTIMEDBKEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
Fügen Sie die Schlüssel-ID in eine Umgebungsvariable ein. Sie verwenden diese Variable in einem späteren Befehl:
RUNTIMEDB_KEY_ID=YOUR_RUNTIMEDB_KEY_ID
Gewähren Sie dem Apigee-Dienst-Agent Zugriff auf den neuen Schlüssel:
gcloud kms keys add-iam-policy-binding $RUNTIMEDB_KEY_NAME \ --location $RUNTIMEDBKEY_LOCATION \ --keyring $RUNTIMEDB_KEY_RING_NAME \ --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
Mit diesem Befehl wird der Schlüssel an den Apigee-Dienst-Agent gebunden.
Nach dem erfolgreichen Abschluss dieser Anfrage gibt
gcloud
etwa folgende Antwort zurück:Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
Wenn Sie einen Fehler wie folgenden erhalten:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
Achten Sie darauf, dass Sie die Projektnummer und nicht den Projektnamen in der E-Mail-Adresse des Dienstkontos verwendet haben.
-
- Wenn Sie den Datenstandort verwenden, erstellen Sie einen Schlüsselbund und Schlüssel zur Verschlüsselung der Steuerungsebene. Wenn Sie keinen Datenstandort verwenden, fahren Sie mit Schritt 3 fort.
- Definieren Sie für die Verschlüsselung der Steuerungsebene eine Umgebungsvariable für den Speicherort des Schlüsselbunds und Schlüssels.
CONTROL_PLANE_LOCATION=YOUR_CONTROL_PLANE_LOCATION
CONSUMER_DATA_REGION=YOUR_CONSUMER_DATA_REGION
Dabei gilt:
- CONTROL_PLANE_LOCATION ist der physische Standort, an dem die Daten der Apigee-Steuerungsebene gespeichert werden. Eine Liste der verfügbaren Standorte der Steuerungsebene finden Sie unter Apigee-Standorte.
- CONSUMER_DATA_REGION ist eine Unterregion der Region der Steuerungsebene. Sie müssen sowohl die CONTROL_PLANE_LOCATION als auch die CONSUMER_DATA_REGION angeben. Eine Liste der verfügbaren Regionen für Nutzerdaten finden Sie unter Apigee-Standorte.
Definieren Sie Umgebungsvariablen für den Schlüsselbund und den Schlüsselnamen der Datenbank der Steuerungsebene.
Der Name des Schlüsselbunds muss für Ihre Organisation eindeutig sein.
CONTROL_PLANE_KEY_RING_NAME=YOUR_CONTROL_PLANE_KEY_RING_NAME
CONTROL_PLANE_KEY_NAME=YOUR_CONTROL_PLANE_KEY_NAME
CONSUMER_DATA_KEY_RING_NAME=YOUR_CONSUMER_DATA_KEY_RING_NAME
CONSUMER_DATA_KEY_NAME=YOUR_CONSUMER_DATA_REGION_KEY_NAME
Dabei gilt:
- CONTROL_PLANE_KEY_RING_NAME ist der Name des Schlüsselbunds, mit dem Sie den Schlüsselbund der Verschlüsselung Ihrer Steuerungsebene identifizieren.
- CONTROL_PLANE_KEY_NAME ist der Name des Schlüssels, mit dem Sie den Verschlüsselungsschlüssel Ihrer Steuerungsebene identifizieren.
- CONSUMER_DATA_KEY_RING_NAME ist der Name des Schlüsselbunds, mit dem Sie Ihren Verschlüsselungs-Schlüsselbund des Speicherorts für Nutzerdaten identifizieren.
- CONSUMER_DATA_KEY_NAME ist der Name des Schlüssels, mit dem Sie Ihren Verschlüsselungsschlüssel des Speicherorts für Nutzerdaten identifizieren.
- Erstellen Sie einen neuen Schlüsselbund:
gcloud kms keyrings create $CONTROL_PLANE_KEY_RING_NAME \ --location $CONTROL_PLANE_LOCATION \ --project $PROJECT_ID
gcloud kms keyrings create $CONSUMER_DATA_KEY_RING_NAME \ --location $CONSUMER_DATA_REGION \ --project $PROJECT_ID
- Erstellen Sie einen Schlüssel:
gcloud kms keys create $CONTROL_PLANE_KEY_NAME \ --keyring $CONTROL_PLANE_KEY_RING_NAME \ --location $CONTROL_PLANE_LOCATION \ --purpose "encryption" \ --project $PROJECT_ID
gcloud kms keys create $CONSUMER_DATA_KEY_NAME \ --keyring $CONSUMER_DATA_KEY_RING_NAME \ --location $CONSUMER_DATA_REGION \ --purpose "encryption" \ --project $PROJECT_ID
Dieser Befehl erstellt den Schlüssel und fügt ihn dem Schlüsselbund hinzu.
Rufen Sie die Schlüssel-ID ab:
gcloud kms keys list \ --location=$CONTROL_PLANE_LOCATION \ --keyring=$CONTROL_PLANE_KEY_RING_NAME \ --project=$PROJECT_ID
gcloud kms keys list \ --location=$CONSUMER_DATA_REGION \ --keyring=$CONSUMER_DATA_KEY_RING_NAME \ --project=$PROJECT_ID
Die Schlüssel-ID hat die folgende Syntax (ähnlich einem Dateipfad):
projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME
projects/PROJECT_ID/locations/CONSUMER_DATA_REGION/keyRings/CONSUMER_DATA_KEY_RING_NAME/cryptoKeys/CONSUMER_DATA_KEY_NAME
- Fügen Sie die Schlüssel-ID in eine Umgebungsvariable ein. Sie verwenden diese Variable in einem späteren Befehl:
CONTROL_PLANE_KEY_ID=YOUR_CONTROL_PLANE_KEY_ID
CONSUMER_DATA_KEY_ID=YOUR_CONSUMER_DATA_KEY_ID
- Gewähren Sie dem Apigee-Dienst-Agent Zugriff auf den neuen Schlüssel:
gcloud kms keys add-iam-policy-binding $CONTROL_PLANE_KEY_NAME \ --location $CONTROL_PLANE_LOCATION \ --keyring $CONTROL_PLANE_KEY_RING_NAME \ --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
gcloud kms keys add-iam-policy-binding $CONSUMER_DATA_KEY_NAME \ --location $CONSUMER_DATA_REGION \ --keyring $CONSUMER_DATA_KEY_RING_NAME \ --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
Mit diesem Befehl wird der Schlüssel an den Apigee-Dienst-Agent gebunden. Nach dem erfolgreichen Abschluss dieser Anfrage gibt gcloud etwa folgende Antwort zurück:
Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
Wenn Sie einen Fehler wie folgenden erhalten:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
Achten Sie darauf, dass Sie die Projektnummer und nicht den Projektnamen in der E-Mail-Adresse des Dienstkontos verwendet haben.
-
Erstellen Sie die Organisation, indem Sie die folgende Anfrage an die Apigee Organizations API senden:
Kein Datenstandort
curl "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$PROJECT_ID"'", "analyticsRegion":"'"$ANALYTICS_REGION"'", "runtimeType":"CLOUD", "billingType":"'"$BILLING_TYPE"'", "authorizedNetwork":"'"$NETWORK_NAME"'", "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'" }'
Dabei gilt:
-d
definiert die Datennutzlast für die Anfrage. Diese Nutzlast muss Folgendes enthalten:name
gibt Ihre neue Organisation an. Der Wert muss mit Ihrer Projekt-ID identisch sein.analyticsRegion
gibt den physischen Speicherort an, an dem Ihre Analysedaten gespeichert werden.runtimeType
: Setzen Sie diesen Wert aufCLOUD
.billingType
: Gibt den Abrechnungstyp der erstellten Organisation an.authorizedNetwork
: Identifiziert das Peering-Netzwerk, das Sie unter Dienstnetzwerk konfigurieren angegeben haben.runtimeDatabaseEncryptionKeyName
: Die ID des Verschlüsselungsschlüssels der Anwendung, den Sie im vorherigen Schritt erstellt haben. Denken Sie daran, dass die ID wie ein Dateipfad strukturiert ist. Beispiel:projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
Datenstandort
Erstellen Sie eine Organisation mit der API:
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$PROJECT_ID"'", "runtimeType":"CLOUD", "billingType":"'"$BILLING_TYPE"'", "controlPlaneEncryptionKeyName":"'"$CONTROL_PLANE_KEY_ID"'", "apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION"'", "apiConsumerDataEncryptionKeyName":"'"$CONSUMER_DATA_KEY_ID"'", "authorizedNetwork":"'"$NETWORK_NAME"'", "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'" }'
Dabei gilt:
-d
definiert die Datennutzlast für die Anfrage. Diese Nutzlast muss Folgendes enthalten:name
gibt Ihre neue Organisation an. Der Wert muss mit Ihrer Projekt-ID identisch sein.runtimeType
: Setzen Sie diesen Wert aufCLOUD
.billingType
: Gibt den Abrechnungstyp der erstellten Organisation an.controlPlaneEncryptionKeyName
: ist die Schlüssel-ID der Steuerungsebene.apiConsumerDataLocation
: Sie müssen auch eine Unterregion für die Verwendung durch interne Ressourcen angeben. Unterstützte Werte finden Sie unter Datenstandortregionen.apiConsumerDataEncryptionKeyName
: Ist die Schlüssel-ID der Nutzerdatenregion.authorizedNetwork
: Identifiziert das Peering-Netzwerk, das Sie unter Dienstnetzwerk konfigurieren angegeben haben.runtimeDatabaseEncryptionKeyName
: Die ID des Verschlüsselungsschlüssels der Anwendung, den Sie im vorherigen Schritt erstellt haben. Denken Sie daran, dass die ID wie ein Dateipfad strukturiert ist. Beispiel:
projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
Nach Ausführung dieses Befehls startet Apigee einen Vorgang mit langer Ausführungszeit, der ein paar Minuten dauern kann.
Wenn ein Fehler zurückgegeben wird, prüfen Sie, ob die Variablenwerte in der Datennutzlast in Anführungszeichen eingeschlossen wurden. Achten Sie darauf, dass die Variable $PROJECT_ID zwischen doppelten Anführungszeichen steht, wie im Folgenden dargestellt:
"'"$PROJECT_ID"'"
Wenn Sie einfache Strings (keine Umgebungsvariablen) für Abfragewerte verwenden, können Sie diese in doppelte Anführungszeichen innerhalb des in einfachen Anführungszeichen stehenden Nutzlaststrings setzen, wie das folgende Beispiel zeigt:
'{ "name":"my-gcp-project", ... }'
- Warten Sie ein paar Minuten.
- Um den Status Ihrer Erstellungsanfrage zu prüfen, können Sie eine
GET
-Anfrage an die Apigee List Organizations API wie im folgendem Beispiel senden:Kein Datenstandort
curl -H "Authorization: Bearer $AUTH" "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID"
Datenstandort
curl -H "Authorization: Bearer $AUTH" "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID"
Wenn diese Antwort angezeigt wird, ist die Erstellung der Organisation noch nicht abgeschlossen:
{ "error": { "code": 403, "message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)", "status": "PERMISSION_DENIED" } }
Wenn Apigee eine neue Organisation erstellt hat, erhalten Sie eine Antwort ähnlich der folgenden:
Kein Datenstandort
{ "name": "my-cloud-project", "createdAt": "1592586495539", "lastModifiedAt": "1592586495539", "environments": [], "properties": { "property": [ { "name": "features.hybrid.enabled", "value": "true" }, { "name": "features.mart.connect.enabled", "value": "true" } ] }, "analyticsRegion": "us-west1", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "YOUR_CERTIFICATE", "authorizedNetwork": "my-network", "projectId": "my-cloud-project" }
Datenstandort
{ "name": "my-cloud-project", "createdAt": "1681412783749", "lastModifiedAt": "1681412783749", "environments": [ "test-env" ], "properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, "authorizedNetwork": "default", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "YOUR_CERTIFICATE", "runtimeDatabaseEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name", "projectId": "my-cloud-project", "state": "ACTIVE", "billingType": "PAYG", "addonsConfig": { "advancedApiOpsConfig": {}, "integrationConfig": {}, "monetizationConfig": {}, "connectorsPlatformConfig": {} }, "apiConsumerDataEncryptionKeyName": "projects/my-cloud-project/locations/us-central1/keyRings/my-key-ring/cryptoKeys/my-key-name", "controlPlaneEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name", "apiConsumerDataLocation": "us-central1", "apigeeProjectId": "i0c2a37e80f9850ab-tp" }
Wenn Apigee eine HTTP-Fehlerantwort zurückgibt, lesen Sie Apigee-Organisation erstellen.
Führen Sie die folgenden Schritte aus, um einen Schlüsselbund und einen Schlüssel der Steuerungsebene zu erstellen.
Weitere Informationen finden Sie unter CMEK-Fehlerbehebung.