Compartilhar via


Recuperação de desastre do HSM Gerenciado

Talvez você deseje criar uma réplica exata do HSM se o original estiver perdido ou indisponível devido a qualquer um destes motivos:

  • Ele foi excluído e, em seguida, eliminado.
  • Uma falha catastrófica na região resultou na destruição de todas as partições 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 quorum) que criptografam o domínio de segurança.
  • O backup completo mais recente do HSM de origem.

Estas são as etapas do procedimento de recuperação de desastre:

  1. Crie uma nova Instância de HSM.
  2. Ativar "Recuperação de domínio de segurança". Um novo par de chaves RSA (Security Domain Exchange Key) é gerado para a transferência do domínio de segurança e enviado como resposta, sendo posteriormente baixado como uma SecurityDomainExchangeKey (chave pública).
  3. Crie e carregue o "Arquivo de Transferência de Domínio de Segurança". Você precisa das chaves privadas que criptografam o domínio de segurança. As chaves privadas são usadas localmente e nunca transferidas para nenhum lugar nesse 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. Restaurar o backup recente do HSM de origem.

Essas etapas permitem replicar manualmente o conteúdo do HSM para outra região. O nome do HSM (e o URI do ponto de extremidade de serviço) é diferente, portanto, você precisa 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 de HSM gerenciado:

  • O nome do HSM.
  • O grupo de recursos onde ele está localizado em sua assinatura.
  • A localização do Azure.
  • Uma lista de administradores iniciais.

O exemplo a seguir cria um HSM chamado <destination-hsm-name>, no grupo <resource-group>de recursos, que reside no local especificado, com o usuário conectado atual como o ú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

Observação

O comando Criar pode levar alguns minutos. Quando ele retornar com sucesso, você estará pronto para ativar o HSM.

Aviso

As instâncias de HSM gerenciadas são consideradas sempre em uso. Se optar por ativar a proteção contra exclusão automática usando a opção --enable-purge-protection, será cobrado o valor total do período de retenção.

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

  • nome: o nome do HSM especificado. Você usará esse nome para outros comandos do Key Vault.
  • hsmUri: o URI do HSM (por exemplo, https://<hsm-name>.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 tem autorização.

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

Neste ponto do processo normal de criação, inicializamos e baixamos o novo Domínio de Segurança do HSM. No entanto, como estamos executando um procedimento de recuperação de desastre, solicitamos que o HSM entre no Modo de Recuperação do Domínio de Segurança e faça o download de uma Chave de Troca de Domínio de Segurança. A Chave de Troca do 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 Domínio de Segurança seguro durante a transferência.

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

Criar um blob de upload do domínio de segurança do HSM de origem

Para esta etapa, você precisará:

  • A Chave do Exchange 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 necessário 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.
  • Cria um blob de upload do 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 HSM de origem, as 3 das chaves privadas correspondentes e a Chave do Exchange de Domínio de Segurança para criar e baixar um blob criptografado que usaremos para carregar no HSM de destino, que está aguardando para receber um Domínio de Segurança.

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 

Carregar blob de upload do domínio de segurança no HSM de destino

Agora, usamos o blob de Upload do 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 impedir a exposição de chaves em um ambiente online.

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

Agora, o HSM de origem e o HSM de destino têm o mesmo domínio de segurança. Agora podemos restaurar um backup completo do HSM de origem para o HSM de destino.

Backup e restauração

É sempre uma boa ideia fazer um backup completo antes de executar uma restauração de 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 de HSM, você precisará de:

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

Usamos o comando de backup az keyvault para o backup do HSM no contêiner <container-name>de armazenamento, que está na conta <storage-account-name> de armazenamento nos exemplos a seguir.

Se estiver usando o método de identidade gerenciada atribuído pelo usuário, especificaremos a identidade gerenciada atribuída pelo 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 <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 backup do HSM de origem

Para esta etapa, 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 HSM de destino, usando o backup do MHSM de origem que estamos tentando restaurar, que está na pasta chamada <backup-folder> encontrada no contêiner de armazenamento <container-name> da conta de armazenamento <storage-account-name> no exemplo a seguir.

Se estiver usando o método de identidade gerenciada atribuído pelo usuário, definiremos o --use-managed-identity parâmetro como "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

Agora você concluiu um processo completo de recuperação de desastre. 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, marcas e atribuições de função.

Próximas etapas