Migration von Classic Block Storage von HPCS nach Key Protect

Migrieren Sie Ihre Hyper Protect Crypto Services (HPCS) Verschlüsselung für Classic Block Storage Volumes und verwenden Sie stattdessen IBM Key Protect ( Key Protect ).

Vorbereitende Schritte

Bevor Sie beginnen, vergewissern Sie sich, dass Sie Ihre Classic Block Storage Volumes migrieren müssen, um Key Protect anstelle von HPCS zu verwenden. Sie können diesen Prozess manuell durchführen, indem Sie die Schritte in diesem Abschnitt befolgen, oder Sie können die Migrationsübersicht für Details zur Verwendung eines automatischen Erkennungsskripts lesen.

Führen Sie die folgenden Schritte aus, um manuell festzustellen, ob Sie Ihre Classic Block Storage Volumes migrieren müssen.

  1. Vergewissern Sie sich, dass die HPCS-Verschlüsselung vom Blockspeicher-Plugin auf Ihrem Cluster verwendet wird.

    1. Liste aller kms-config Geheimnisse in Ihrem Cluster.
        kubectl get secrets -A --field-selector type=ibm.io/kms-config
        ```
    2. Überprüfen Sie für jedes gefundene `kms-config` Geheimnis, ob es vom Typ `hpcs` ist, indem Sie prüfen, ob die Konfiguration `hs-crypto` enthält.
    
    ```sh {: pre}
        kubectl get secret <kms-config-name> -n <namespace> -o json | jq '.data | map_values(@base64d)' | grep "hs-crypto"
        ```
    3. Identifizieren Sie für jede gefundene HPCS-Konfiguration die PVCs, die sie verwenden.
    
    ```sh {: pre}
        kubectl get pvc -A -l "encryptionKeySecret=<kms-config-name>"
        ```
    
  2. Wenn keine HPCS-verschlüsselten PVCs gefunden werden, ist keine Migration erforderlich. Wenn HPCS-verschlüsselte PVCs gefunden werden, fahren Sie mit den Migrationsschritten fort.

Voraussetzungen für die Migration

Führen Sie diese Schritte aus, bevor Sie mit der Migration beginnen.

  1. Sichern Sie alle Cluster-Ressourcen, bevor Sie den Migrationsprozess starten.

    Planen Sie ein, Ihre Ressourcensicherungen mehrere Wochen lang aufzubewahren, falls ein Rollback erforderlich ist.

    kubectl get pvc --all-namespaces -o yaml > all-pvcs.yaml
    kubectl get pv -o yaml > all-pv.yaml
    kubectl get storageclass -o yaml > all-storage-classes.yaml
    kubectl get secrets --field-selector type=ibm.io/kms-config --all-namespaces -o yaml > all-kms-config.yaml
    kubectl get secrets -n ibm-block-secrets --field-selector type=ibm.io/dek-secret -o yaml > all-dek-secrets.yaml
    
  2. Erstellen Sie eine neue Instanz oder verwenden Sie eine vorhandene IBM Key Protect.

  3. Erstellen Sie einen Stammschlüssel in Ihrer Key Protect Instanz. Notieren Sie sich die ID des Stammschlüssels zur Verwendung in den Migrationsschritten.

  4. Stellen Sie sicher, dass Sie über die erforderlichen IAM-Berechtigungen für den Zugriff auf die HPCS- und Key Protect-Instanzen verfügen.

  5. Installieren Sie das Key Protect CLI-Plug-in, falls noch nicht installiert.

    ibmcloud plugin install kp -r "IBM Cloud"
    

Migrationsschritte

Folgen Sie diesen Schritten, um Ihre Classic Block Storage Volumes von HPCS nach Key Protect zu migrieren.

Schritt 1: Ersetzen Sie das HPCS-Geheimnis durch eine Key Protect Konfiguration

  1. Erstellen Sie eine neue KMS-Konfigurationsdatei für Ihre Key Protect-Instanz. Speichern Sie die folgende Datei unter target-kp-config.yaml. Stellen Sie sicher, dass Sie die Platzhalterwerte durch Ihre Key Protect Instanzdetails ersetzen.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <kms-config-name>
      namespace: <namespace>
    stringData:
      config: |-
        {
          "api_key":"<your-api-key>",
          "iam_endpoint":"https://iam.cloud.ibm.com",
          "key_protect_endpoint":"https://<region>.api.<region>.kms.appdomain.cloud",
          "instance_id":"<kp-instance-id>",
          "root_key_id":"<kp-root-key-id>"
        }
    type: ibm.io/kms-config
    

    Werte

    • <kms-config-name>: Der Name Ihres bestehenden HPCS-KMS-Konfigurationsgeheimnisses.
    • <namespace>: Der Namespace, in dem sich das Geheimnis befindet.
    • <your-api-key>: Ein API-Schlüssel mit Zugang zu Ihrer Key Protect Instanz.
    • <region>: Die Region, in der sich Ihre Key Protect-Instanz befindet.
    • <kp-instance-id>: Die ID Ihrer „ Key Protect “-Instanz.
    • <kp-root-key-id>: Die Root-Key-ID, die Sie in Key Protect erstellt haben.
  2. Löschen Sie das vorhandene HPCS-KMS-Konfigurationsgeheimnis.

    kubectl delete secret <kms-config-name> -n <namespace>
    
  3. Erstellen Sie das neue Konfigurationsgeheimnis Key Protect.

    kubectl create -f target-kp-config.yaml
    

Schritt 2: Aktualisieren der zu verwendenden PVC-Verschlüsselungsschlüssel Key Protect

Führen Sie für jede verschlüsselte PVC, die migriert werden muss, die folgenden Schritte aus, um den Datenverschlüsselungsschlüssel (DEK) von HPCS zu lösen und ihn mit Key Protect neu zu verpacken.

  1. Konfigurieren Sie die Key Protect CLI so, dass sie auf Ihre HPCS-Instanz verweist.

    export KP_PRIVATE_ADDR=https://<hpcs-instance-id>.api.<region>.hs-crypto.appdomain.cloud
    export KP_INSTANCE_ID=<hpcs-instance-id>
    export ROOT_KEY_ID=<hpcs-root-key-id>
    
  2. Abrufen des HPCS-umhüllten DEK (WDEK) für die verschlüsselte PVC.

    1. Finden Sie das DEK-Geheimnis für Ihr PVC.
        kubectl get secrets -n ibm-block-secrets --field-selector type=ibm.io/dek-secret | grep <pv-name>
        ```
    2. Extrahieren Sie den umhüllten DEK aus dem Geheimnis.
    
    ```sh {: pre}
        kubectl get secrets -n ibm-block-secrets <pv-secret-name> -o yaml | grep wrappedDEK | awk '{print $2}' | base64 --decode
        ```
    
  3. Entpacken Sie den verpackten DEK mit dem HPCS-Stammschlüssel. Speichern Sie die unverpackte DEK aus der Ausgabe.

    ibmcloud kp key unwrap $ROOT_KEY_ID <wrapped-dek>
    
  4. Konfigurieren Sie die Key Protect CLI so, dass sie auf Ihre Key Protect Instanz verweist.

    Verwenden Sie ein separates Terminalfenster, um ein versehentliches Umschalten zwischen HPCS- und Key Protect-Konfigurationen zu vermeiden.

    export KP_PRIVATE_ADDR=https://<kp-instance-id>.api.<region>.kms.appdomain.cloud
    export KP_INSTANCE_ID=<kp-instance-id>
    export ROOT_KEY_ID=<kp-root-key-id>
    
  5. Den DEK mit dem Root-Schlüssel Key Protect neu verpacken. Speichern Sie den verpackten DEK aus der Ausgabe.

    ibmcloud kp key wrap $ROOT_KEY_ID -p UNWRAPPED-DEK-BASE64
    
  6. Ersetzen Sie das mit HPCS umhüllte DEK durch das mit Key Protect umhüllte DEK in dem PVC-Geheimnis.

    1. Kodieren Sie den neuen verpackten DEK auf base64.
        echo <kp-wrapped-dek> | base64
        ```
    2. Bearbeiten Sie das DEK-Geheimnis und ersetzen Sie den Wert `wrappedDEK` durch den neuen Wert base64-encoded Key Protect wrapped DEK.
    
    ```sh {: pre}
        kubectl edit secret -n ibm-block-secrets <pv-secret-name>
        ```
    
  7. Optional: Überprüfen Sie das Volume, indem Sie den Pod, der die verschlüsselte PVC verwendet, neu starten.

    kubectl delete pod <pod-name> -n <namespace>
    
  8. Wiederholen Sie diese Schritte für alle verschlüsselten PVCs, die von HPCS nach Key Protect migriert werden müssen.

  9. Überprüfen Sie, ob alle Pods, die verschlüsselte PVCs verwenden, in Betrieb sind.

    kubectl get pods -A
    

Nächste Schritte