Tutorial – Implementar HSMs numa rede virtual existente com o PowerShell

O Serviço HSM Dedicado do Azure fornece um dispositivo físico para utilização exclusiva do cliente, com controlo administrativo completo e responsabilidade de gestão total. Devido ao fornecimento de hardware físico, a Microsoft tem de controlar a forma como esses dispositivos são alocados para garantir que a capacidade é gerida de forma eficaz. Como resultado, numa subscrição do Azure, o serviço HSM dedicado não estará normalmente visível para o aprovisionamento de recursos. Qualquer cliente do Azure que necessite de acesso ao serviço HSM dedicado tem primeiro de contactar o respetivo executivo de conta Microsoft para pedir o registo do serviço HSM dedicado. Só assim que este processo for concluído com êxito será possível o aprovisionamento. Este tutorial tem como objetivo mostrar um processo de aprovisionamento típico em que:

  • Um cliente já tem uma rede virtual
  • Têm uma máquina virtual
  • Precisam de adicionar recursos HSM a esse ambiente existente.

Uma arquitetura de implementação típica, de elevada disponibilidade e de várias regiões pode ter o seguinte aspeto:

implementação de várias regiões

Este tutorial foca-se num par de HSMs e no gateway do ExpressRoute necessário (veja Sub-rede 1 acima) a ser integrado numa rede virtual existente (veja VNET 1 acima). Todos os outros recursos são recursos padrão do Azure. O mesmo processo de integração pode ser utilizado para HSMs na sub-rede 4 na VNET 3 acima.

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Pré-requisitos

O HSM Dedicado do Azure não está atualmente disponível no portal do Azure, pelo que toda a interação com o serviço será através da linha de comandos ou através do PowerShell. Este tutorial irá utilizar o PowerShell no Cloud Shell do Azure. Se não estiver familiarizado com o PowerShell, siga as instruções de introdução aqui: Azure PowerShell Introdução.

Pressupostos:

  • Tem um Gestor de Contas Microsoft atribuído e cumpre o requisito monetário de cinco milhões de USD ($5M) ou superior em receitas do Azure consolidadas globalmente anualmente para se qualificar para integração e utilização do HSM Dedicado do Azure.
  • Passou pelo processo de registo do HSM dedicado do Azure e foi aprovado para utilização do serviço. Caso contrário, contacte o representante da sua conta Microsoft para obter detalhes.
  • Criou um Grupo de Recursos para estes recursos e os novos implementados neste tutorial serão associados a esse grupo.
  • Já criou a rede virtual, a sub-rede e as máquinas virtuais necessárias de acordo com o diagrama acima e pretende agora integrar 2 HSMs nessa implementação.

Todas as instruções abaixo partem do princípio de que já navegou para o portal do Azure e abriu o Cloud Shell (selecione ">_" na parte superior direita do portal).

Aprovisionar um HSM dedicado

O aprovisionamento dos HSMs e a integração numa rede virtual existente através do gateway do ExpressRoute serão validados com a ferramenta de linha de comandos ssh para garantir a acessibilidade e a disponibilidade básica do dispositivo HSM para quaisquer atividades de configuração adicionais. Os seguintes comandos utilizarão um modelo de Resource Manager para criar os recursos do HSM e os recursos de rede associados.

Validar o Registo de Funcionalidades

Conforme mencionado acima, qualquer atividade de aprovisionamento requer que o serviço HSM dedicado esteja registado na sua subscrição. Para validar, execute o seguinte comando do PowerShell no portal do Azure Cloud Shell.

Get-AzProviderFeature -ProviderNamespace Microsoft.HardwareSecurityModules -FeatureName AzureDedicatedHsm

O comando deve devolver o estado "Registado" (conforme mostrado abaixo) antes de continuar. Se não estiver registado neste serviço, contacte o representante da sua conta Microsoft.

estado da subscrição

Criar recursos do HSM

Um dispositivo HSM é aprovisionado numa rede virtual de clientes. Isto implica o requisito de uma sub-rede. Uma dependência do HSM para ativar a comunicação entre a rede virtual e o dispositivo físico é um gateway do ExpressRoute e, por fim, é necessária uma máquina virtual para aceder ao dispositivo HSM com o software de cliente Thales. Estes recursos foram recolhidos num ficheiro de modelo, com o ficheiro de parâmetro correspondente, para facilitar a utilização. Os ficheiros estão disponíveis ao contactar a Microsoft diretamente em HSMrequest@Microsoft.com.

