Migration de Classic Block Storage de HPCS vers Key Protect

Migrez votre chiffrement Hyper Protect Crypto Services (HPCS) pour les volumes Classic Block Storage afin d'utiliser IBM Key Protect ( Key Protect ) à la place.

Avant de commencer

Avant de commencer, vérifiez que vous devez migrer vos volumes Classic Block Storage pour utiliser Key Protect au lieu de HPCS. Vous pouvez effectuer ce processus manuellement en suivant les étapes de cette section, ou vous pouvez consulter l'aperçu de la migration pour plus de détails sur l'utilisation d'un script de détection automatisé.

Suivez ces étapes pour déterminer manuellement si vous devez migrer vos volumes Classic Block Storage.

  1. Vérifiez que le chiffrement HPCS est utilisé par le plugin de stockage de blocs sur votre cluster.

    1. Liste de tous les secrets kms-config dans votre cluster.
        kubectl get secrets -A --field-selector type=ibm.io/kms-config
        ```
    2. Pour chaque secret `kms-config` trouvé, vérifiez qu'il est de type `hpcs` en vérifiant si la configuration contient `hs-crypto`.
    
    ```sh {: pre}
        kubectl get secret <kms-config-name> -n <namespace> -o json | jq '.data | map_values(@base64d)' | grep "hs-crypto"
        ```
    3. Pour chaque configuration HPCS trouvée, identifiez les PVC qui les utilisent.
    
    ```sh {: pre}
        kubectl get pvc -A -l "encryptionKeySecret=<kms-config-name>"
        ```
    
  2. Si aucun PVC chiffré HPCS n'est trouvé, aucune migration n'est nécessaire. Si des PVC chiffrés HPCS sont trouvés, poursuivez les étapes de la migration.

Conditions préalables à la migration

Effectuez ces étapes avant de commencer la migration.

  1. Sauvegardez toutes les ressources du cluster avant de lancer le processus de migration.

    Prévoyez de conserver vos sauvegardes de ressources pendant plusieurs semaines au cas où un retour en arrière serait nécessaire.

    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. Créer une nouvelle instance ou utiliser une instance existante de IBM Key Protect.

  3. Créez une clé racine dans votre instance Key Protect. Notez l'ID de la clé racine pour l'utiliser dans les étapes de la migration.

  4. Assurez-vous que vous disposez des autorisations IAM nécessaires pour accéder aux instances HPCS et Key Protect.

  5. Installez le plug-in CLI Key Protect s'il n'est pas déjà installé.

    ibmcloud plugin install kp -r "IBM Cloud"
    

Etapes de migration

Suivez les étapes suivantes pour migrer vos volumes Classic Block Storage de HPCS vers Key Protect.

Étape 1 : Remplacer le secret HPCS par une configuration Key Protect

  1. Créez un nouveau fichier de configuration KMS pour votre instance Key Protect. Enregistrez le fichier suivant sous target-kp-config.yaml. Veillez à remplacer les valeurs de remplacement par les détails de votre instance Key Protect.

    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
    

    Valeurs

    • <kms-config-name>: Le nom de votre secret de configuration HPCS KMS existant.
    • <namespace>: L'espace de noms dans lequel se trouve le secret.
    • <your-api-key>: Une clé API permettant d'accéder à votre instance Key Protect.
    • <region>: La région où se trouve votre instance Key Protect.
    • <kp-instance-id>: L'identifiant de votre instance d' Key Protect.
    • <kp-root-key-id>: L'ID de la clé racine que vous avez créée à l'adresse Key Protect.
  2. Supprimer le secret de configuration HPCS KMS existant.

    kubectl delete secret <kms-config-name> -n <namespace>
    
  3. Créez le nouveau secret de configuration Key Protect.

    kubectl create -f target-kp-config.yaml
    

Étape 2 : Mise à jour des clés de cryptage PVC à utiliser Key Protect

Pour chaque PVC crypté qui doit être migré, suivez les étapes suivantes pour déballer la clé de cryptage des données (DEK) de HPCS et la remballer avec Key Protect.

  1. Configurez le CLI Key Protect pour qu'il pointe vers votre instance HPCS.

    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. Récupérer la DEK enveloppée (WDEK) du PVC crypté.

    1. Trouvez le secret DEK pour votre PVC.
        kubectl get secrets -n ibm-block-secrets --field-selector type=ibm.io/dek-secret | grep <pv-name>
        ```
    2. Extraire la DEK enveloppée du secret.
    
    ```sh {: pre}
        kubectl get secrets -n ibm-block-secrets <pv-secret-name> -o yaml | grep wrappedDEK | awk '{print $2}' | base64 --decode
        ```
    
  3. Déballer la DEK enveloppée à l'aide de la clé racine HPCS. Sauvegarder la DEK non enveloppée de la sortie.

    ibmcloud kp key unwrap $ROOT_KEY_ID <wrapped-dek>
    
  4. Configurez le CLI Key Protect pour qu'il pointe vers votre instance Key Protect.

    Utilisez une fenêtre de terminal séparée pour éviter de basculer accidentellement entre les configurations HPCS et Key Protect.

    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. Remballez la DEK à l'aide de la clé racine Key Protect. Sauvegarder la DEK enveloppée de la sortie.

    ibmcloud kp key wrap $ROOT_KEY_ID -p UNWRAPPED-DEK-BASE64
    
  6. Remplacer le DEK enveloppé de HPCS par le DEK enveloppé de Key Protect dans le secret du PVC.

    1. Encoder la nouvelle DEK enveloppée à l'adresse base64.
        echo <kp-wrapped-dek> | base64
        ```
    2. Modifiez le secret DEK et remplacez la valeur `wrappedDEK` par la nouvelle valeur base64-encoded Key Protect wrapped DEK.
    
    ```sh {: pre}
        kubectl edit secret -n ibm-block-secrets <pv-secret-name>
        ```
    
  7. Facultatif : Vérifiez le volume en redémarrant le pod qui utilise le PVC crypté.

    kubectl delete pod <pod-name> -n <namespace>
    
  8. Répétez ces étapes pour tous les PVC cryptés qui doivent être migrés de HPCS à Key Protect.

  9. Vérifiez que tous les pods utilisant des PVC cryptés sont en cours d'exécution.

    kubectl get pods -A
    

Etapes suivantes