Recuperação de desastres HSM gerenciada

Você pode querer criar uma réplica exata do seu HSM se o original for perdido ou indisponível devido a qualquer um destes motivos:

  • Foi eliminado e depois eliminado.
  • Uma falha catastrófica na região resultou na destruição de todas as partições dos membros.

Você pode recriar a instância do HSM na mesma região ou em uma região diferente se tiver:

  • O domínio de segurança do HSM de origem.
  • As chaves privadas (pelo menos o número de quórum) que criptografam o domínio de segurança.
  • O backup completo mais recente do HSM do HSM de origem.

Aqui estão as etapas do procedimento de recuperação de desastres:

  1. Crie uma nova instância do HSM.
  2. Ative "Security Domain recovery". Um novo par de chaves RSA (Security Domain Exchange Key) será gerado para transferência de Domínio de Segurança e enviado em resposta, que será baixado como uma SecurityDomainExchangeKey (chave pública).
  3. Crie e carregue o "Security Domain Transfer File". Você precisará das chaves privadas que criptografam o domínio de segurança. As chaves privadas são usadas localmente e nunca transferidas para qualquer lugar neste processo.
  4. Faça um backup do novo HSM. Um backup é necessário antes de qualquer restauração, mesmo quando o HSM está vazio. Os backups permitem uma reversão fácil.
  5. Restaure o backup recente do HSM a partir do HSM de origem.

Essas etapas permitirão que você replique manualmente o conteúdo do HSM para outra região. O nome do HSM (e o URI do ponto de extremidade de serviço) será diferente, portanto, você terá que alterar a configuração do aplicativo para usar essas chaves de um local diferente.

Criar um novo HSM gerenciado

Use o az keyvault create comando para criar um HSM gerenciado. Esse script tem três parâmetros obrigatórios: um nome de grupo de recursos, um nome HSM e a localização geográfica.

Você deve fornecer as seguintes entradas para criar um recurso HSM gerenciado:

  • O nome do HSM.
  • O grupo de recursos onde será colocado na sua subscrição.
  • A localização do Azure.
  • Uma lista de administradores iniciais.

O exemplo a seguir cria um HSM chamado ContosoMHSM2, no grupo de recursos ContosoResourceGroup, residente no local West US 3 , com o usuário conectado atual como o ú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

O comando create pode levar alguns minutos. Assim que ele retornar com sucesso, você estará pronto para ativar seu HSM.

Aviso

As instâncias gerenciadas do HSM são consideradas sempre em uso. Se você optar por ativar a proteção contra limpeza usando o --enable-purge-protection sinalizador, você será cobrado pela totalidade do período de retenção.

A saída deste comando mostra as propriedades do HSM gerenciado que você criou. As duas propriedades mais importantes são:

  • name: No exemplo, o nome é ContosoMHSM. Você usará esse nome para outros comandos do Cofre da Chave.
  • hsmUri: No exemplo, o URI é 'https://contosomhsm2.managedhsm.azure.net.' Os aplicativos que usam seu HSM por meio de sua API REST devem usar esse URI.

Sua conta do Azure agora está autorizada a executar quaisquer operações neste HSM gerenciado. Até o momento, ninguém mais está autorizado.

Ativar o modo de recuperação do Domínio de Segurança

Neste ponto do processo normal de criação, inicializamos e baixamos o Domínio de Segurança do novo HSM. No entanto, como estamos executando um procedimento de recuperação de desastres, solicitamos que o HSM entre no Modo de Recuperação de Domínio de Segurança e baixe uma Chave de Troca de Domínio de Segurança. A Chave de Troca de Domínio de Segurança é uma chave pública RSA que será usada para criptografar o domínio de segurança antes de carregá-lo no HSM. A chave privada correspondente é protegida dentro do HSM, para manter o conteúdo do seu Domínio de Segurança seguro durante a transferência.

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

