Diese Seite gilt für Apigee, aber nicht für Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
In diesem Abschnitt werden die verschiedenen Arten von Verschlüsselungsschlüsseln und ihre Erstellung beschrieben.
Bei der Apigee-Einrichtung generieren Sie folgende Cloud Key Management Service-Verschlüsselungsschlüssel:
Schlüsseltyp | Zeit der Erstellung | Beschreibung |
---|---|---|
Verschlüsselungsschlüssel der Steuerungsebene |
Schritt 3: Organisation erstellen (Abo) Schritt 3: Hosting und Verschlüsselung konfigurieren („Pay as you go“) |
Bei Verwendung des Datenstandorts verwendet Apigee diesen Schlüssel, um Analytics-Daten zu verschlüsseln, die in BigQuery im Mandantenprojekt gespeichert sind. Verschlüsselt API-Proxys, Zielserver, Truststores und Schlüsselspeicher, Analysedaten und alles andere, das über verschiedene Laufzeiten hinweg gemeinsam genutzt wird. Apigee fordert Sie auf, zwei CMEK auf Steuerungsebene anzugeben. Dieser Schlüssel und ein Verschlüsselungsschlüssel für API-Nutzerdaten. Der Speicherort des Verschlüsselungsschlüssels für die Steuerungsebene sollte mit dem Speicherort des Speicherorts der Steuerungsebene übereinstimmen. |
Verschlüsselungsschlüssel für API-Nutzerdaten |
Schritt 3: Organisation erstellen (Abo) Schritt 3: Hosting und Verschlüsselung konfigurieren („Pay as you go“) |
Wenn Sie den Datenstandort verwenden, benötigt Apigee zusätzlich zum Verschlüsselungsschlüssel der Steuerungsebene einen einzelnen Regionsschlüssel, der für Dienste verwendet wird, die nur in einer einzigen Region verfügbar sind. Beispiel: Dataflow und Cloud SQL. Der Speicherort des Verschlüsselungsschlüssels für die API-Nutzerdaten sollte sich innerhalb des Standorts der Steuerungsebene befinden. |
Verschlüsselungsschlüssel der Laufzeitdatenbank |
Schritt 3: Apigee-Organisation erstellen (Abo) Schritt 3: Hosting und Verschlüsselung konfigurieren ("Pay as you go") |
Verschlüsselt Anwendungsdaten wie KVMs, Cache und Clientschlüssel, die dann in der Datenbank gespeichert werden. Es gibt einen Schlüssel zur Verschlüsselung der Laufzeitdatenbank pro Organisation. Alle Instanzen/Regionen in einer Organisation nutzen denselben Schlüssel zur Verschlüsselung der Laufzeitdatenbank.
Der Verschlüsselungsschlüssel der Laufzeitdatenbank unterstützt alle Cloud KMS-Standorte, die Cloud HSM und Cloud EKM unterstützen. Google empfiehlt die Verwendung eines multiregionalen Standorts (z. B. Der Speicherort des Verschlüsselungsschlüssels für die Laufzeitdatenbank sollte sich innerhalb des Standorts der Steuerungsebene befinden, wenn der Datenstandort verwendet wird. Ob Sie den Speicherort des Schlüsselbunds auswählen können, hängt von der Art der Installation ab: Mit dem Assistenten zur Apigee-Bereitstellung können Sie keinen Speicherort für den Schlüsselbund auswählen; der Standort wird automatisch ausgewählt. Wenn Sie die Befehlszeile verwenden, können Sie den Speicherort des Schlüsselbunds auswählen. |
Laufwerkverschlüsselungsschlüssel |
Schritt 5: Apigee-Laufzeitinstanz erstellen (Abo) Schritt 3: Hosting und Verschlüsselung konfigurieren (Pay as you go) |
Verschlüsselt die Daten der Laufzeitinstanz, bevor sie auf das Laufwerk geschrieben werden. Zu den verschlüsselten Daten gehören das Key Management System (KMS), Schlüssel/Wert-Paar-Zuordnungen (KVMs), Kontingentdefinitionen, Buckets und Zähler; und alle im Cache gespeicherten Daten. KMS-Daten umfassen API-Produkte, Entwickler, Entwickler-Apps, OAuth-Tokens (einschließlich Zugriffstokens, Aktualisierungstokens und Autorisierungscodes) sowie API-Schlüssel. Dieser Schlüssel befindet sich in derselben Region wie die Laufzeitinstanz. Beim Erstellen eines neuen Schlüssels muss der Speicherort des Schlüssels mit dem Speicherort der Laufzeitinstanz übereinstimmen. Jede Kombination aus Instanz/Region hat einen eigenen Schlüssel zur Laufwerksverschlüsselung. |
Wichtige Fakten
Beachten Sie beim Erstellen der Verschlüsselungsschlüssel für das Laufwerk und die Laufzeitdatenbank Folgendes:
- Der Speicherort des Verschlüsselungsschlüssels der Apigee-Laufzeitdatenbank unterstützt alle Cloud KMS-Standorte, die Cloud HSM und Cloud EKM unterstützen.
- Der Speicherort des Schlüssels zur Laufwerksverschlüsselung muss dem Speicherort der Laufzeitinstanz entsprechen, in der der Schlüssel verwendet wird.
- Nachdem Sie einen Schlüssel festgelegt haben, können Sie ihn nicht mehr ändern.
- Alle Schlüssel müssen sich in einem Schlüsselbund befinden.
- Schlüssel verschiedener Typen müssen aber in separaten Schlüsselbunden enthalten sein. Schlüssel zur Laufwerksverschlüsselung dürfen sich nicht im selben Schlüsselbund wie der Schlüssel zur Verschlüsselung der Laufzeitdatenbank befinden.
-
Die Schlüssel müssen einen
purpose
haben. Wenn Sie die neuen Schlüssel mit der Befehlszeile generieren, setzen Siepurpose
aufencryption
. Wenn Sie die Google Cloud Console verwenden, wählen Sie Symmetrisches Ver-/Entschlüsseln für den Zweck. - Die Schlüssel werden durch einen Schlüsselpfad definiert, der folgendes Muster verwendet:
projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
Vorhandene Schlüssel auflisten
Wenn Sie bereits neue Cloud KMS-Verschlüsselungsschlüssel für Apigee erstellt haben, können Sie diese nutzen und müssen keine neuen Schlüssel bei der Einrichtung erstellen.
So listen Sie alle KMS-Schlüssel in einem Schlüsselbund auf:
Führen Sie den Befehl gcloud kms keys list
aus.
gcloud kms keys list --keyring KEY_RING_NAME --location KEY_RING_LOCATION
Ersetzen Sie Folgendes:
-
KEY_RING_NAME: Der Name des Schlüsselbunds. Beispiel:
my-key-ring
. -
KEY_RING_LOCATION ist der physische Speicherort des Schlüsselbunds, z. B.
us-west1
.
Alternativ können Sie Ihre Schlüssel in der Google Cloud Console ansehen.
Neue Schlüssel in der Befehlszeile generieren
Sie können einen Schlüsselbund und einen Schlüssel in der Befehlszeile oder in der Google Cloud Console erstellen.
Jeder Schlüsseltyp muss einen eigenen Schlüsselbund haben. Sie können beispielsweise die Schlüssel zur Laufwerksverschlüsselung im gleichen Schlüsselbund speichern. Der Schlüssel zur Verschlüsselung der Laufzeitdatenbank muss aber in einem separaten Schlüsselbund gespeichert sein.
In den folgenden Schritten wird beschrieben, wie Sie einen Schlüsselbund und einen Schlüssel erstellen und dem Apigee-Dienst-Agent Zugriff zur Verwendung des neuen Schlüssels gewähren. Erstellen Sie Schlüsselringe und Schlüssel für die Steuerungsebene (falls Sie den Datenstandort verwenden), die Laufzeitdatenbank und das Laufzeitlaufwerk.
-
Erstellen Sie mit dem Befehl
gcloud kms keyrings create
einen neuen Schlüsselbund:Steuerungsebene
Wenn der Datenstandort aktiviert ist, erstellen Sie einen Schlüsselbund für die Steuerungsebene und einen weiteren für die Region der Nutzerdaten.
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
Ersetzen Sie Folgendes:
- CONTROL_PLANE_KEY_RING_NAME: der Name des Schlüsselbunds der Steuerungsebene.
- CONTROL_PLANE_LOCATION ist der physische Speicherort, an dem die Daten der Apigee-Steuerungsebene gespeichert werden.
- PROJECT_ID: die Google Cloud-Projekt-ID.
- CONSUMER_DATA_KEY_RING_NAME: der Name des Schlüsselbunds für Nutzerdaten.
- CONSUMER_DATA_REGION: Eine Subregion der Region der Steuerungsebene. Sie müssen sowohl die CONTROL_PLANE_LOCATION als auch die CONSUMER_DATA_REGION angeben.
Laufzeitdatenbank
gcloud kms keyrings create RUNTIMEDB_KEY_RING_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --project PROJECT_ID
Ersetzen Sie Folgendes:
- RUNTIMEDB_KEY_RING_NAME: Der Name des Datenbankschlüsselbunds, den Sie erstellen.
- RUNTIMEDB_KEY_LOCATION: der physische Speicherort des Datenbankschlüsselbunds.
- PROJECT_ID: die Google Cloud-Projekt-ID.
Der Speicherort des Apigee-Verschlüsselungsschlüssels unterstützt alle Cloud KMS-Standorte, die Cloud HSM und Cloud EKM unterstützen.
Laufzeitlaufwerk
gcloud kms keyrings create RUNTIMEDISK_KEY_RING_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --project PROJECT_ID
Ersetzen Sie Folgendes:
- RUNTIMEDISK_KEY_RING_NAME: Der Name des zu erstellenden Laufwerkschlüsselbunds.
- RUNTIMEDISK_KEY_LOCATION: der physische Speicherort des Schlüsselbunds für das Laufwerk.
- PROJECT_ID: die Google Cloud-Projekt-ID.
Prüfen Sie, ob der Schlüsselbund des Laufwerks auf den gleichen Standort wie die Instanz eingestellt ist. Jede Instanz und jeder Schlüsselbund müssen einen eigenen Standort haben.
gcloud kms keyrings list \ --location \ --project $PROJECT_ID
gcloud kms keyrings describe $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
-
Erstellen Sie einen Schlüssel mit dem Befehl
kms keys create
:Steuerungsebene
Wenn der Datenstandort aktiviert ist, erstellen Sie einen Schlüsselbund für die Steuerungsebene und einen weiteren für die Region der Nutzerdaten.
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
Ersetzen Sie Folgendes:
- CONTROL_PLANE_KEY_NAME: der Schlüsselname der Steuerungsebene.
- CONTROL_PLANE_KEY_RING_NAME: der Name des Schlüsselbunds der Steuerungsebene.
- CONTROL_PLANE_LOCATION ist der physische Speicherort, an dem die Daten der Apigee-Steuerungsebene gespeichert werden.
- PROJECT_ID: die Google Cloud-Projekt-ID.
- CONSUMER_DATA_KEY_NAME: der Name des Nutzerdaten-Schlüssels.
- CONSUMER_DATA_KEY_RING_NAME: der Name des Schlüsselbunds der Nutzerdaten.
- CONSUMER_DATA_REGION: Eine Subregion der Region der Steuerungsebene. Sie müssen sowohl die CONTROL_PLANE_LOCATION als auch die CONSUMER_DATA_REGION angeben.
Laufzeitdatenbank
gcloud kms keys create RUNTIMEDB_KEY_NAME \ --keyring RUNTIMEDB_KEY_RING_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --purpose "encryption" \ --project PROJECT_ID
Ersetzen Sie Folgendes:
- RUNTIMEDB_KEY_NAME: Der Name des Datenbankschlüssels, den Sie erstellen.
- RUNTIMEDB_KEY_RING_NAME: Der Name des Datenbankschlüsselbunds, den Sie erstellen.
- RUNTIMEDB_KEY_LOCATION: der physische Speicherort des Datenbankschlüsselbunds.
- PROJECT_ID: die Google Cloud-Projekt-ID.
Laufzeitlaufwerk
gcloud kms keys create RUNTIMEDISK_KEY_NAME \ --keyring RUNTIMEDISK_KEY_RING_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --purpose "encryption" \ --project PROJECT_ID
Ersetzen Sie Folgendes:
- RUNTIMEDISK_KEY_NAME: der Name des Laufwerksschlüssels, den Sie erstellen.
- RUNTIMEDISK_KEY_RING_NAME: Der Name des zu erstellenden Laufwerkschlüsselbunds.
- RUNTIMEDISK_KEY_LOCATION: der physische Speicherort des Schlüsselbunds für das Laufwerk.
- PROJECT_ID: die Google Cloud-Projekt-ID.
Dieser Befehl erstellt den Schlüssel und fügt ihn dem Schlüsselbund hinzu.
Verwenden Sie beim Verweis auf einen Schlüssel die Schlüssel-ID.
-
Gewähren Sie dem Apigee-Dienst-Agent mit dem Befehl
gcloud kms keys add-iam-policy-binding
Zugriff auf den neuen Schlüssel:Steuerungsebene
Wenn der Datenstandort aktiviert ist, erstellen Sie einen Schlüsselbund für die Steuerungsebene und einen weiteren für die Region der Nutzerdaten.
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
Ersetzen Sie Folgendes:
- CONTROL_PLANE_KEY_NAME: der Schlüsselname der Steuerungsebene.
- CONTROL_PLANE_LOCATION ist der physische Speicherort, an dem die Daten der Apigee-Steuerungsebene gespeichert werden.
- CONTROL_PLANE_KEY_RING_NAME: der Name des Schlüsselbunds der Steuerungsebene.
- PROJECT_NUMBER ist die Google Cloud-Projektnummer.
- PROJECT_ID: die Google Cloud-Projekt-ID.
- CONSUMER_DATA_KEY_NAME: der Name des Nutzerdaten-Schlüssels.
- CONSUMER_DATA_REGION: Eine Subregion der Region der Steuerungsebene. Sie müssen sowohl die CONTROL_PLANE_LOCATION als auch die CONSUMER_DATA_REGION angeben.
- CONSUMER_DATA_KEY_RING_NAME: der Name des Schlüsselbunds für Nutzerdaten.
Laufzeitdatenbank
gcloud kms keys add-iam-policy-binding RUNTIMEDB_KEY_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --keyring RUNTIMEDB_KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
Ersetzen Sie Folgendes:
- RUNTIMEDB_KEY_NAME: Der Name des Datenbankschlüssels, den Sie erstellen.
- RUNTIMEDB_KEY_RING_NAME: Der Name des Datenbankschlüsselbunds, den Sie erstellen.
- RUNTIMEDB_KEY_LOCATION: der physische Speicherort des Datenbankschlüsselbunds.
- PROJECT_NUMBER ist die Google Cloud-Projektnummer.
- PROJECT_ID: die Google Cloud-Projekt-ID.
Laufzeitlaufwerk
gcloud kms keys add-iam-policy-binding RUNTIMEDISK_KEY_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --keyring RUNTIMEDISK_KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
Ersetzen Sie Folgendes:
- RUNTIMEDISK_KEY_NAME: der Name des Laufwerksschlüssels, den Sie erstellen.
- RUNTIMEDISK_KEY_RING_NAME: Der Name des zu erstellenden Laufwerkschlüsselbunds.
- RUNTIMEDISK_KEY_LOCATION: der physische Speicherort des Schlüsselbunds für das Laufwerk.
- PROJECT_NUMBER ist die Google Cloud-Projektnummer.
- PROJECT_ID: die Google Cloud-Projekt-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.
So prüfen Sie, ob der Schlüssel an den Apigee-Dienst-Agent gebunden ist:
gcloud kms keys get-iam-policy $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
gcloud kms keys describe $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
Der Name des Schlüsselbunds muss für Ihre Organisation eindeutig sein. Wenn Sie weitere Regionen erstellen, müssen sich die Schlüsselbundnamen für diese Regionen von den vorhandenen Schlüsselbundnamen unterscheiden.
Neue Schlüssel mit der Google Cloud Console generieren
Sie können neue Schlüssel über die Console generieren, wie unter Symmetrischen Verschlüsselungsschlüssel erstellen beschrieben.
So erstellen Sie einen neuen Schlüssel mit der Console:
- Legen Sie für den Schlüssel zur Verschlüsselung der Laufzeitdatenbak den Standort auf einen beliebigen Cloud KMS-Standort fest, der Cloud HSM und Cloud EKM unterstützt. Auf der Benutzeroberfläche können Sie keinen abweichenden Speicherort für den Schlüssel auswählen, er entspricht also Ihrer Auswahl im Schlüsselbund.
- Nachdem Sie den Schlüssel erstellt haben, rufen Sie den Schlüsselpfad in der Ansicht Kryptografische Schlüssel ab. Klicken Sie dazu neben dem Schlüssel auf Mehr und wählen Sie dann Ressourcenname kopieren aus.
Rufen Sie die Schlüssel-ID ab
Wenn Sie mit der Cloud KMS API oder der Google Cloud CLI auf eine Cloud Key Management Service-Ressource verweisen, verwenden Sie die Ressourcen-ID. Die Schlüssel-ID lässt sich mit dem
gcloud kms keys list
-Befehl abrufen:
Steuerungsebene
Wenn der Datenstandort aktiviert ist, gibt es einen Schlüsselbund für die Steuerungsebene und einen weiteren für die Region der Nutzerdaten.
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
Laufzeitdatenbank
gcloud kms keys list \ --location=RUNTIMEDB_KEY_LOCATION \ --keyring=RUNTIMEDB_KEY_RING_NAME \ --project=PROJECT_ID
Die Schlüssel-ID hat die folgende Syntax (ähnlich einem Dateipfad):
projects/PROJECT_ID/locations/RUNTIMEDB_KEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
Laufzeitlaufwerk
gcloud kms keys list \ --location=RUNTIMEDISK_KEY_LOCATION \ --keyring=RUNTIMEDISK_KEY_RING_NAME \ --project=PROJECT_ID
Die Schlüssel-ID hat die folgende Syntax (ähnlich einem Dateipfad):
projects/PROJECT_ID/locations/RUNTIMEDISK_KEY_LOCATION/keyRings/RUNTIMEDISK_KEY_RING_NAME/cryptoKeys/RUNTIMEDISK_KEY_NAME
Beispiel:
NAME: projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLED
Sie können die Schlüssel-ID auch in der Google Cloud Console abrufen. Weitere Informationen finden Sie unter Cloud KMS-Ressourcen-ID abrufen