Tutorial: Implementación de HSM en una red virtual existente con PowerShell
El servicio Azure Dedicated HSM proporciona un dispositivo físico para uso exclusivo del cliente, con un control administrativo completo y una responsabilidad en la administración total. Dado que se proporciona un hardware físico, Microsoft debe controlar la asignación de esos dispositivos para garantizar que la capacidad se administra eficazmente. Como resultado, en una suscripción de Azure, el servicio Dedicated HSM no es normalmente visible para el aprovisionamiento de recursos. Cualquier cliente de Azure que necesite acceso al servicio Dedicated HSM primero debe ponerse en contacto con el ejecutivo de cuentas de Microsoft para solicitar el registro en este servicio. Solo una vez que se complete correctamente este proceso el aprovisionamiento es posible.
Este tutorial pretende mostrar un proceso de aprovisionamiento típico en el que:
- Un cliente ya tiene una red virtual
- Tienen una máquina virtual
- Tienen que agregar recursos HSM en ese entorno ya existente.
Una arquitectura de implementación típica, con alta disponibilidad y para varias regiones es similar a la siguiente:
Este tutorial se centra en dos HSM y en la puerta de enlace de ExpressRoute necesaria (consulte la subred 1 anterior) que se integra en una red virtual existente (consulte la red virtual 1 anterior). Todos los demás recursos son recursos estándar de Azure. Se puede utilizar el mismo proceso de integración para HSM en la subred 4 de la red virtual 3 anterior.
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Requisitos previos
Azure Dedicated HSM no está disponible actualmente en Azure Portal y, por tanto, todas las interacciones con el servicio se realizan mediante la línea de comandos o PowerShell. En este tutorial se usa PowerShell en Azure Cloud Shell. Si no está familiarizado con PowerShell, siga las instrucciones de inicio que se encuentran aquí: Introducción a Azure PowerShell.
Se supone que:
- Debe tener asignado un administrador de cuentas de Microsoft y cumplir el requisito monetario de cinco millones de USD u otra cantidad superior en los ingresos totales confirmados de Azure anualmente para optar a la incorporación y uso de Azure Dedicated HSM.
- Ha pasado por el proceso de registro de Azure Dedicated HSM y se le ha autorizado el uso del servicio. En caso contrario, póngase en contacto con su representante de cuenta Microsoft para más información.
- Ha creado un grupo de recursos para estos recursos y los nuevos que se implementan en este tutorial.
- Ya ha creado la red virtual, la subred y las máquinas virtuales necesarias y ahora desea integrar dos instancias de HSM en esa implementación.
En las instrucciones siguientes se presupone que ya ha ido a Azure Portal y ha abierto Cloud Shell (seleccione ">_" en la parte superior derecha del portal).
Aprovisionamiento de un HSM dedicado
El aprovisionamiento de las instancias de HSM y la integración en una red virtual existente mediante la puerta de enlace de ExpressRoute se valida mediante la herramienta de línea de comandos ssh para garantizar la accesibilidad y disponibilidad básica del dispositivo HSM para otras actividades de configuración. Los siguientes comandos usarán una plantilla de Resource Manager para crear los recursos HSM y los recursos de red asociados.
Validación del registro de características
Como se ha mencionado, para cualquier actividad de aprovisionamiento es necesario registrar el servicio Dedicated HSM para la suscripción. Para validar, ejecute el siguiente comando de PowerShell en Cloud Shell de Azure Portal.
Get-AzProviderFeature -ProviderNamespace Microsoft.HardwareSecurityModules -FeatureName AzureDedicatedHsm
El comando debe devolver un estado de "Registrado" antes de continuar. Si no se ha registrado para este servicio, póngase en contacto con el representante de la cuenta Microsoft.
Creación de recursos HSM
Un dispositivo HSM se aprovisiona en la red virtual de un cliente, que necesita una subred. Una dependencia para que el HSM habilite la comunicación entre la red virtual y el dispositivo físico en una puerta de enlace de ExpressRoute y, por último, se requiere una red virtual para acceder al dispositivo HSM mediante el software cliente Thales.
Puede crear un recurso de Dedicated HSM mediante una plantilla de ARM basada en el ejemplo siguiente. Debe actualizar los parámetros y reemplazar las líneas que contienen "value":"" por los nombres de recurso preferidos.
namingInfix
Prefijo para los nombres de los recursos HSMExistingVirtualNetworkName
Nombre de la red virtual que se usa para los HSMDedicatedHsmResourceName1
Nombre del recurso HSM en la marca del centro de datos 1DedicatedHsmResourceName2
Nombre del recurso HSM en la marca del centro de datos 2hsmSubnetRange
Intervalo de direcciones IP de la subred para los HSMERSubnetRange
Intervalo de direcciones IP de la subred para la puerta de enlace de la red virtual
A continuación puede ver un ejemplo de estos cambios:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
"namingInfix": {
"value": "MyHSM"
},
"ExistingVirtualNetworkName": {
"value": "MyHSM-vnet"
},
"DedicatedHsmResourceName1": {
"value": "HSM1"
},
"DedicatedHsmResourceName2": {
"value": "HSM2"
},
"hsmSubnetRange": {
"value": "10.0.2.0/24"
},
"ERSubnetRange": {
"value": "10.0.255.0/26"
},
}
}
El archivo de plantilla de Resource Manager asociado crea seis recursos con esta información:
- Una subred para los HSM en la red virtual especificada
- Una subred para la puerta de enlace de red virtual
- Una puerta de enlace de red virtual que se conecta la red virtual a los dispositivos HSM
- Una dirección IP pública para la puerta de enlace
- Un HSM en la marca 1
- Un HSM en la marca 2
Una vez que se establecen los valores de parámetro, los archivos tienen que cargarse al recurso compartido de archivos del Cloud Shell de Azure Portal para su uso. En Azure Portal, seleccione el símbolo de Cloud Shell ">_" situado en la parte superior derecha, lo que convierte la parte inferior de la pantalla en un entorno de comandos. Las opciones son BASH y PowerShell, y debe seleccionar BASH si no está ya configurado.
Seleccione la opción de carga y descarga en la barra de herramientas para cargar los archivos de plantilla y de parámetros en el recurso compartido de archivos:
Una vez cargados los archivos, ya está listo para crear recursos.
Hay algunos recursos de requisitos previos necesarios antes de crear recursos de HSM. Debe disponer de una red virtual con intervalos de subred para procesos, HSM y una puerta de enlace. Los siguientes comandos sirven como ejemplo de la creación de esa red virtual.
$compute = New-AzVirtualNetworkSubnetConfig `
-Name compute `
-AddressPrefix 10.2.0.0/24
$delegation = New-AzDelegation `
-Name "myDelegation" `
-ServiceName "Microsoft.HardwareSecurityModules/dedicatedHSMs"
$hsmsubnet = New-AzVirtualNetworkSubnetConfig `
-Name hsmsubnet `
-AddressPrefix 10.2.1.0/24 `
-Delegation $delegation
$gwsubnet= New-AzVirtualNetworkSubnetConfig `
-Name GatewaySubnet `
-AddressPrefix 10.2.255.0/26
New-AzVirtualNetwork `
-Name myHSM-vnet `
-ResourceGroupName myRG `
-Location westus `
-AddressPrefix 10.2.0.0/16 `
-Subnet $compute, $hsmsubnet, $gwsubnet
Nota
La configuración más importante a tener en cuenta para la red virtual, es que la subred del dispositivo HSM debe tener las delegaciones establecidas en "Microsoft.HardwareSecurityModules/dedicatedHSMs". El aprovisionamiento de HSM no funcionará sin esto.
Una vez que se implementen todos los requisitos previos y se actualice la plantilla de Resource Manager con los nombres únicos (al menos el nombre del grupo de recursos), ejecute el siguiente comando:
New-AzResourceGroupDeployment -ResourceGroupName myRG `
-TemplateFile .\Deploy-2HSM-toVNET-Template.json `
-TemplateParameterFile .\Deploy-2HSM-toVNET-Params.json `
-Name HSMdeploy -Verbose
Este comando tardará aproximadamente unos 20 minutos en completarse. La opción "-verbose" usada garantizará que se muestre el estado continuamente.
Una vez que se complete correctamente, como se muestra mediante "provisioningState": "Correcto", puede iniciar sesión en la máquina virtual existente y usar SSH para garantizar la disponibilidad del dispositivo HSM.
Comprobación de la implementación
Para comprobar que los dispositivos se hayan aprovisionado y ver los atributos del dispositivo, ejecute el siguiente conjunto de comandos. Asegúrese de que el grupo de recursos se ha establecido adecuadamente y de que el nombre del recurso es exactamente el mismo que aparece en el archivo de parámetros.
$subid = (Get-AzContext).Subscription.Id
$resourceGroupName = "myRG"
$resourceName = "HSM1"
Get-AzResource -Resourceid /subscriptions/$subId/resourceGroups/$resourceGroupName/providers/Microsoft.HardwareSecurityModules/dedicatedHSMs/$resourceName
Ahora también podrá ver los recursos mediante Azure Resource Explorer. Una vez que esté en el explorador, expanda "suscripciones" a la izquierda, expanda la suscripción específica de Dedicated HSM, expanda "grupos de recursos", expanda el grupo de recursos que usó y, por último, seleccione el elemento "recursos".
Prueba de la implementación
Para probar la implementación es necesario conectarse a una máquina virtual que pueda acceder a las instancias de HSM y, después, conectarse directamente al dispositivo HSM. Estas acciones confirmarán que el HSM está disponible. La herramienta SSH se usa para conectarse a la máquina virtual. El comando será parecido al siguiente, pero con el nombre del administrador y el nombre DNS que especificó en el parámetro.
ssh adminuser@hsmlinuxvm.westus.cloudapp.azure.com
La contraseña que se va a usar es la del archivo de parámetros. Una vez que ha iniciado sesión en la máquina virtual Linux, puede iniciar sesión en la instancia de HSM con la dirección IP privada que aparece en el portal para el recurso <prefijo>hsm_vnic.
(Get-AzResource -ResourceGroupName myRG -Name HSMdeploy -ExpandProperties).Properties.networkProfile.networkInterfaces.privateIpAddress
Una vez que tenga la dirección IP, ejecute el siguiente comando:
ssh tenantadmin@<ip address of HSM>
Si se ejecuta correctamente se le pedirá una contraseña. La contraseña predeterminada es PASSWORD. El HSM le pedirá que cambie la contraseña, así que establezca una contraseña segura y use el mecanismo que prefiera su organización para almacenarla e impedir su pérdida.
Importante
Si pierde esta contraseña, tendrá que restablecer el HSM lo cual implica la pérdida de las claves.
Cuando esté conectado al dispositivo HSM mediante SSH, ejecute el siguiente comando para asegurarse de que el HSM esté en operación.
hsm show
La salida será similar a la imagen que se muestra a continuación:
Hasta este momento ha asignado todos los recursos necesarios para una implementación de alta disponibilidad, con dos HSM, y ha validado el acceso y el estado operativo.asignar. Ya no hay ninguna configuración o prueba que implique más tareas con el dispositivo HSM en sí. Para reinicializar el dispositivo HSM y crear particiones, siga las instrucciones del capítulo 7 de la guía de administración de Thales Luna 7 HSM. Toda la documentación y el software se pueden descargar directamente del sitio web de Thales una vez que se haya registrado en el portal de atención al cliente de Thales y haya obtenido un identificador de cliente. Descargue la versión 7.2 del software cliente para obtener todos los componentes necesarios.
Eliminación y limpieza de los recursos
Si ya ha terminado con el dispositivo HSM, puede eliminarlo como un recurso y devolverlo al grupo disponible. La preocupación más obvia a la hora de hacer esto es la información confidencial del cliente que se encuentra en el dispositivo. La mejor manera de "poner a cero" un dispositivo es escribir la contraseña de administrador de HSM equivocada tres veces (nota: No se trata del administrador de la aplicación, sino del administrador de HSM real). Como medida de seguridad para proteger el material clave, el dispositivo no se puede eliminar como recurso de Azure hasta que se encuentre en un estado en cero.
Nota
Si tiene algún problema con alguna configuración del dispositivo de Thales, póngase en contacto con el servicio de asistencia al cliente de Thales.
Si desea quitar el recurso HSM de Azure, puede usar el siguiente comando y reemplazar las variables "$" por sus parámetros únicos:
$subid = (Get-AzContext).Subscription.Id
$resourceGroupName = "myRG"
$resourceName = "HSMdeploy"
Remove-AzResource -Resourceid /subscriptions/$subId/resourceGroups/$resourceGroupName/providers/Microsoft.HardwareSecurityModules/dedicatedHSMs/$resourceName
Pasos siguientes
Después de completar los pasos del tutorial, los recursos de Dedicated HSM estarán aprovisionados y disponibles en la red virtual. Ahora ya puede complementar esta implementación con más recursos según sea necesario mediante la arquitectura de implementación que prefiera. Para más información sobre cómo ayudar a planear la implementación, consulte la documentación sobre conceptos. Se recomienda un diseño con dos HSM en una región primaria que controle la disponibilidad en el nivel de bastidor y dos HSM en una región secundaria que se encarguen de la disponibilidad regional. El archivo de plantilla que ha utilizado en este tutorial se puede usar fácilmente como punto de partida para una implementación de dos HSM, pero debe modificar sus parámetros para cumplir los requisitos.