Migración de Classic Block Storage de HPCS a Key Protect
Migre su cifrado Hyper Protect Crypto Services (HPCS) para volúmenes Classic Block Storage para utilizar IBM Key Protect ( Key Protect ) en su lugar.
Antes de empezar
Antes de empezar, compruebe que necesita migrar sus volúmenes Classic Block Storage para utilizar Key Protect en lugar de HPCS. Puede completar este proceso manualmente siguiendo los pasos de esta sección, o puede consultar la descripción general de la migración para obtener detalles sobre el uso de un script de detección automatizado.
Siga estos pasos para determinar manualmente si necesita migrar sus volúmenes Classic Block Storage.
-
Compruebe que el complemento de almacenamiento en bloque de su clúster utiliza el cifrado HPCS.
- Enumera todos los secretos de
kms-configen tu clúster.
kubectl get secrets -A --field-selector type=ibm.io/kms-config ``` 2. Para cada secreto `kms-config` encontrado, verifique que es del tipo `hpcs` comprobando si la configuración contiene `hs-crypto`. ```sh {: pre} kubectl get secret <kms-config-name> -n <namespace> -o json | jq '.data | map_values(@base64d)' | grep "hs-crypto" ``` 3. Para cada configuración HPCS encontrada, identifique los PVC que los utilizan. ```sh {: pre} kubectl get pvc -A -l "encryptionKeySecret=<kms-config-name>" ``` - Enumera todos los secretos de
-
Si no se encuentra ningún PVC cifrado con HPCS, no es necesaria la migración. Si se encuentran PVC cifrados con HPCS, continúe con los pasos de migración.
Requisitos previos para la migración
Complete estos pasos antes de iniciar la migración.
-
Realice una copia de seguridad de todos los recursos del clúster antes de iniciar el proceso de migración.
Planifique conservar las copias de seguridad de sus recursos durante varias semanas en caso de que sea necesaria una reversión.
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 -
Cree una nueva instancia de IBM Key Protect o utilice una ya existente.
-
Cree una clave raíz en su instancia Key Protect. Anote el ID de la clave raíz para utilizarlo en los pasos de migración.
-
Asegúrese de que dispone de los permisos IAM necesarios para acceder a las instancias HPCS y Key Protect.
-
Instale el complemento CLI de Key Protect si aún no lo tiene instalado.
ibmcloud plugin install kp -r "IBM Cloud"
Pasos de la migración
Siga estos pasos para migrar sus volúmenes Classic Block Storage de HPCS a Key Protect.
Paso 1: Sustituir el secreto HPCS por una configuración Key Protect
-
Cree un nuevo archivo de configuración KMS para su instancia Key Protect. Guarde el siguiente archivo como
target-kp-config.yaml. Asegúrese de sustituir los valores del marcador de posición por los detalles de su instancia de 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-configValores
<kms-config-name>: El nombre de su secreto de configuración HPCS KMS existente.<namespace>: El espacio de nombres donde se encuentra el secreto.<your-api-key>: Una clave API con acceso a su instancia Key Protect.<region>: La región en la que se encuentra su instancia de Key Protect.<kp-instance-id>: El ID de tu instancia de « Key Protect ».<kp-root-key-id>: El ID de la clave raíz que creó en Key Protect.
-
Elimine el secreto de configuración HPCS KMS existente.
kubectl delete secret <kms-config-name> -n <namespace> -
Cree el nuevo secreto de configuración Key Protect.
kubectl create -f target-kp-config.yaml
Paso 2: Actualizar las claves de cifrado PVC a utilizar Key Protect
Para cada PVC cifrado que deba migrarse, siga estos pasos para desenvolver la clave de cifrado de datos (DEK) de HPCS y volver a envolverla con Key Protect.
-
Configure la CLI Key Protect para que apunte a su instancia 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> -
Recupera el DEK envuelto en HPCS (WDEK) para el PVC cifrado.
- Encuentre el secreto DEK para su PVC.
kubectl get secrets -n ibm-block-secrets --field-selector type=ibm.io/dek-secret | grep <pv-name> ``` 2. Extraer el DEK envuelto del secreto. ```sh {: pre} kubectl get secrets -n ibm-block-secrets <pv-secret-name> -o yaml | grep wrappedDEK | awk '{print $2}' | base64 --decode ``` -
Desenvuelve el DEK envuelto utilizando la clave raíz HPCS. Guarda el DEK desenvuelto de la salida.
ibmcloud kp key unwrap $ROOT_KEY_ID <wrapped-dek> -
Configure la CLI de Key Protect para que apunte a su instancia de Key Protect.
Utilice una ventana de terminal independiente para evitar cambiar accidentalmente entre las configuraciones HPCS y 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> -
Vuelva a envolver el DEK utilizando la clave raíz Key Protect. Guarda el DEK envuelto de la salida.
ibmcloud kp key wrap $ROOT_KEY_ID -p UNWRAPPED-DEK-BASE64 -
Sustituya el DEK envuelto en HPCS por el DEK envuelto en Key Protect en el secreto de PVC.
- Codifica el nuevo DEK envuelto en base64.
echo <kp-wrapped-dek> | base64 ``` 2. Edite el secreto DEK y sustituya el valor `wrappedDEK` por el nuevo base64-encoded Key Protect envuelto DEK. ```sh {: pre} kubectl edit secret -n ibm-block-secrets <pv-secret-name> ``` -
Opcional: Verifique el volumen reiniciando el pod que utiliza el PVC cifrado.
kubectl delete pod <pod-name> -n <namespace> -
Repite estos pasos para todos los PVC cifrados que deban migrarse de HPCS a Key Protect.
-
Compruebe que todos los pods que utilizan PVC cifrados están en estado de ejecución.
kubectl get pods -A
Próximos pasos
- Actualice la documentación y los libros de ejecución para que reflejen la nueva configuración de Key Protect.
- Considere la posibilidad de establecer políticas de rotación de claves para sus claves raíz de Key Protect.
- Si tiene algún problema durante o después de la migración, abra una solicitud de asistencia en IBM Cloud.