Informationen zur Verschlüsselung für Portworx

Übersicht über die Verschlüsselung

Die folgende Abbildung veranschaulicht den Ablauf der Verschlüsselung in Portworx, wenn Sie eine Verschlüsselung der einzelnen Datenträger eingerichtet haben.

Verschlüsseln von Portworx
Portworx

  1. Der Benutzer erstellt einen PVC (PersistentVolumeClaim) mit einer Portworx-Speicherklasse und fordert die Verschlüsslung des Speichers an.
  2. Portworx ruft die IBM Key Protect- oder Hyper Protect Crypto Services-API WrapCreateDEK auf, um eine Kennphrase mithilfe des Kundenrootschlüssels (Customer Root Key - CRK) zu erstellen, der im geheimen Schlüssel von Portworx gespeichert ist.
  3. Die IBM Key Protect- oder Hyper Protect Crypto Services-Serviceinstanz generiert eine 256-Bit-Kennphrase und schließt die Kennphrase in den Datenverschlüsselungsschlüssel (DEK) ein. Der DEK wird an den Portworx-Cluster zurückgegeben.
  4. Der Portworx-Cluster verwendet die Kennphrase zur Verschlüsselung des Datenträgers.
  5. Der Portworx-Cluster speichert den DEK im Klartext in der Portworx-Etcd-Datenbank, ordnet die Datenträger-ID dem DEK zu und entfernt die Kennphrase aus dem Hauptspeicher.

Übersicht über Entschlüsselung

Die folgende Abbildung veranschaulicht den Ablauf der Entschlüsselung in Portworx, wenn Sie eine Verschlüsselung der einzelnen Datenträger eingerichtet haben.

Entschlüsseln von Portworx
von Portworx

  1. Kubernetes sendet eine Anforderung zur Entschlüsselung eines verschlüsselten Datenträgers.
  2. Portworx fordert den DEK für den Datenträger aus der Portworx-Etcd-Datenbank an.
  3. Die Portworx-Etcd-Datenbank ruft den DEK ab und gibt ihn an den Portworx-Cluster zurück.
  4. Der Portworx-Cluster ruft die IBM Key Protect- oder Hyper Protect Crypto Services-API UnWrapDEK unter Angabe des DEK und des Rootschlüssels (CRK), der im geheimen Schlüssel von Portworx gespeichert ist, auf.
  5. IBM Key Protect oder Hyper Protect Crypto Services öffnet den DEK, um die Kennphrase zu extrahieren, und gibt die Kennphrase an den Portworx-Cluster zurück.
  6. Der Portworx-Cluster verwendet die Kennphrase zur Entschlüsselung des Datenträgers. Nach der Entschlüsselung des Datenträgers wird die Kennphrase aus dem Portworx-Cluster entfernt.

Datenträgerverschlüsselung einrichten

Um Daten in einem Portworx Volume zu schützen, können Sie einen Schlüsselverwaltungsdienst (KMS) wie IBM Key Protect oder Hyper Protect Crypto Services verwenden.

Wenn Sie zum Verschlüsseln Ihrer Datenträger keine IBM Key Protect- oder Hyper Protect Crypto Services-Rootschlüssel verwenden möchten, können Sie während der Portworx-Installation Kubernetes Secret als Speichertyp für Ihren geheimen Portworx-Schlüssel auswählen. Mit dieser Option können Sie nach der Installation von Portworx Ihren eigenen benutzerdefinierten Verschlüsselungsschlüssel in einem Kubernetes-Geheimnis speichern. Weitere Informationen finden Sie in der Dokumentation zu Portworx.

KMS-Instanz und -Berechtigungsnachweise abrufen

Datenträgerverschlüsselung mit Hyper Protect Crypto Services einrichten

