In diesem Dokument wird erläutert, wie Sie die Verschlüsselung von Consumer-Secrets (Clientanmeldedaten) der Entwickler-App aktivieren, die in der Cassandra-Datenbank gespeichert sind.
Überblick
Traditionell bietet Apigee Edge for Private Cloud die optionale Verschlüsselung für KVM-Daten (Key Value Map) und OAuth-Zugriffstokens.
In der folgenden Tabelle werden die Verschlüsselungsoptionen für inaktive Daten in Apigee for Private Cloud beschrieben:
Entität | Standardverschlüsselung | Verschlüsselung optional | Weitere Dokumentation |
KVMs | Nein | Ja | Siehe 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. |
Zum Aktivieren der Verschlüsselung von Clientanmeldedaten müssen Sie auf allen Knoten des Nachrichtenverarbeiters und des Nachrichtenverwaltungsservers die folgenden Aufgaben ausführen:
- Erstellen Sie einen Schlüsselspeicher zum Speichern eines Schlüsselverschlüsselungsschlüssels (Key Encryption Key, KEK). Apigee verwendet diesen verschlüsselten Schlüssel, um die geheimen Schlüssel zu verschlüsseln, die für die Verschlüsselung Ihrer Daten erforderlich sind.
- Konfigurationsattribute auf allen Verwaltungsserver- und Message Processor-Knoten bearbeiten
- 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 zum Schlüsselverschlüsselungsfeature
In diesem Dokument wird erläutert, 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 inaktive Daten in der Cassandra-Datenbank gespeichert werden.
Standardmäßig bleiben alle vorhandenen Werte in der Datenbank unverändert (als Klartext) und funktionieren weiterhin wie zuvor.
Wenn Sie einen Schreibvorgang für eine unverschlüsselte Entität ausführen, wird diese beim Speichern des Vorgangs verschlüsselt. Wenn Sie beispielsweise ein unverschlüsseltes Token widerrufen und es später genehmigen, wird das neu genehmigte Token verschlüsselt.
Schlüssel sicher aufbewahren
Speichern Sie unbedingt eine Kopie des Schlüsselspeichers, in dem der KEK gespeichert ist, an einem sicheren Ort. Wir empfehlen, einen eigenen sicheren Mechanismus zu verwenden, um eine Kopie des Schlüsselspeichers zu speichern. Wie in der Anleitung in diesem Dokument beschrieben, muss auf jedem Knoten des Nachrichtenverarbeiters und des Verwaltungsservers ein Schlüsselspeicher abgelegt werden, auf den die lokale Konfigurationsdatei verweisen kann. Es ist jedoch auch wichtig, eine Kopie des Schlüsselspeichers zur Aufbewahrung und als Sicherung an einem anderen Ort zu speichern.
Schlüsselverschlüsselung aktivieren
Führen Sie die folgenden Schritte zur Verschlüsselung des Consumer-Secret-Schlüssels aus:
Voraussetzungen
Sie müssen die folgenden Anforderungen erfüllen, bevor Sie die Schritte in diesem Dokument ausführen:
- Sie müssen Apigee Edge for Private Cloud 4.50.00.10 oder höher installieren oder ein Upgrade darauf ausführen.
- Sie müssen Administrator von Apigee Edge für Private Cloud 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 zum Speichern eines Schlüssels zu generieren, der zum Verschlüsseln des KEK verwendet wird. Geben Sie den Befehl genau so ein, wie er angezeigt wird. Sie können einen beliebigen Schlüsselspeichernamen 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 benötigen dieses Passwort in späteren Abschnitten, wenn Sie den Verwaltungsserver und den Message Processor konfigurieren.
Dieser Befehl generiert die Keystore-Datei kekstore.p12, 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
Als Nächstes konfigurieren Sie 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
- Sorgen Sie dafür, dass die Datei für den
apigee
-Nutzer lesbar ist: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.properties
die folgenden Properties hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. Weitere Informationen finden Sie unter Referenz zur Property-Datei.
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 das
KEK_PASSWORD
mit demKEYSTORE_PASSWORD
identisch sein kann, je nachdem, mit welchem Tool der Schlüsselspeicher generiert wurde. - 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_ready
gibt 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 bis 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 Daten der Clientanmeldedaten verwendet wird:
- Erstellen Sie eine Entwickler-App, um die Erstellung eines Datenverschlüsselungsschlüssels (Data Encryption Key, KEK) auszulösen. Die erforderlichen Schritte finden Sie unter App registrieren.
- Löschen Sie die Entwickler-App, wenn Sie möchten. Sie müssen ihn nicht mehr aufbewahren, nachdem der Verschlüsselungsschlüssel generiert wurde.
Schritt 4: Message Processing Prozessoren konfigurieren
Solange die Verschlüsselung nicht in den Message Processorn aktiviert ist, können Laufzeitanfragen keine verschlüsselten Anmeldedaten verarbeiten.
- Kopieren Sie die in Schritt 1 generierte Schlüsselspeicherdatei in ein Verzeichnis auf dem Nachrichtenprozessorknoten, z. B.
/opt/apigee/customer/application
. Beispiel:cp certs/kekstore.p12 /opt/apigee/customer/application
- Sorgen Sie dafür, dass die Datei für den
apigee
-Nutzer lesbar ist:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- Fügen Sie
/opt/apigee/customer/application/message-processor.properties
die folgenden Properties hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. Weitere Informationen finden Sie unter Referenz zur Property-Datei.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
KEK_PASSWORD
mit demKEYSTORE_PASSWORD
identisch sein kann, je nachdem, mit welchem Tool der Schlüsselspeicher generiert wurde. - 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_ready
gibt die folgende Meldung zurück, wenn der Message Processor zur Verarbeitung von Nachrichten bereit ist:Checking if message-processor is up: message-processor is up.
- Wenn Nachrichtenprozessoren auf mehreren Knoten installiert sind, wiederholen Sie die Schritte 1 bis 4 auf jedem Knoten des Nachrichtenprozessors.
Zusammenfassung
Die Anmeldedaten-Secrets aller Entwickler-Apps, die Sie ab jetzt erstellen, werden im Ruhezustand in der Cassandra-Datenbank verschlüsselt.
Umgebungsvariablen für Konfigurationsattribute verwenden
Alternativ können Sie die folgenden Konfigurationsattribute für den Nachrichtenprozessor und den Verwaltungsserver mithilfe von Umgebungsvariablen festlegen. Wenn festgelegt, überschreiben die Umgebungsvariablen die Attribute, die in der Konfigurationsdatei des Nachrichtenprozessors oder des Verwaltungsservers festgelegt sind.
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 in den Konfigurationsdateien auf den Knoten des Message Processor- und Verwaltungsservers weglassen, da sie ignoriert werden:
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
Property-Dateireferenz
In diesem Abschnitt werden die Konfigurationsattribute beschrieben, die Sie auf allen Knoten des Nachrichtenverarbeiters und des Verwaltungsservers festlegen müssen, wie weiter oben in diesem Dokument erläutert.
Property | 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 Klartextanmeldedaten weiterhin funktionieren.
|
conf_keymanagement_kmscred.encryption.keystore.path
|
– | Geben Sie den Pfad zum KEK-Schlüsselspeicher auf dem Knoten des Nachrichtenprozessors oder des Verwaltungsservers an. Weitere Informationen finden Sie unter Schritt 2: Verwaltungsserver konfigurieren und Schritt 3: Nachrichtenprozessoren konfigurieren. |
conf_keymanagement_kmscred.encryption.kek.alias
|
– | Alias, für den der KEK im Schlüsselspeicher gespeichert wird. |
conf_keymanagement_kmscred.encryption.keystore.pass
|
– | Optional, wenn Sie diese Attribute mithilfe von Umgebungsvariablen festlegen. Weitere Informationen finden Sie unter Umgebungsvariablen für Konfigurationsattribute verwenden. |
conf_keymanagement_kmscred.encryption.kek.pass
|
– | Optional, wenn Sie diese Attribute mithilfe von Umgebungsvariablen festlegen. Weitere Informationen finden Sie unter Umgebungsvariablen für Konfigurationsattribute verwenden. |