Datenverschlüsselung

Standardmäßig werden die folgenden Daten auf der Hybridlaufzeitebene verschlüsselt:

  • Daten im Cache
  • Vertrags-Schlüsseldaten
  • KMS-Daten (Key Management System)
  • Daten der Schlüsselwertzuordnung (KVM)

Die Datenverschlüsselung erfordert keine spezielle Konfiguration Ihrerseits. Wenn Sie jedoch Ihre eigenen Verschlüsselungsschlüssel verwenden möchten (die Standardschlüssel ersetzen), können Sie dies tun, wie in diesem Thema erläutert.

Bereich des Verschlüsselungsschlüssels

Apigee Hybrid-Verschlüsselungsschlüssel haben einen Bereich. KMS-Schlüssel haben beispielsweise den Bereich Organisation. Dies bedeutet, dass der Schlüssel verwendet wird, um KMS-Daten für die gesamte Organisation zu verschlüsseln. In der folgenden Tabelle sind die Bereiche für jeden Schlüsseltyp aufgeführt:

Verschlüsselungsschlüssel Umfang
Vertrag Nur Organisation
KMS Nur Organisation
KVM Organisation oder Umgebung

Wenn eine KVM-Richtlinie den Bereich apiproxy oder policy (API-Proxy-Überarbeitung) angibt, wird der Schlüssel auf Organisationsebene zum Verschlüsseln der Daten verwendet. Eine allgemeine Übersicht über die Verwendung von KPMs in Apigee Edge finden Sie unter Mit Schlüsselwertzuordnungen arbeiten.

Cache Nur Umgebung

Standardverschlüsselungsschlüssel

Standardmäßig stellt Apigee Hybrid eine Reihe von Base64-codierten Schlüsseln bereit, die zum Verschlüsseln von Vertrags-, KVM-, KMS- und Cache-Daten verwendet werden. Das Hybridinstallationsprogramm von Apigee speichert die Schlüssel in der Laufzeitebene als Kubernetes Secrets und verwendet sie, um Ihre Daten mit der AES-128-Standardverschlüsselung zu verschlüsseln. Die Schlüssel liegen unter Ihrer Kontrolle. Die hybride Verwaltungsebene ist sich ihrer zu keinem Zeitpunkt bewusst.

Die Standardschlüssel werden beim Erstellen der Komponenten auf alle neuen Apigee Hybrid-Komponenten angewendet.

Standardverschlüsselungsschlüssel ändern

Obwohl nicht erforderlich, können Sie jeden der Standardverschlüsselungsschlüssel ändern, wenn Sie dies wünschen. Gehen Sie folgendermaßen vor, um einen oder mehrere Standardschlüssel zu ersetzen:

Wenn Sie die Verschlüsselungsschlüssel ändern, nachdem die Laufzeit in Ihrem Cluster erstellt wurde, funktionieren zuvor verschlüsselte Daten nicht mehr und können nicht entschlüsselt werden. Nach der Änderung werden nur neue Daten verschlüsselt und funktionieren wie erwartet.
  1. Kopieren Sie die folgenden Stanzas in die Überschreibungsdatei. Mit dieser Konfiguration können Sie die KMS- und KVM-Verschlüsselungsschlüssel für die Organisationsebene und die KVM- und Cache-Verschlüsselungsschlüssel für die Umgebungsebene ändern:
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
        contractEncryptionKey: base64-encoded-key
    
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Generieren Sie einen neuen Schlüssel für jeden Schlüssel, den Sie ersetzen möchten. Jeder Schlüssel muss ein Base64-codierter String sein, der genau 16, 24 oder 32 Byte lang ist. Siehe auch Codierten Schlüssel erstellen.
  3. Ersetzen Sie die Standardschlüssel durch neue. In diesem Beispiel werden alle Standardschlüssel durch Schlüssel ersetzt:
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
        contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="

Standardschlüssel überschreiben