Assim que tiver os ficheiros, tem de editar o ficheiro de parâmetros para inserir os nomes preferidos dos recursos. Isto significa editar linhas com "valor": "".

  • namingInfix Prefixo para nomes de recursos HSM
  • ExistingVirtualNetworkName Nome da rede virtual utilizada para os HSMs
  • DedicatedHsmResourceName1 Nome do recurso HSM no carimbo de datacenter 1
  • DedicatedHsmResourceName2 Nome do recurso HSM no carimbo de datacenter 2
  • hsmSubnetRange Intervalo de Endereços IP da Sub-rede para HSMs
  • ERSubnetRange Intervalo de Endereços IP da Sub-rede para o gateway de VNET

Um exemplo destas alterações é o seguinte:

{
"$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"
    },
  }
}

O ficheiro de modelo Resource Manager associado irá criar seis recursos com estas informações:

  • Uma sub-rede para os HSMs na VNET especificada
  • Uma sub-rede para o gateway de rede virtual
  • Um gateway de rede virtual que liga a VNET aos dispositivos HSM
  • Um endereço IP público para o gateway
  • Um HSM no carimbo 1
  • Um HSM no carimbo 2

Assim que os valores dos parâmetros estiverem definidos, os ficheiros têm de ser carregados para portal do Azure Cloud Shell partilha de ficheiros para utilização. No portal do Azure, clique no símbolo ">_" Cloud Shell no canto superior direito, o que fará com que a parte inferior do ecrã seja um ambiente de comandos. As opções são BASH e PowerShell e deve selecionar BASH se ainda não estiver definido.

A shell de comandos tem uma opção de carregamento/transferência na barra de ferramentas e deve selecioná-la para carregar o modelo e os ficheiros de parâmetros para a partilha de ficheiros:

partilha de ficheiros

Assim que os ficheiros forem carregados, estará pronto para criar recursos. Antes de criar novos recursos do HSM, existem alguns recursos de pré-requisitos que deve garantir que estão implementados. Tem de ter uma rede virtual com intervalos de sub-rede para computação, HSMs e gateway. Os seguintes comandos servem como um exemplo do que iria criar uma rede 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

A configuração mais importante a ter em conta para a rede virtual é que a sub-rede do dispositivo HSM tem de ter delegações definidas como "Microsoft.HardwareSecurityModules/dedicatedHSMs". O aprovisionamento do HSM não funcionará sem isto.

Assim que todos os pré-requisitos estiverem implementados, execute o seguinte comando para utilizar o modelo de Resource Manager, garantindo que tem valores atualizados com os seus nomes exclusivos (pelo menos o nome do grupo de recursos):