Criar um blob de Carregamento de Domínio de Segurança do HSM de origem

Para esta etapa, você precisará:

  • A Chave de Troca de Domínio de Segurança que você baixou na etapa anterior.
  • O domínio de segurança do HSM de origem.
  • Pelo menos o número de quórum de chaves privadas que foram usadas para criptografar o domínio de segurança.

O az keyvault security-domain restore-blob comando executa as seguintes operações:

  • Descriptografe o domínio de segurança do HSM de origem com as chaves privadas fornecidas.
  • Criar um blob de Carregamento de Domínio de Segurança criptografado com a Chave de Troca de Domínio de Segurança que baixamos na etapa anterior

Esta etapa pode ser executada offline.

No exemplo a seguir, usamos o Domínio de Segurança do ContosoMHSM, as 3 chaves privadas correspondentes e a Chave de Troca de Domínio de Segurança para criar e baixar um blob criptografado que usaremos para carregar no ContosoMHSM2, que está aguardando para receber um Domínio de Segurança.

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 

Carregar domínio de segurança Carregar blob para o HSM de destino

Agora usamos o blob de Carregamento de Domínio de Segurança criado na etapa anterior e o carregamos no HSM de destino para concluir a recuperação do domínio de segurança. O --restore-blob sinalizador é usado para evitar a exposição de chaves em um ambiente online.

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

Agora, tanto o HSM de origem (ContosoMHSM) quanto o HSM de destino (ContosoMHSM2) têm o mesmo domínio de segurança. Agora podemos restaurar um backup completo do HSM de origem para o HSM de destino.

Cópia de segurança e restauro

É sempre uma boa ideia fazer um backup completo antes de executar uma restauração HSM completa, para que você tenha um ponto de restauração caso algo dê errado com a restauração. Você pode fazer isso usando um dos dois métodos: identidade gerenciada atribuída pelo usuário ou tokens SAS.

Crie um backup (como um ponto de restauração) do seu novo HSM

Para criar um backup HSM, você precisará:

  • Uma conta de armazenamento onde o backup será armazenado
  • Um contêiner de armazenamento de blob nesta conta de armazenamento onde o processo de backup criará uma nova pasta para armazenar o backup criptografado
  • Uma identidade gerenciada atribuída ao usuário que tem a função de Colaborador de Dados de Blob de Armazenamento na conta de armazenamento OU token SAS do contêiner de armazenamento com permissões 'crdw'

Usamos o comando az keyvault backup para o backup HSM no contêiner de armazenamento mhsmbackupcontainer, que está na conta de armazenamento mhsmdemobackup nos exemplos a seguir.

Se estiver usando o método de identidade gerenciada atribuído ao usuário, especificaremos a identidade gerenciada atribuída ao usuário com o --mi-user-assigned parâmetro e associaremos isso ao HSM gerenciado antes de gravar o backup no exemplo abaixo.

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

Restaurar backup do HSM de origem

Para este passo você precisa:

  • A conta de armazenamento e o contêiner de blob no qual os backups do HSM de origem são armazenados.
  • O nome da pasta de onde você deseja restaurar o backup. Se você criar backups regulares, haverá muitas pastas dentro desse contêiner.

Usamos o comando az keyvault restore para o novo HSM ContosoMHSM2, usando o backup do MHSM de origem que estamos tentando restaurar, que está no nome da pasta mhsm-ContosoMHSM-2020083120161860 encontrado no contêiner de armazenamento mhsmdemobackupcontainer da conta de armazenamento ContosoBackup no exemplo a seguir.

Se estiver usando o método de identidade gerenciada atribuído ao usuário, definimos o --use-managed-identity pramater como "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

Agora você concluiu um processo completo de recuperação de desastres. O conteúdo do HSM de origem quando o backup foi feito é copiado para o HSM de destino, incluindo todas as chaves, versões, atributos, tags e atribuições de função.

Próximos passos