Kostenpflichtige Organisation mit VPC-Peering bereitstellen

Kostenpflichtige Organisation mit VPC-Peering bereitstellen

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 zur Verwendung in späteren Schritten:

  1. Prüfen Sie, ob die unter Vorbereitung aufgeführten Einrichtungsanforderungen erfüllt sind.
  2. Das Cloud SDK muss installiert sein. Weitere Informationen zur Installation finden Sie unter Cloud SDK installieren.
  3. 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.
  4. 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:

    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:

  5. (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

  1. 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
  2. (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

  1. Erstellen Sie die Apigee-Dienstidentität:

    gcloud beta services identity create --service=apigee.googleapis.com \
      --project=$PROJECT_ID
  2. Ü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.

  1. 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.

  2. 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-Block 192.168.0.0/22 zuordnen möchten, geben Sie 192.168.0.0 für die Adresse und 22 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.

  3. 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
  4. 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-Block 192.168.0.0/28 zuordnen möchten, geben Sie 192.168.0.0 für die Adresse und 28 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.

  5. 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
  6. 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.
  7. 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.

  8. 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

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.

  1. Erstellen Sie einen Schlüsselbund und Schlüssel für die Verschlüsselung der Laufzeitdatenbank:

    1. 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. usoder europe) 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 andernfalls nam4.

    2. 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
    3. (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
    4. 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.

    5. 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
    6. 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
    7. 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.

  2. 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.
  3. Führen Sie die folgenden Schritte aus, um einen Schlüsselbund und einen Schlüssel der Steuerungsebene zu erstellen.

    1. 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.
    2. 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.
    3. 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
    4. 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
    5. 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
    6. 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.

    Weitere Informationen finden Sie unter CMEK-Fehlerbehebung.

  4. 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 auf CLOUD.
      • 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 auf CLOUD.
    • 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", ... }'
  5. Warten Sie ein paar Minuten.
  6. 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.