Migrazione di Block Storage classico da HPCS a Key Protect

Migrare la crittografia Hyper Protect Crypto Services (HPCS) per i volumi classici Block Storage in modo da utilizzare IBM Key Protect ( Key Protect ).

Prima di iniziare

Prima di iniziare, verificare che sia necessario migrare i volumi Classic Block Storage per utilizzare Key Protect invece di HPCS. È possibile completare questo processo manualmente seguendo i passaggi di questa sezione, oppure consultare il sito panoramica sulla migrazione per i dettagli sull'utilizzo di uno script di rilevamento automatico.

Seguite questi passaggi per determinare manualmente se è necessario migrare i volumi Classic Block Storage.

  1. Verificare che la crittografia HPCS sia utilizzata dal plugin di archiviazione a blocchi sul cluster.

    1. Elenca tutti i segreti di kms-config nel cluster.
        kubectl get secrets -A --field-selector type=ibm.io/kms-config
        ```
    2. Per ogni segreto `kms-config` trovato, verificare che sia di tipo `hpcs` controllando se la configurazione contiene `hs-crypto`.
    
    ```sh {: pre}
        kubectl get secret <kms-config-name> -n <namespace> -o json | jq '.data | map_values(@base64d)' | grep "hs-crypto"
        ```
    3. Per ogni configurazione HPCS trovata, identificare i PVC che la utilizzano.
    
    ```sh {: pre}
        kubectl get pvc -A -l "encryptionKeySecret=<kms-config-name>"
        ```
    
  2. Se non vengono trovati PVC criptati HPCS, non è necessaria alcuna migrazione. Se vengono trovati PVC criptati HPCS, procedere con le fasi di migrazione.

Prerequisiti per la migrazione

Completare questi passaggi prima di iniziare la migrazione.

  1. Eseguire il backup di tutte le risorse del cluster prima di avviare il processo di migrazione.

    Pianificate di conservare i backup delle risorse per diverse settimane, nel caso in cui sia necessario un rollback.

    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. Creare una nuova istanza di IBM Key Protect o utilizzarne una esistente.

  3. Creare una chiave principale nell'istanza di Key Protect. Annotare l'ID della chiave principale da utilizzare nelle fasi di migrazione.

  4. Assicurarsi di disporre delle autorizzazioni IAM necessarie per accedere a entrambe le istanze HPCS e Key Protect.

  5. Installare il plug-in Key Protect CLI se non è già installato.

    ibmcloud plugin install kp -r "IBM Cloud"
    

Passi di migrazione

Seguite questi passaggi per migrare i volumi Classic Block Storage da HPCS a Key Protect.

Passo 1: Sostituire il segreto HPCS con una configurazione Key Protect

  1. Creare un nuovo file di configurazione KMS per l'istanza Key Protect. Salvate il seguente file come target-kp-config.yaml. Assicurarsi di sostituire i valori segnaposto con i dati dell'istanza 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
    

    Valori

    • <kms-config-name>: Il nome del segreto di configurazione di HPCS KMS esistente.
    • <namespace>: Lo spazio dei nomi in cui si trova il segreto.
    • <your-api-key>: Una chiave API con accesso alla vostra istanza Key Protect.
    • <region>: La regione in cui si trova l'istanza di Key Protect.
    • <kp-instance-id>: L'ID della tua istanza di Key Protect.
    • <kp-root-key-id>: L'ID della chiave principale creata in Key Protect.
  2. Eliminare il segreto di configurazione HPCS KMS esistente.

    kubectl delete secret <kms-config-name> -n <namespace>
    
  3. Creare il nuovo segreto di configurazione di Key Protect.

    kubectl create -f target-kp-config.yaml
    

Passo 2: Aggiornare le chiavi di crittografia del PVC da utilizzare Key Protect

Per ogni PVC crittografato che deve essere migrato, seguire questi passaggi per scartare la chiave di crittografia dei dati (DEK) da HPCS e riavvolgerla con Key Protect.

  1. Configurare la CLI di Key Protect per puntare all'istanza 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. Recupera il DEK avvolto HPCS (WDEK) per il PVC crittografato.

    1. Trovate il segreto DEK per il vostro PVC.
        kubectl get secrets -n ibm-block-secrets --field-selector type=ibm.io/dek-secret | grep <pv-name>
        ```
    2. Estrarre il DEK avvolto dal segreto.
    
    ```sh {: pre}
        kubectl get secrets -n ibm-block-secrets <pv-secret-name> -o yaml | grep wrappedDEK | awk '{print $2}' | base64 --decode
        ```
    
  3. Disimpegnare il DEK avvolto utilizzando la chiave principale HPCS. Salvare il DEK non confezionato dall'output.

    ibmcloud kp key unwrap $ROOT_KEY_ID <wrapped-dek>
    
  4. Configurare la CLI di Key Protect per puntare all'istanza di Key Protect.

    Utilizzare una finestra di terminale separata per evitare di passare accidentalmente dalla configurazione HPCS a quella 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. Ricompattare il DEK utilizzando la chiave principale Key Protect. Salvare il DEK avvolto dall'output.

    ibmcloud kp key wrap $ROOT_KEY_ID -p UNWRAPPED-DEK-BASE64
    
  6. Sostituire il DEK rivestito di HPCS con il DEK rivestito di Key Protect nel segreto di PVC.

    1. Codificare il nuovo DEK avvolto in base64.
        echo <kp-wrapped-dek> | base64
        ```
    2. Modificare il segreto DEK e sostituire il valore `wrappedDEK` con il nuovo base64-encoded Key Protect avvolto DEK.
    
    ```sh {: pre}
        kubectl edit secret -n ibm-block-secrets <pv-secret-name>
        ```
    
  7. Facoltativo: Verificare il volume riavviando il pod che utilizza il PVC criptato.

    kubectl delete pod <pod-name> -n <namespace>
    
  8. Ripetere questi passaggi per tutti i PVC criptati che devono essere migrati da HPCS a Key Protect.

  9. Verificare che tutti i pod che utilizzano PVC criptati siano in esecuzione.

    kubectl get pods -A
    

Passi successivi