Secret-Verschlüsselung aktivieren

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

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

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

  1. 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
  2. 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
  3. 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 dem KEYSTORE_PASSWORD identisch sein kann, je nachdem, mit welchem Tool der Schlüsselspeicher generiert wurde.

  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

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

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

  1. 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
  2. Sorgen Sie dafür, dass die Datei für den apigee-Nutzer 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. 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 dem KEYSTORE_PASSWORD identisch sein kann, je nachdem, mit welchem Tool der Schlüsselspeicher generiert wurde.

  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 zur Verarbeitung von Nachrichten bereit ist:

    Checking if message-processor is up: message-processor is up.
  5. 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.