Secret-Verschlüsselung aktivieren

In diesem Dokument wird erläutert, wie Sie die Verschlüsselung von Consumer-Secrets von Entwickler-Apps (Clientanmeldedaten) aktivieren, die in der Cassandra-Datenbank gespeichert sind.

Übersicht

Bisher bot Apigee Edge for Private Cloud eine optionale Verschlüsselung für Key-Value-Map (KVM)-Daten und OAuth-Zugriffstokens.

In der folgenden Tabelle sind die Verschlüsselungsoptionen für inaktive Daten in Apigee for Private Cloud beschrieben:

Entität Verschlüsselung standardmäßig aktiviert Verschlüsselung optional verfügbar Weitere Informationen
KVMs Nein Ja Informationen zu verschlüsselten KVMs
OAuth-Zugriffstokens Nein Ja Siehe Tokens für zusätzliche Sicherheit hashen.
Consumer-Secrets von Entwickler-Apps Nein Ja Führen Sie die Konfigurationsschritte in diesem Dokument aus, um die Verschlüsselung 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 Konfigurationseigenschaften auf allen Management Server- 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 zur Schlüssel verschlüsselungsfunktion

In den Schritten in diesem Dokument wird erläutert, wie Sie die KEK-Funktion aktivieren, mit der 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) und funktionieren 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 es 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 beschrieben, muss auf jedem Message Processor- und Management Server-Knoten 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 sicher zu verwahren und als Sicherung zu verwenden.

Schlüsselverschlüsselung aktivieren

Führen Sie die folgenden Schritte aus, um die Verschlüsselung von Consumer-Secret-Schlüsseln zu aktivieren:

Vorbereitung

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 durchführen.
  • Sie müssen ein Apigee Edge for Private Cloud-Administrator sein.

Schritt 1: Schlüsselspeicher generieren

Führen Sie die folgenden Schritte aus, um einen Schlüsselspeicher für den Schlüsselverschlüsselungsschlüssel (KEK) zu erstellen:

  1. Führen Sie den folgenden Befehl aus, um einen Schlüsselspeicher zu generieren, in dem ein Schlüssel gespeichert wird, der zum Verschlüsseln des KEK verwendet wird. Geben Sie den Befehl genau wie gezeigt 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 bei Aufforderung ein Passwort ein. Sie verwenden dieses Passwort in späteren Abschnitten, wenn Sie den Management Server und den Message Processor konfigurieren.

    Mit diesem Befehl wird eine Schlüsselspeicherdatei kekstore.p12 mit einem Schlüssel mit dem Alias KEYSTORE_NAME generiert.

  2. (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: Management Server konfigurieren

Konfigurieren Sie als Nächstes den Management Server. Wenn Sie Management Server auf mehreren Knoten installiert haben, müssen Sie diese Schritte auf jedem Knoten wiederholen.

  1. Kopieren Sie die in Schritt 1 generierte Schlüsselspeicherdatei in ein Verzeichnis auf dem Management Server-Knoten, z. B. /opt/apigee/customer/application. Beispiel:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Achten Sie darauf, dass die Datei für den Nutzer apigee lesbar ist:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. Fügen Sie die folgenden Eigenschaften zu /opt/apigee/customer/application/management-server.properties hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. Weitere Informationen finden Sie unter 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 Tool, mit dem der Schlüsselspeicher generiert wurde, kann das KEK_PASSWORD mit dem KEYSTORE_PASSWORD identisch sein.

  4. Starten Sie den Management Server 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 Management Server bereit ist:

    Checking if management-server is up: management-server is up.
  5. Wenn Sie Management Server auf mehreren Knoten installiert haben, wiederholen Sie die Schritte 1 bis 4 auf jedem Management Server-Knoten.

Schritt 3: Entwickler-App erstellen

Nachdem die Management Server 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:

  1. Erstellen Sie eine Entwickler-App, um die Erstellung eines Datenverschlüsselungsschlüssels (KEK) auszulösen. Eine Anleitung finden Sie unter App registrieren.
  2. Sie können die Entwickler-App löschen, wenn Sie möchten. Sie müssen sie nicht behalten, nachdem der Verschlüsselung schlüssel generiert wurde.

Schritt 4: Message Processor konfigurieren

Solange die Verschlüsselung in den Message Processors nicht aktiviert ist, können Laufzeitanfragen keine verschlüsselten Anmeldedaten verarbeiten.

  1. 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
  2. Achten Sie darauf, dass die Datei für den Nutzer apigee lesbar ist:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. Fügen Sie die folgenden Eigenschaften zu /opt/apigee/customer/application/message-processor.properties hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. Weitere Informationen finden Sie unter 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 das KEK_PASSWORD je nach Tool, mit dem der Schlüsselspeicher generiert wurde, mit dem KEYSTORE_PASSWORD identisch sein kann.

  4. 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 bereit ist, Nachrichten zu verarbeiten:

    Checking if message-processor is up: message-processor is up.
  5. 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 der Anmeldedaten in der Cassandra-Datenbank verschlüsselt.

Umgebungsvariablen für Konfigurationseigenschaften verwenden

Alternativ können Sie die folgenden Konfigurationseigenschaften für Message Processor und Management Server mit Umgebungsvariablen festlegen. Wenn sie festgelegt sind, überschreiben die Umgebungsvariablen die Eigenschaften in der Konfigurationsdatei des Message Processors oder Management Servers.

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 Message Processor- und Management Server-Knoten entfernen, da sie ignoriert werden:

conf_keymanagement_kmscred.encryption.keystore.pass
conf_keymanagement_kmscred.encryption.kek.pass

Referenz zur Attributdatei

In diesem Abschnitt werden die Konfigurationseigenschaften beschrieben, die Sie auf allen Message Processor und Management Server-Knoten 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 Setzen Sie „allowFallback“ auf true, damit Ihre vorhandenen Anmeldedaten im Klartext 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: Management Server 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 Umgebungsvariablen verwenden, um diese Eigenschaften festzulegen. Weitere Informationen finden Sie unter Umgebungsvariablen für Konfigurationseigenschaften verwenden.
conf_keymanagement_kmscred.encryption.kek.pass – Optional, wenn Sie Umgebungsvariablen verwenden, um diese Eigenschaften festzulegen. Weitere Informationen finden Sie unter Umgebungsvariablen für Konfigurationseigenschaften verwenden.