Compartir a través de


Recuperación ante desastres de Managed HSM

Es posible que desee crear una réplica exacta de su HSM si el original se pierde o no está disponible debido a cualquiera de estos motivos:

  • Se eliminó y luego se purgó.
  • Un error catastrófico en la región ha dado lugar a que se destruyan todas las particiones de miembros.

Puede volver a crear la instancia de HSM en la misma región o en otra si tiene:

  • Dominio de seguridad del HSM de origen.
  • Las claves privadas (al menos el número de cuórum) que cifran el dominio de seguridad.
  • La copia de seguridad completa más reciente del HSM de origen.

Estos son los pasos del procedimiento de recuperación ante desastres:

  1. Cree una nueva instancia de HSM.
  2. Activar "Recuperación de Dominio de Seguridad". Se genera un nuevo par de claves RSA (clave de intercambio de dominio de seguridad) para la transferencia de dominio de seguridad y se envía en respuesta, que se descarga como SecurityDomainExchangeKey (clave pública).
  3. Cree y cargue el "Archivo de transferencia de dominio de seguridad". Necesita las claves privadas que cifran el dominio de seguridad. Las claves privadas se usan localmente y nunca se transfieren en ningún lugar de este proceso.
  4. Realice una copia de seguridad del nuevo HSM. Se requiere una copia de seguridad antes de cualquier restauración, incluso cuando el HSM está vacío. Las copias de seguridad permiten una reversión sencilla.
  5. Restaurar la copia de seguridad reciente del HSM desde el HSM de origen.

Estos pasos le permiten replicar manualmente el contenido del HSM en otra región. El nombre de HSM (y el URI del punto de conexión de servicio) es diferente, por lo que debe cambiar la configuración de la aplicación para usar estas claves desde una ubicación diferente.

Crear un nuevo HSM administrado

Use el az keyvault create comando para crear un HSM administrado. Este script tiene tres parámetros obligatorios: un nombre de grupo de recursos, un nombre HSM y la ubicación geográfica.

Debe proporcionar las siguientes entradas para crear un recurso HSM administrado:

  • Nombre del HSM.
  • El grupo de recursos en el que está ubicado dentro de tu suscripción.
  • Ubicación de Azure.
  • Lista de administradores iniciales.

En el ejemplo siguiente se crea un HSM denominado <destination-hsm-name>, en el grupo <resource-group>de recursos , que reside en la ubicación especificada, con el usuario que ha iniciado sesión actual como el único administrador.

oid=$(az ad signed-in-user show --query id -o tsv)
az keyvault create --hsm-name "<destination-hsm-name>" --resource-group "<resource-group>" --location "<location>" --administrators $oid

Nota:

El comando de creación puede tardar unos minutos. Una vez que se devuelva correctamente, estará listo para activar el HSM.

Advertencia

Las instancias de HSM administradas se consideran siempre en funcionamiento. Si decide habilitar la protección de purga mediante el indicador --enable-purge-protection, se le factura la totalidad del período de retención.