Sie können die Schlüssel für die Organisation oder bestimmte Umgebungen überschreiben, die in Ihrer Überschreibungsdatei genannt werden. Wenn Sie die Komponenten erstellen, werden die Standardwerte durch die Schlüssel überschrieben, die Sie für die Organisation oder einzelne Umgebungen angeben.

Wenn Sie die Verschlüsselungsschlüssel ändern, nachdem die Laufzeit in Ihrem Cluster erstellt wurde, funktionieren zuvor verschlüsselte Daten nicht mehr und können nicht entschlüsselt werden. Nach der Änderung werden nur neue Daten verschlüsselt und funktionieren wie erwartet.
  1. Kopieren Sie die folgenden Stanzas in die Überschreibungsdatei. Mit dieser Konfiguration können Sie die KMS- und KVM-Verschlüsselungsschlüssel für die Organisationsebene und die KVM- und Cache-Verschlüsselungsschlüssel für die Umgebungsebene ändern:
    org:YOUR_ORG_NAME
    
    kmsEncryptionKey: base64-encoded-key
    kvmEncryptionKey: base64-encoded-key
    contractEncryptionKey: base64-encoded-key
    
    envs
      - name: ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
    
      - name: 2ND_ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Generieren Sie einen neuen Schlüssel für jeden Schlüssel, den Sie ersetzen möchten. Jeder Schlüssel muss ein Base64-codierter String sein, der genau 16, 24 oder 32 Byte lang ist. Siehe auch Codierten Schlüssel erstellen.
  3. Geben Sie die Schlüssel an, die Sie überschreiben möchten. In diesem Beispiel werden alle Standardschlüssel durch Schlüssel ersetzt:
    org:hybrid-org
    
    kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
    kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
    contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: prod
        kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "QjEyAvC1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: test
        kvmEncryptionKey: "A1b2C3d4E5f6G7h8I9j10K=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "B1c2D3e4F5f6H7i8J9k10L=="
    

Wenden Sie die Schlüssel-Änderungen an:

Wenden Sie die Überschreibungsdatei mit den folgenden Helm-Befehlen auf Ihren Cluster an:
  • Wenn Sie den Vertragsschlüssel oder den KVM-Schlüssel für die Organisation ändern, aktualisieren Sie die Organisation:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  • Wenn Sie den Cache-Schlüssel oder den KVM-Schlüssel für eine Umgebung ändern, aktualisieren Sie die Umgebung:
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE.yaml
    
  • Wenn Sie KMS-Schlüssel ändern, aktualisieren Sie sowohl die Organisation als auch die Umgebung:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

Hinweis zur Abwärtskompatibilität

Wenn Sie die Verschlüsselungsschlüssel aus Ihrer Überschreibungendatei bei der Erstinstallation von Apigee Hybrid entfernen, würden Sie die Verschlüsselung effektiv deaktivieren und die Werte werden unverschlüsselt gespeichert. Wenn Sie die Verschlüsselung zu einem späteren Zeitpunkt durch die Bereitstellung von Schlüsseln aktivieren, bleiben die vorhandenen Daten unverschlüsselt. Alle zukünftig hinzugefügten Daten werden jedoch verschlüsselt. Das System funktioniert weiterhin mit den unverschlüsselten Daten und den neuen verschlüsselten Daten.

Beachten Sie außerdem, dass Sie die Verschlüsselungsschlüssel später nicht mehr ändern können, sobald die Laufzeitdaten verschlüsselt sind.

So erstellen Sie einen codierten Schlüssel

Ein korrekt formatierter Base64-codierter Schlüssel ist für KVM, KMS und Cache-Verschlüsselung erforderlich. Der für diese Zwecke verwendete Schlüssel muss Base-64-codiert aus einem String mit 16, 24 oder 32 Byte sein, wie unten erläutert:

Mit dem folgenden Beispielbefehl wird ein geeigneter, zufällig generierter, Base64-codierter String mit 32 Zeichen generiert:

head -c 32 /dev/random | openssl base64