IBM Cloud ändert seine dedizierten Schlüsselverwaltungsservices von Hyper Protect Crypto Services zu Key Protect Dedicated.

  1. Erstellen Sie eine Serviceinstanz.

  2. Erstellen Sie einen Rootschlüssel.

  3. Erstellen Sie eine Service-ID.

  4. Private Cluster: Erstellen Sie ein virtuelles privates Endpunktgateway, das den Zugriff auf Ihre KMS-Instanz ermöglicht. Stellen Sie sicher, dass Sie mindestens 1 IP-Adresse aus jedem Teilnetz in Ihrer VPC an das VPE binden.

  5. Rufen Sie den öffentlichen Endpunkt für die Schlüsselverwaltung unter URL ab. Stellen Sie sicher, dass Sie Ihren Endpunkt im richtigen Format notieren, z. B. https://api.us-south.hs-crypto.cloud.ibm.com:<port>. Weitere Informationen finden Sie in der API-Dokumentation von Hyper Protect Crypto Services.

Datenträgerverschlüsselung mit IBM Key Protect einrichten

  1. Erstellen Sie eine Serviceinstanz.

  2. Erstellen Sie einen Rootschlüssel.

  3. Erstellen Sie eine Service-ID.

  4. Rufen Sie die Region ab, in der Sie Ihre Serviceinstanz erstellt haben, und notieren Sie sie. Sie benötigen diesen Wert später, wenn Sie Ihren geheimen Schlüssel erstellen.

  5. Private Cluster: Erstellen Sie ein virtuelles privates Endpunktgateway, das den Zugriff auf Ihre KMS-Instanz ermöglicht. Stellen Sie sicher, dass Sie mindestens 1 IP-Adresse aus jedem Teilnetz in Ihrer VPC an das VPE binden.

Geheimen Schlüssel in Ihrem Cluster erstellen

  1. Codieren Sie die Berechtigungsnachweise, die Sie im vorherigen Abschnitt abgerufen haben, in Base64 und notieren Sie alle Base64-codierten Werte. Wiederholen Sie diesen Befehl für jeden Parameter, um den Base64-codierten Wert abzurufen.
    echo -n "<value>" | base64
    
  2. Erstellen Sie in Ihrem Cluster einen Namensbereich mit der Bezeichnung portworx.
    kubectl create ns portworx
    
  3. Erstellen Sie einen geheimen Kubernetes-Schlüssel mit der Bezeichnung px-ibm im Namensbereich portworx Ihres Clusters, um Ihre IBM Key Protect-Informationen zu speichern.
    1. Erstellen Sie eine Konfigurationsdatei für Ihren geheimen Kubernetes-Schlüssel mit dem folgenden Inhalt.
        apiVersion: v1
        kind: Secret
        metadata:
          name: px-ibm
          namespace: portworx
        type: Opaque
        data:
          IBM_SERVICE_API_KEY: <base64_apikey>
          IBM_INSTANCE_ID: <base64_guid>
          IBM_CUSTOMER_ROOT_KEY: <base64_rootkey>
          IBM_BASE_URL: <base64_endpoint>
        ```
        `metadata.name`
        :   Geben Sie `px-ibm` als Namen für Ihren geheimen Kubernetes-Schlüssel ein. Wenn Sie einen anderen Namen verwenden, erkennt Portworx den geheimen Schlüssel während der Installation nicht.
    
        `data.IBM_SERVICE_API_KEY`
        :   Geben Sie den base64-codierten IBM Key Protect- oder Hyper Protect Crypto Services-API-Schlüssel ein, die Sie zuvor abgerufen haben.
    
        `data.IBM_INSTANCE_ID`
        :   Geben Sie die base64-codierte Serviceinstanz-GUID ein, die Sie zuvor abgerufen haben.
    
        `data.IBM_CUSTOMER_ROOT_KEY`
        :   Geben Sie den Base64-codierten Rootschlüssel ein, den Sie zuvor abgerufen haben.
    
        `data.IBM_BASE_URL`
        :   IBM Key Protect: Geben Sie den Base64-codierten API-Endpunkt Ihrer Serviceinstanz ein.
            :   Hyper Protect Crypto Services: Geben Sie den den Base64-codierten öffentlichen Endpunkt für das Schlüsselmanagement ein.
    
    2. Erstellen Sie den geheimen Schlüssel im Namensbereich `portworx` Ihres Clusters.
    ```sh {: pre}
        kubectl apply -f secret.yaml
        ```
    3. Überprüfen Sie, ob der geheime Schlüssel erfolgreich erstellt wurde.
    ```sh {: pre}
        kubectl get secrets -n portworx
        ```