Migrazione della VPC Block Storage da HPCS a Key Protect

Migrare la crittografia Hyper Protect Crypto Services (HPCS) per i volumi VPC Block Storage per utilizzare invece IBM Key Protect ( Key Protect ).

Prima di iniziare

Se non l'avete ancora fatto, rivedete le informazioni contenute in panoramica sulla migrazione per determinare se è necessario migrare i volumi di storage VPC Block per utilizzare Key Protect invece di HPCS.

Prerequisiti per la migrazione

Completare questi passaggi prima di iniziare la migrazione.

  1. Creare una nuova istanza o utilizzare un'istanza esistente di IBM Key Protect Dedicated.

  2. Dall'istanza Key Protect, notare il CRN della Customer Root Key (CRK) di destinazione.

    ibmcloud kp keys -i KP-INSTANCE-ID
    
  3. Assicurarsi che il VPC Block Storage abbia accesso in lettura all'istanza Key Protect. Potrebbe essere necessario assegnare l'accesso utilizzando IAM. Questo accesso può essere incrociato e deve essere configurato correttamente prima di procedere.

  4. Se non l'avete ancora fatto, scaricate gli strumenti di migrazione che trovate nella panoramica sulla migrazione.

Passi di migrazione

Seguire questi passaggi per migrare i volumi VPC Block Storage da HPCS a Key Protect.

  1. Creare un file CSV che mappi il CRK HPCS di origine al CRK di destinazione Key Protect.

    1. Ottieni il CRN della tua chiave radice HPCS.
        ibmcloud resource service-instance <hpcs-instance-name>
        ```
    2. Ottenere il CRN della chiave root di Key Protect.
    
    ```sh {: pre}
        ibmcloud resource service-instance <kp-instance-name>
        ```
    3. Creare un file CSV (ad esempio, `hpcs-kms-migration.csv`) con il seguente formato:
    
    ```csv {: codeblock}
        <source-hpcs-crk-crn>,<destination-kp-crk-crn>
        ```
        Esempio:
        ```csv {: codeblock}
        crn:v1:staging:public:hs-crypto:us-south:a/1152aa1c1ec54274ac42b807c90c:0ce92f39-69fd-4200-ba53-5ed555689:key:43eb6a-5451-4ea1-8080-0ca2d6cc7,crn:v1:staging:public:kms:us-south:a/1152aa1c1ec54274ac4ad8507c90c:b2ee9d-b658-4939-bb63-ffb6e7442:key:8cf424f4-bd6a-4de9-8ad5-5c60332de
        ```
    
  2. Impostare le variabili d'ambiente necessarie per lo strumento di migrazione.

    Se disponi di più istanze KMS, assicurati che gli endpoint utilizzati in questo passaggio corrispondano all'istanza che desideri migrare.

    1. Esportare le variabili d'ambiente richieste. Sostituire i valori segnaposto con gli endpoint e la chiave API effettivi.
        export HPCS_API_ENDPOINT=https://<hpcs-instance-id>.api.<region>.hs-crypto.appdomain.cloud
        export KP_ST_ENDPOINT=https://<kp-instance-id>.api.<region>.kms.appdomain.cloud
        export IBMCLOUD_API_KEY=<api-key-with-access-to-kms-and-hpcs>
        export IBMCLOUD_API_KEY_KP_ST=$IBMCLOUD_API_KEY
        ```
        Per gli ambienti di staging, impostare anche:
        ```sh {: pre}
        export IBMCLOUD_STAGE=true
        export DEBUG_MODE=true
        ```
    
  3. Convalidare il file CSV e verificare lo stato attuale della migrazione. Si noti che, se sono in uso più chiavi, il file CSV potrebbe contenere più voci.

    1. Esegui il comando "status" per verificare la configurazione.
        ./crk-migration-tool-darwin-arm64-1.1.0 status hpcs-kms-migration.csv
        ```
    2. Esaminare l'output per verificare che i CRK di origine e di destinazione siano identificati correttamente.
    
    
  4. Creare l'intento di migrazione CRK utilizzando il file CSV.

    1. Eseguire il comando create per stabilire l'intento di migrazione.
        ./crk-migration-tool-darwin-arm64-1.1.0 create hpcs-kms-migration.csv
        ```
    2. Verificare che l'intento sia stato creato correttamente controllando l'output del comando.
    
    
  5. Eseguire la migrazione CRK effettiva sincronizzando l'intento. Si noti che, se la stessa chiave viene utilizzata in più cluster, verranno migrati anche tutti i volumi che utilizzano tale chiave in quei cluster.

    1. Eseguire il comando sync per eseguire la migrazione.
        ./crk-migration-tool-darwin-arm64-1.1.0 sync hpcs-kms-migration.csv
        ```
    2. Attendere il completamento dell'operazione di sincronizzazione. Questo processo migra le chiavi di crittografia dei volumi.
    
    
  6. Verificare che i volumi facciano ora riferimento al CRK Key Protect.

    Devi solo controllare i volumi che hai migrato. Se hai utilizzato lo script di rilevamento per elencare i volumi che utilizzano la chiave HPCS, controlla i volumi elencati nell'output.

    1. Elencare i volumi persistenti e annotare gli ID dei volumi.
        kubectl get pv
        ```
    2. Descrivere un volume persistente per ottenere l'ID del volume.
    
    ```sh {: pre}
        kubectl describe pv <pv-name>
        ```
    3. Controllare i dettagli del volume utilizzando la CLI di IBM Cloud.
    
    ```sh {: pre}
        ibmcloud is volume <volume-id>
        ```
    4. Nell'output, verificare che il campo `Encryption Key` faccia ora riferimento al CRK CRN dell'istanza Key Protect anziché all'istanza HPCS.
    
    
  7. Aggiornare le classi di memorizzazione per garantire che tutti i PVC futuri utilizzino il CRK Key Protect.

    È necessario completare questo passaggio solo per le classi di archiviazione che sono state migrate. Se hai utilizzato lo script di rilevamento per individuare le classi di archiviazione che utilizzano la chiave HPCS, completa questo passaggio per le classi elencate nell'output.

    1. Elencare le classi di archiviazione esistenti.
        kubectl get storageclass
        ```
    2. Identificare le classi di archiviazione che fanno riferimento al CRK HPCS nei loro parametri.
    
    3. Eliminare le classi di archiviazione supportate da HPCS.
    
    ```sh {: pre}
        kubectl delete storageclass <storageclass-name>
        ```
    4. Creare nuove classi di archiviazione con il CRN Key Protect CRK. Utilizza il seguente esempio come modello:
    
    ```yaml {: codeblock}
        apiVersion: storage.k8s.io/v1
        kind: StorageClass
        metadata:
          name: ibmc-vpc-block-kms
        provisioner: vpc.block.csi.ibm.io
        parameters:
          profile: "general-purpose"
          encrypted: "true"
          encryptionKey: "<key-protect-crk-crn>"
          csi.storage.k8s.io/fstype: "ext4"
        reclaimPolicy: Delete
        allowVolumeExpansion: true
        volumeBindingMode: WaitForFirstConsumer
        ```
    5. Applicare la nuova classe di archiviazione.
    
    ```sh {: pre}
        kubectl apply -f <storageclass-file>
        ```
    

Passi successivi

  • Verificare che le applicazioni continuino a funzionare correttamente con i volumi migrati.
  • Monitorare l'istanza di Key Protect per rilevare eventuali problemi di accesso o di crittografia.
  • Aggiornare la documentazione e i runbook per riflettere la nuova configurazione di Key Protect.
  • Considerate la possibilità di impostare politiche di rotazione delle chiavi per le chiavi root di Key Protect.