La salida de este comando muestra las propiedades del HSM administrado que ha creado. Las dos propiedades más importantes son:

  • name: el nombre de HSM que especificó. Usará este nombre para otros comandos de Key Vault.
  • hsmUri: el URI del HSM (por ejemplo, https://<hsm-name>.managedhsm.azure.net). Las aplicaciones que usan el HSM a través de su API REST deben usar este URI.

La cuenta de Azure ahora está autorizada para realizar cualquier operación en este HSM administrado. Hasta ahora, nadie más está autorizado.

Activar el modo de recuperación de dominio de seguridad

En este punto del proceso de creación normal, inicializamos y descargamos el nuevo dominio de seguridad de HSM. Sin embargo, dado que estamos ejecutando un procedimiento de recuperación ante desastres, pedimos al HSM que entre en el modo de recuperación de dominio de seguridad y descargue una Clave de Intercambio de Dominio de Seguridad en su lugar. La clave de intercambio de dominio de seguridad es una clave pública RSA que se usará para cifrar el dominio de seguridad antes de cargarlo en el HSM. La clave privada correspondiente está protegida dentro del HSM para mantener el contenido del dominio de seguridad seguro durante la transferencia.

az keyvault security-domain init-recovery --hsm-name <destination-hsm-name> --sd-exchange-key <destination-hsm-name>-SDE.cer

Creación de un blob de carga del dominio de seguridad del HSM de origen

Para este paso necesitará:

  • Clave de intercambio de dominio de seguridad que descargó en el paso anterior.
  • Dominio de seguridad del HSM de origen.
  • Al menos un quórum de claves privadas utilizadas para cifrar el dominio de seguridad.

El az keyvault security-domain restore-blob comando realiza las siguientes operaciones:

  • Descifra el dominio de seguridad del HSM de origen con las claves privadas que proporcione.
  • Crea un blob de carga del dominio de seguridad cifrado con la clave de intercambio del dominio de seguridad que descargó en el paso anterior.

Este paso se puede realizar sin conexión.

En el ejemplo siguiente, usamos el dominio de seguridad del HSM de origen, los 3 de las claves privadas correspondientes y la clave de intercambio de dominio de seguridad para crear y descargar un blob cifrado que usaremos para cargar en el HSM de destino, que está esperando recibir un dominio de seguridad.

az keyvault security-domain restore-blob --sd-exchange-key <destination-hsm-name>-SDE.cer --sd-file <source-hsm-name>-SD.json --sd-wrapping-keys cert_0.key cert_1.key cert_2.key --sd-file-restore-blob restore_blob.json 

Carga del blob de carga del dominio de seguridad en el HSM de destino

Ahora usamos el blob de carga del dominio de seguridad creado en el paso anterior y lo cargamos al HSM de destino para completar la recuperación del dominio de seguridad. La --restore-blob marca se usa para evitar la exposición de claves en un entorno en línea.

az keyvault security-domain upload --hsm-name <destination-hsm-name> --sd-file restore_blob.json --restore-blob

Ahora, tanto el HSM de origen como el HSM de destino tienen el mismo dominio de seguridad. Ahora podemos restaurar una copia de seguridad completa desde el HSM de origen en el HSM de destino.

Copias de seguridad y restauración

Siempre es una buena idea realizar una copia de seguridad completa antes de ejecutar una restauración completa de HSM para que tenga un punto de restauración en caso de que algo vaya mal con la restauración. Puede hacerlo mediante uno de los dos métodos: identidad administrada asignada por el usuario o tokens de SAS.

Creación de una copia de seguridad (como punto de restauración) del nuevo HSM

Para crear una copia de seguridad de HSM, necesitará:

  • Una cuenta de almacenamiento donde se almacenará la copia de seguridad.
  • Un contenedor de Blob Storage en esta cuenta de almacenamiento donde el proceso de copia de seguridad creará una nueva carpeta para almacenar la copia de seguridad cifrada.
  • Una identidad administrada asignada por el usuario que tiene el rol Colaborador de datos de Storage Blob en la cuenta de almacenamiento O el token de SAS del contenedor de almacenamiento con permisos "crdw".

Usamos el comando az keyvault backup para la copia de seguridad de HSM en el contenedor <container-name>de almacenamiento , que se encuentra en la cuenta <storage-account-name> de almacenamiento en los ejemplos siguientes.

Si usa el método de identidad administrada asignada por el usuario, especificamos la identidad administrada asignada por el usuario con el --mi-user-assigned parámetro y la asociamos al HSM administrado antes de escribir la copia de seguridad en el ejemplo siguiente.

az keyvault update-hsm --hsm-name <destination-hsm-name> --mi-user-assigned "/subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>"
az keyvault backup start --use-managed-identity true --hsm-name <destination-hsm-name> --storage-account-name <storage-account-name> --blob-container-name <container-name>

Restaurar copia de seguridad desde el HSM de origen

Para este paso necesita:

  • La cuenta de almacenamiento y el contenedor de blobs en el que se almacenan las copias de seguridad del HSM de origen.
  • Nombre de carpeta desde donde desea restaurar la copia de seguridad. Si crea copias de seguridad periódicas, habrá muchas carpetas dentro de este contenedor.

Usamos el comando az keyvault restore en el HSM de destino, mediante la copia de seguridad del MHSM de origen que estamos intentando restaurar, que se encuentra en el nombre <backup-folder> de la carpeta que se encuentra en el contenedor <container-name> de almacenamiento de la cuenta <storage-account-name> de almacenamiento en el ejemplo siguiente.

Si usa el método de identidad administrada asignada por el usuario, establecemos el --use-managed-identity parámetro en "true".

az keyvault restore start --hsm-name <destination-hsm-name> --storage-account-name <storage-account-name> --blob-container-name <container-name> --backup-folder <backup-folder> --use-managed-identity true

Ahora ha completado un proceso de recuperación ante desastres completo. El contenido del HSM de origen cuando se realizó la copia de seguridad se copia en el HSM de destino, incluidas todas las claves, versiones, atributos, etiquetas y asignaciones de roles.

Pasos siguientes