In diesem Dokument wird beschrieben, wie Sie die Verschlüsselung von Verbrauchergeheimnissen (Clientanmeldedaten) der Entwickler-App aktivieren, die in der Cassandra-Datenbank gespeichert sind.
Übersicht
Traditionell bietet Apigee Edge for Private Cloud eine optionale Verschlüsselung für KVM-Daten (Key Value Map) und OAuth-Zugriffstokens.
In der folgenden Tabelle werden die Verschlüsselungsoptionen für ruhende Daten in Apigee for Private Cloud beschrieben:
Entität | Standardmäßig aktivierte Verschlüsselung | Optionale Verschlüsselung | Weitere Dokumentation |
KVMs | Nein | Ja | Weitere Informationen finden Sie unter Verschlüsselte KVMs. |
OAuth-Zugriffstoken | 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 Knoten des Nachrichten- und Verwaltungsservers ausführen:
- Erstellen Sie einen Schlüsselspeicher, um einen Schlüsselverschlüsselungsschlüssel (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.
- Konfigurationseigenschaften auf allen Verwaltungsserver- und Nachrichtenprozessorknoten 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.
Wichtige Informationen zur Schlüsselverschlüsselung
In den Schritten in diesem Dokument wird erläutert, wie Sie das KEK-Feature aktivieren, mit dem Apigee die geheimen Schlüssel verschlüsseln kann, mit denen die Consumer-Secrets der Entwickler-App verschlüsselt werden, wenn sie inaktiv in der Cassandra-Datenbank gespeichert werden.
Vorhandene Werte in der Datenbank bleiben standardmäßig unverändert (in Klartext) und funktionieren weiterhin wie gewohnt.
Wenn Sie einen Schreibvorgang auf eine unverschlüsselte Entität ausführen, wird sie verschlüsselt, wenn der Vorgang gespeichert wird. Wenn Sie beispielsweise ein unverschlüsseltes Token widerrufen und es später genehmigen, wird das neu genehmigte Token verschlüsselt.
Schlüssel schützen
Bewahren Sie eine Kopie des Schlüsselspeichers, in dem der KEK gespeichert ist, an einem sicheren Ort auf. Wir empfehlen, einen eigenen sicheren Mechanismus zum Speichern einer Kopie des Schlüsselspeichers zu verwenden. Wie in der Anleitung in diesem Dokument erläutert, muss ein Schlüsselspeicher auf jedem Knoten des Nachrichten- und Verwaltungsservers platziert werden, auf den die lokale Konfigurationsdatei verweisen kann. Es ist jedoch auch wichtig, eine Kopie des Schlüsselspeichers zur Sicherheit und als Sicherung an einem anderen Ort aufzubewahren.
Schlüsselverschlüsselung aktivieren
Gehen Sie wie folgt vor, um die Verschlüsselung mit Consumer-Secret-Schlüsseln durchzuführen:
Vorbereitung
Sie müssen die folgenden Anforderungen erfüllen, bevor Sie die Schritte in diesem Dokument ausführen können:
- 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 Administrator von Apigee Edge for Private Cloud sein.
Schritt 1: Schlüsselspeicher generieren
So erstellen Sie einen Schlüsselspeicher für den Schlüsselverschlüsselungsschlüssel (KEK):
- Führen Sie den folgenden Befehl aus, um einen Schlüsselspeicher zu generieren, in dem ein Schlüssel gespeichert wird, mit dem der KEK verschlüsselt wird. Geben Sie den Befehl genau so ein. Sie können einen beliebigen Namen für den Schlüsselspeicher 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 den folgenden Abschnitten, wenn Sie den Verwaltungsserver und den Message Processor konfigurieren.
Mit diesem Befehl wird eine Keystore-Datei kekstore.p12 mit einem Schlüssel mit dem Alias KEYSTORE_NAME generiert.
- Optional: Überprüfen Sie mit dem folgenden Befehl, ob die Datei ordnungsgemäß 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
Mit BCFKS-Schlüsselspeichern für FIPS-fähige Betriebssysteme arbeiten
Wenn Sie Edge for Private Cloud auf einem FIPS-kompatiblen Betriebssystem verwenden, sollten Sie einen Schlüsselspeicher vom Typ BCFKS generieren. Ein solcher Schlüsselspeicher kann auf einem Nicht-FIPS-Computer generiert und dann auf einen FIPS-kompatiblen Computer übertragen werden. Verwenden Sie den folgenden Befehl, um den Schlüsselspeicher zu generieren:
keytool -genseckey -alias <KEYSTORE_NAME> -keyalg AES -keysize 256 \
-storetype BCFKS -keystore keystore.bcfks \
-providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
-keypass keystorepass -storepass keystorepass
Möglicherweise müssen Sie auf dem Computer, auf dem Sie diesen Schlüsselspeicher generieren, zusätzliche Java-Einstellungen vornehmen. Möglicherweise müssen Sie die Java-Sicherheitsdatei des Computers bearbeiten (normalerweise unter /usr/lib/jvm/jre/lib/security/java.security). Suchen Sie in dieser Datei die folgenden Properties und bearbeiten Sie sie:
# Don't rely on /dev/random for generating random numbers
securerandom.source=file:/dev/urandom
securerandom.strongAlgorithms=PKCS11:SunPKCS11-NSS-FIPS
Schritt 2: Verwaltungsserver konfigurieren
Konfigurieren Sie als Nächstes den Verwaltungsserver. Wenn Verwaltungsserver auf mehreren Knoten installiert sind, müssen Sie diese Schritte auf jedem Knoten wiederholen.
- Kopieren Sie die in Schritt 1 generierte Keystore-Datei 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
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 Attribute hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. Weitere Informationen finden Sie unter Property-Datei-Referenz.
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 Tool, mit dem der Schlüsselspeicher generiert wurde, kann
KEK_PASSWORD
mitKEYSTORE_PASSWORD
identisch sein. - 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
Wenn der Verwaltungsserver bereit ist, gibt der Befehl
wait_for_ready
die folgende Meldung zurück:Checking if management-server is up: management-server is up.
- Wenn Sie auf mehreren Knoten Verwaltungsserver 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, mit dem die Daten der Clientanmeldedaten verschlüsselt werden:
- Erstellen Sie eine Entwickler-App, um die Erstellung eines Datenverschlüsselungsschlüssels (Data Encryption Key, DEK) auszulösen. Eine Anleitung dazu finden Sie unter App registrieren.
- Lösche gegebenenfalls die Entwickler-App. Sie müssen sie nicht aufbewahren, sobald der Verschlüsselungsschlüssel generiert wurde.
Schritt 4: Nachrichtenprozessoren konfigurieren
Solange die Verschlüsselung in den Nachrichtenprozessoren nicht aktiviert ist, können in Laufzeitanfragen keine verschlüsselten Anmeldedaten verarbeitet werden.
- Kopieren Sie die in Schritt 1 generierte Schlüsselspeicherdatei in ein Verzeichnis auf dem Nachrichtenverarbeiterknoten, 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 Nutzer
apigee
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. Siehe auch Referenz zu Property-Dateien.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 Tool, mit dem der Schlüsselspeicher generiert wurde, kann
KEK_PASSWORD
mitKEYSTORE_PASSWORD
identisch sein. - Starten Sie den Nachrichtenprozessor 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 Nachrichtenprozessor zur Verarbeitung von Nachrichten bereit ist:Checking if message-processor is up: message-processor is up.
- Wenn Sie Nachrichtenprozessoren auf mehreren Knoten installiert haben, wiederholen Sie die Schritte 1 bis 4 auf jedem Nachrichtenprozessorknoten.
Zusammenfassung
Das Secret für die Anmeldedaten aller Entwickler-Apps, die Sie ab jetzt erstellen, wird im inaktiven Zustand in der Cassandra-Datenbank verschlüsselt.
Umgebungsvariablen für Konfigurationseigenschaften verwenden
Alternativ können Sie die folgenden Konfigurationseigenschaften für den Nachrichtenprozessor und den Verwaltungsserver mithilfe von Umgebungsvariablen festlegen. Wenn die Umgebungsvariablen festgelegt sind, überschreiben die Umgebungsvariablen die Attribute, die in der Konfigurationsdatei des Nachrichtenprozessors oder des Verwaltungsservers festgelegt wurden.
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 Konfigurationseigenschaften aus den Konfigurationsdateien auf den Knoten des Nachrichten- und Verwaltungsservers auslassen, da sie ignoriert werden:
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
Referenz zu Attributdateien
In diesem Abschnitt werden die Konfigurationseigenschaften beschrieben, die Sie auf allen Knoten des Nachrichten- und Verwaltungsservers festlegen müssen, wie bereits 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
|
Legen Sie „allowFallback“ auf true fest, damit Ihre vorhandenen Anmeldedaten im Klartext 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: Nachrichten-Prozessoren 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 mithilfe von Umgebungsvariablen festlegen. Siehe auch Umgebungsvariablen für Konfigurationsattribute verwenden. |
conf_keymanagement_kmscred.encryption.kek.pass
|
– | Optional, wenn Sie diese Eigenschaften mithilfe von Umgebungsvariablen festlegen. Siehe auch Umgebungsvariablen für Konfigurationsattribute verwenden. |