Recuperación ante desastres de Managed HSM

Puede que desee crear una réplica exacta del HSM si el original se pierde o no está disponible por cualquiera de estos motivos:

  • Se ha eliminado y posteriormente se ha purgado.
  • 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 del HSM en la misma región o en otra diferente si tiene lo siguiente:

  • El 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. Active el modo de recuperación del dominio de seguridad. Se generará un nuevo par de claves RSA (clave de intercambio del dominio de seguridad) para la transferencia del dominio de seguridad y se enviará como respuesta, que se descargará como una clave pública SecurityDomainExchangeKey.
  3. Cree y cargue el "archivo de transferencia del dominio de seguridad". Necesitará las claves privadas que cifran el dominio de seguridad. Las claves privadas se usan localmente y nunca se transfieren en ninguna parte 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. Restaure la copia de seguridad reciente del HSM del HSM de origen.

Estos pasos le permitirán replicar manualmente el contenido del HSM en otra región. El nombre del HSM (y el identificador URI del punto de conexión de servicio) serán diferentes, por lo que es posible que tenga que cambiar la configuración de la aplicación para usar estas claves desde otra ubicación.

Creación de un nuevo HSM administrado

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

Para crear un recurso de HSM administrado, es preciso que proporcione lo siguiente:

  • El nombre del HSM.
  • El grupo de recursos donde se colocará en su suscripción.
  • La ubicación de Azure.
  • Una lista de administradores iniciales.

En el ejemplo siguiente, se crea un HSM denominado ContosoMHSM2 en el grupo de recursos ContosoResourceGroup, que reside en la ubicación West US 3, con el usuario que ha iniciado sesión como único administrador.

oid=$(az ad signed-in-user show --query objectId -o tsv)
az keyvault create --hsm-name "ContosoMHSM2" --resource-group "ContosoResourceGroup" --location "westus3" --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 del HSM administrado se consideran siempre en uso. Si decide habilitar la protección de purga mediante la marca --enable-purge-protection, se le facturará por 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: en el ejemplo, el nombre es ContosoMHSM. Usará este nombre para otros comandos de Key Vault.
  • hsmUri: en el ejemplo, el URI es "https://contosomhsm2.managedhsm.azure.net." Las aplicaciones que utilizan el HSM a través de su API REST deben usar este identificador URI.

Su cuenta de Azure ahora está autorizada para realizar operaciones en este HSM administrado. Hasta ahora, nadie más está autorizado.

Activación del modo de recuperación del dominio de seguridad

En este momento del proceso de creación normal, inicializamos y descargamos el dominio de seguridad del nuevo HSM. Sin embargo, al estar ejecutando un procedimiento de recuperación ante desastres, solicitamos que el HSM acceda al modo de recuperación del dominio de seguridad y descargue una clave de intercambio del dominio de seguridad. La clave de intercambio del dominio de seguridad es una clave pública de 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 garantizar la seguridad del contenido del dominio de seguridad durante la transferencia.

az keyvault security-domain init-recovery --hsm-name ContosoMHSM2 --sd-exchange-key ContosoMHSM2-SDE.cer

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

Para este paso, necesitará lo siguiente:

  • La clave de intercambio del dominio de seguridad que descargó en el paso anterior.
  • El dominio de seguridad del HSM de origen.
  • Las claves privadas (al menos el número de cuórum) usadas para cifrar el dominio de seguridad.

El comando az keyvault security-domain restore-blob 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, se usa el dominio de seguridad de ContosoMHSM, la tercera de las claves privadas correspondientes, y la clave de intercambio del dominio de seguridad para crear y descargar un blob cifrado que se usará para cargar en ContosoMHSM2, que está esperando para recibir un dominio de seguridad.

az keyvault security-domain restore-blob --sd-exchange-key ContosoMHSM2-SDE.cer --sd-file ContosoMHSM-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 en el HSM de destino para completar la recuperación del dominio de seguridad. La marca --restore-blob se usa para evitar la exposición de claves en un entorno en línea.

az keyvault security-domain upload --hsm-name ContosoMHSM2 --sd-file restore_blob.json --restore-blob

Ahora tanto el HSM de origen (ContosoMHSM) como el HSM de destino (ContosoMHSM2) tienen el mismo dominio de seguridad. Ahora podemos restaurar una copia de seguridad completa del HSM de origen en el HSM de destino.

Copia de seguridad y restauración

Siempre es conveniente realizar una copia de seguridad completa antes de ejecutar una restauración completa del HSM, para disponer así de un punto de restauración en caso de que se produzca algún problema 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 del HSM, necesitará lo siguiente:

  • Una cuenta de almacenamiento en la que se almacenará la copia de seguridad.
  • Un contenedor de almacenamiento de blobs 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".

En los ejemplos siguientes, se usa el comando az keyvault para la copia de seguridad del HSM en el contenedor de almacenamiento mhsmbackupcontainer de la cuenta de almacenamiento mhsmdemobackup.

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

az keyvault update-hsm --hsm-name ContosoMHSM2 --mi-user-assigned "/subscriptions/subid/resourcegroups/mhsmrgname/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedidentityname"
az keyvault backup start --use-managed-identity true --hsm-name ContosoMHSM2 --storage-account-name mhsmdemobackup --blob-container-name mhsmbackupcontainer

Restauración de una copia de seguridad del HSM de origen

Para este paso, necesita:

  • La cuenta de almacenamiento y el contenedor de blobs en la que se almacenan las copias de seguridad del HSM de origen.
  • El nombre de la carpeta desde la que 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 para el nuevo HSM ContosoMHSM2 mediante la copia de seguridad del MHSM de origen que estamos intentando restaurar, que se encuentra en el nombre de la carpeta mhsm-ContosoMHSM-2020083120161860 que está en el contenedor de almacenamiento mhsmdemobackupcontainer de la cuenta de almacenamiento ContosoBackup en el ejemplo siguiente.

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

az keyvault restore start --hsm-name ContosoMHSM2 --storage-account-name ContosoBackup --blob-container-name mhsmdemobackupcontainer --backup-folder mhsm-ContosoMHSM-2020083120161860 --use-managed-identity true

Ya ha realizado el proceso completo de recuperación ante desastres. El contenido del HSM de origen cuando se realizó la copia de seguridad se habrá copiado en el HSM de destino, incluidas todas las claves, las versiones, los atributos, las etiquetas y las asignaciones de roles.

Pasos siguientes