New-AzResourceGroupDeployment -ResourceGroupName myRG `
     -TemplateFile .\Deploy-2HSM-toVNET-Template.json `
     -TemplateParameterFile .\Deploy-2HSM-toVNET-Params.json `
     -Name HSMdeploy -Verbose

Este comando deve demorar aproximadamente 20 minutos a concluir. A opção "-verboso" utilizada irá garantir que o estado é continuamente apresentado.

estado de aprovisionamento

Quando concluída com êxito, apresentada por "provisioningState": "Successful", pode iniciar sessão na máquina virtual existente e utilizar o SSH para garantir a disponibilidade do dispositivo HSM.

Verificar a Implementação

Para verificar se os dispositivos foram aprovisionados e ver os atributos do dispositivo, execute o seguinte conjunto de comandos. Certifique-se de que o grupo de recursos está definido corretamente e que o nome do recurso é exatamente o que tem no ficheiro de parâmetros.


$subid = (Get-AzContext).Subscription.Id
$resourceGroupName = "myRG"
$resourceName = "HSM1"  
Get-AzResource -Resourceid /subscriptions/$subId/resourceGroups/$resourceGroupName/providers/Microsoft.HardwareSecurityModules/dedicatedHSMs/$resourceName

estado de aprovisionamento

Agora também poderá ver os recursos com o explorador de recursos do Azure. Uma vez no explorador, expanda "subscrições" à esquerda, expanda a subscrição específica do HSM Dedicado, expanda "grupos de recursos", expanda o grupo de recursos que utilizou e, por fim, selecione o item "recursos".

Testar a Implementação

Testar a implementação é um caso de ligação a uma máquina virtual que pode aceder aos HSM(s) e, em seguida, ligar diretamente ao dispositivo HSM. Estas ações confirmarão que o HSM está acessível. A ferramenta ssh é utilizada para ligar à máquina virtual. O comando será semelhante ao seguinte, mas com o nome de administrador e o nome dns que especificou no parâmetro.

ssh adminuser@hsmlinuxvm.westus.cloudapp.azure.com

A palavra-passe a utilizar é a do ficheiro de parâmetros. Depois de iniciar sessão na VM do Linux, pode iniciar sessão no HSM com o endereço IP privado encontrado no portal para o prefixo>de recurso <hsm_vnic.


(Get-AzResource -ResourceGroupName myRG -Name HSMdeploy -ExpandProperties).Properties.networkProfile.networkInterfaces.privateIpAddress

Quando tiver o endereço IP, execute o seguinte comando:

ssh tenantadmin@<ip address of HSM>

Se for bem-sucedido, ser-lhe-á pedida uma palavra-passe. A palavra-passe predefinida é PASSWORD. O HSM irá pedir-lhe para alterar a sua palavra-passe para definir uma palavra-passe segura e utilizar qualquer mecanismo que a sua organização prefira armazenar a palavra-passe e evitar perdas.

Importante

Se perder esta palavra-passe, o HSM terá de ser reposto, o que significa perder as chaves.

Quando estiver ligado ao dispositivo HSM com ssh, execute o seguinte comando para garantir que o HSM está operacional.

hsm show

O resultado deve ter o aspeto da imagem apresentada abaixo:

Captura de ecrã que mostra o resultado do comando hsm show.

Neste momento, atribuiu todos os recursos para uma implementação de elevada disponibilidade, duas implementações HSM e acesso validado e estado operacional. Qualquer configuração ou teste adicional envolve mais trabalho com o próprio dispositivo HSM. Para tal, deve seguir as instruções no capítulo 7 do Guia de Administração do HSM da Thales Luna 7 para inicializar o HSM e criar partições. Toda a documentação e software estão disponíveis diretamente na Thales para transferência assim que estiver registado no portal de suporte ao cliente da Thales e tiver um ID de Cliente. Transfira o Software de Cliente versão 7.2 para obter todos os componentes necessários.

Eliminar ou limpar recursos

Se tiver terminado apenas com o dispositivo HSM, este pode ser eliminado como um recurso e devolvido ao conjunto gratuito. A preocupação óbvia ao fazê-lo são quaisquer dados confidenciais do cliente que estejam no dispositivo. A melhor forma de "zeroar" um dispositivo é obter a palavra-passe de administrador do HSM errada três vezes (nota: isto não é um administrador da aplicação, é o administrador do HSM real). Como medida de segurança para proteger o material de chave, o dispositivo não pode ser eliminado como um recurso do Azure até estar no estado zeroizado.

Nota

se tiver problemas com qualquer configuração do dispositivo Thales, deve contactar o suporte ao cliente da Thales.

Se quiser remover o recurso HSM no Azure, pode utilizar o seguinte comando ao substituir as variáveis "$" pelos parâmetros exclusivos:


$subid = (Get-AzContext).Subscription.Id
$resourceGroupName = "myRG" 
$resourceName = "HSMdeploy"  
Remove-AzResource -Resourceid /subscriptions/$subId/resourceGroups/$resourceGroupName/providers/Microsoft.HardwareSecurityModules/dedicatedHSMs/$resourceName 

Passos seguintes

Depois de concluir os passos no tutorial, os recursos de HSM dedicados são aprovisionados e disponíveis na sua rede virtual. Está agora em posição de complementar esta implementação com mais recursos, conforme exigido pela sua arquitetura de implementação preferencial. Para obter mais informações sobre como ajudar a planear a sua implementação, consulte os documentos Conceitos. Recomenda-se uma estrutura com dois HSMs numa região primária que aborde a disponibilidade ao nível do rack e dois HSMs numa região secundária que abordem a disponibilidade regional. O ficheiro de modelo utilizado neste tutorial pode ser facilmente utilizado como base para uma implementação de dois HSM, mas precisa de ter os respetivos parâmetros modificados para satisfazer os seus requisitos.