In diesem Dokument wird erläutert, Consumer-Secrets (Clientanmeldedaten) von Entwickler-Apps, die in der Cassandra-Datenbank gespeichert sind, verschlüsselt werden.
Übersicht
In der Vergangenheit hat Apigee Edge for Private Cloud eine optionale Verschlüsselung für KVM-Daten (Key Value Map) und OAuth-Zugriffstokens bereitgestellt.
In der folgenden Tabelle werden die Verschlüsselungsoptionen für inaktive Daten in Apigee for Private Cloud beschrieben:
| Entität | Standardmäßig aktivierte Verschlüsselung | Verschlüsselung optional verfügbar | Weitere Dokumentation |
| KVMs | Nein | Ja | Weitere Informationen finden Sie unter Informationen zu verschlüsselten KVMs. |
| OAuth-Zugriffstokens | Nein | Ja | Weitere Informationen finden Sie unter Hash-Tokens für zusätzliche Sicherheit. |
| Consumer-Secrets für Entwickler-Apps | Nein | Ja | Führen Sie die Konfigurationsschritte in diesem Dokument aus, um die Funktion zu aktivieren. |
Wenn Sie die Verschlüsselung von Clientanmeldedaten aktivieren möchten, müssen Sie die folgenden Aufgaben auf allen Message Processor- und Management Server-Knoten ausführen:
- Erstellen Sie einen Schlüsselspeicher, um einen Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) zu speichern. Apigee verwendet diesen verschlüsselten Schlüssel, um die geheimen Schlüssel zu verschlüsseln, die zum Verschlüsseln Ihrer Daten erforderlich sind.
- Bearbeiten Sie die Konfigurationsattribute auf allen Verwaltungsserver- und Message Processor-Knoten.
- Erstellen Sie eine Entwickler-App, um die Schlüsselerstellung auszulösen.
- Starten Sie die Knoten neu.
Diese Aufgaben werden in diesem Dokument erläutert.
Wissenswertes über die Schlüsselverschlüsselung
In diesem Dokument wird beschrieben, wie Sie das KEK-Feature aktivieren, mit dem Apigee die geheimen Schlüssel verschlüsseln kann, die zum Verschlüsseln von Consumer-Secrets von Entwickler-Apps verwendet werden, wenn sie in der Cassandra-Datenbank gespeichert sind.
Standardmäßig bleiben alle vorhandenen Werte in der Datenbank unverändert (im Nur-Text-Format) und funktionieren weiterhin wie zuvor.
Wenn Sie einen Schreibvorgang für eine unverschlüsselte Entität ausführen, wird sie beim Speichern des Vorgangs verschlüsselt. Wenn Sie beispielsweise ein unverschlüsseltes Token widerrufen und später genehmigen, wird das neu genehmigte Token verschlüsselt.
Schlüssel sicher aufbewahren
Bewahren Sie eine Kopie des Schlüsselspeichers, in dem der KEK gespeichert ist, an einem sicheren Ort auf. Wir empfehlen, einen eigenen sicheren Mechanismus zu verwenden, um eine Kopie des Schlüsselspeichers zu speichern. Wie in der Anleitung in diesem Dokument erläutert, muss auf jedem Message Processor- und Verwaltungsserverknoten ein Schlüsselspeicher platziert werden, auf den die lokale Konfigurationsdatei verweisen kann. Es ist aber auch wichtig, eine Kopie des Schlüsselspeichers an einem anderen Ort aufzubewahren, um ihn zu schützen und als Sicherung zu verwenden.
Schlüsselverschlüsselung aktivieren
So verschlüsseln Sie den geheimen Consumer-Schlüssel:
Vorbereitung
Bevor Sie die Schritte in diesem Dokument ausführen, müssen Sie die folgenden Anforderungen erfüllen:
- Sie müssen Apigee Edge for Private Cloud 4.50.00.10 oder höher installieren oder ein Upgrade darauf durchführen.
- Sie müssen ein Apigee Edge for Private Cloud-Administrator sein.
Schritt 1: Schlüsselspeicher generieren
So erstellen Sie einen Schlüsselspeicher für den Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK):
- Führen Sie den folgenden Befehl aus, um einen Schlüsselspeicher zu generieren, in dem ein Schlüssel zum Verschlüsseln des KEK gespeichert wird. Geben Sie den Befehl genau so ein, wie er angezeigt wird. (Sie können einen beliebigen Keystore-Namen angeben):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
Geben Sie ein Passwort ein, wenn Sie dazu aufgefordert werden. Sie verwenden dieses Passwort in späteren Abschnitten, wenn Sie den Verwaltungsserver und den Message Processor konfigurieren.
Mit diesem Befehl wird eine Schlüsselspeicherdatei kekstore.p12 generiert, die einen Schlüssel mit dem Alias KEYSTORE_NAME enthält.
- (Optional) Prüfen Sie mit dem folgenden Befehl, ob die Datei korrekt generiert wurde. Wenn die Datei korrekt ist, gibt der Befehl einen Schlüssel mit dem Alias KEYSTORE_NAME zurück:
keytool -list -keystore kekstore.p12
Schritt 2: Verwaltungsserver konfigurieren
Konfigurieren Sie als Nächstes den Verwaltungsserver. Wenn Sie Verwaltungsserver auf mehreren Knoten installiert haben, müssen Sie diese Schritte auf jedem Knoten wiederholen.
- Kopieren Sie die in Schritt 1 generierte Schlüsselspeicherdatei in ein Verzeichnis auf dem Verwaltungsserverknoten, z. B.
/opt/apigee/customer/application. Beispiel:cp certs/kekstore.p12 /opt/apigee/customer/application
- Achten Sie darauf, dass die Datei vom Nutzer
apigeegelesen werden kann:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- Fügen Sie
/opt/apigee/customer/application/management-server.propertiesdie folgenden Attribute hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. Siehe auch Referenz zur Attributdatei.
conf_keymanagement_kmscred.encryption.enabled=true # Fallback is true to ensure your existing plaintext credentials continue to work conf_keymanagement_kmscred.encryption.allowFallback=true conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME # These could alternately be set as environment variables. These variables should be # accessible to Apigee user during bootup of the Java process. If environment # variables are specified, you can skip the password configs below. # KMSCRED_ENCRYPTION_KEYSTORE_PASS= # KMSCRED_ENCRYPTION_KEK_PASS= See also Using environment variables for configuration properties. conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD
Beachten Sie, dass der
KEK_PASSWORDje nach dem Tool, mit dem der Schlüsselspeicher generiert wurde, mit demKEYSTORE_PASSWORDidentisch sein kann. - Starten Sie den Verwaltungsserver mit den folgenden Befehlen neu:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready
Der Befehl
wait_for_readygibt die folgende Meldung zurück, wenn der Verwaltungsserver bereit ist:Checking if management-server is up: management-server is up.
- Wenn Sie Verwaltungsserver auf mehreren Knoten installiert haben, wiederholen Sie die Schritte 1–4 oben auf jedem Verwaltungsserverknoten.
Schritt 3: Entwickler-App erstellen
Nachdem die Verwaltungsserver aktualisiert wurden, müssen Sie eine Entwickler-App erstellen, um die Generierung des Schlüssels auszulösen, der zum Verschlüsseln der Clientanmeldedaten verwendet wird:
- Erstellen Sie eine Entwickler-App, um die Erstellung eines Datenverschlüsselungsschlüssels (KEK) auszulösen. Eine Anleitung finden Sie unter Anwendung registrieren.
- Löschen Sie die Entwickler-App, wenn Sie möchten. Sie müssen sie nicht aufbewahren, nachdem der Verschlüsselungsschlüssel generiert wurde.
Schritt 4: Message Processor konfigurieren
Bis die Verschlüsselung in den Message Processors aktiviert ist, können Laufzeitanfragen keine verschlüsselten Anmeldedaten verarbeiten.
- Kopieren Sie die in Schritt 1 generierte Schlüsselspeicherdatei in ein Verzeichnis auf dem Message Processor-Knoten, z. B.
/opt/apigee/customer/application. Beispiel:cp certs/kekstore.p12 /opt/apigee/customer/application
- Achten Sie darauf, dass die Datei vom Nutzer
apigeegelesen werden kann:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- Fügen Sie
/opt/apigee/customer/application/message-processor.propertiesdie folgenden Attribute hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. Siehe auch Referenz zur Attributdatei.conf_keymanagement_kmscred.encryption.enabled=true # Fallback is true to ensure your existing plaintext credentials continue to work conf_keymanagement_kmscred.encryption.allowFallback=true conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME # These could alternately be set as environment variables. These variables should be # accessible to Apigee user during bootup of the Java process. If environment # variables are specified, you can skip the password configs below. # KMSCRED_ENCRYPTION_KEYSTORE_PASS= # KMSCRED_ENCRYPTION_KEK_PASS= See also Using environment variables for configuration properties. conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD
Je nach dem Tool, mit dem der Schlüsselspeicher generiert wurde, kann der
KEK_PASSWORDmit demKEYSTORE_PASSWORDübereinstimmen. - Starten Sie den Message Processor mit den folgenden Befehlen neu:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
Der Befehl
wait_for_readygibt die folgende Meldung zurück, wenn der Message Processor bereit ist, Nachrichten zu verarbeiten:Checking if message-processor is up: message-processor is up.
- Wenn Sie Message Processor auf mehreren Knoten installiert haben, wiederholen Sie die Schritte 1 bis 4 auf jedem Message Processor-Knoten.
Zusammenfassung
Bei allen Entwickler-Apps, die Sie ab jetzt erstellen, wird das Secret für die Anmeldedaten in der Cassandra-Datenbank im Ruhezustand verschlüsselt.
Umgebungsvariablen für Konfigurationsattribute verwenden
Alternativ können Sie die folgenden Konfigurationsattribute für Message Processor und Management Server mithilfe von Umgebungsvariablen festlegen. Wenn Umgebungsvariablen festgelegt sind, überschreiben sie die in der Konfigurationsdatei des Message Processors oder Management Servers festgelegten Attribute.
conf_keymanagement_kmscred.encryption.keystore.pass= conf_keymanagement_kmscred.encryption.kek.pass=
Die entsprechenden Umgebungsvariablen sind:
export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD
Wenn Sie diese Umgebungsvariablen festlegen, können Sie diese Konfigurationsattribute aus den Konfigurationsdateien auf den Message Processor- und Management Server-Knoten weglassen, da sie ignoriert werden:
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
Referenz zu Attributdateien
In diesem Abschnitt werden die Konfigurationsattribute beschrieben, die Sie auf allen Message Processor- und Management Server-Knoten festlegen müssen, wie zuvor in diesem Dokument erläutert.
| Attribut | Standard | Beschreibung |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
Muss true sein, um die Schlüsselverschlüsselung zu aktivieren.
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
Setzen Sie „allowFallback“ auf true, damit Ihre vorhandenen Klartext-Anmeldedaten weiterhin funktionieren.
|
conf_keymanagement_kmscred.encryption.keystore.path
|
– | Geben Sie den Pfad zum KEK-Schlüsselspeicher auf dem Message Processor- oder Management Server-Knoten an. Weitere Informationen finden Sie unter Schritt 2: Verwaltungsserver konfigurieren und Schritt 3: Message Processor konfigurieren. |
conf_keymanagement_kmscred.encryption.kek.alias
|
– | Alias, unter dem der KEK im Schlüsselspeicher gespeichert ist. |
conf_keymanagement_kmscred.encryption.keystore.pass
|
– | Optional, wenn Sie diese Attribute mit Umgebungsvariablen festlegen. Siehe auch Umgebungsvariablen für Konfigurationsattribute verwenden. |
conf_keymanagement_kmscred.encryption.kek.pass
|
– | Optional, wenn Sie diese Attribute mit Umgebungsvariablen festlegen. Siehe auch Umgebungsvariablen für Konfigurationsattribute verwenden. |