Secret-Verschlüsselung aktivieren

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):

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

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

  1. 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
  2. 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
  3. 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 mit KEYSTORE_PASSWORD identisch sein.

  4. 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.
  5. 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:

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

  1. 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
  2. Sorgen Sie dafür, dass die Datei für den Nutzer apigee lesbar ist:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. 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 mit KEYSTORE_PASSWORD identisch sein.

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