Recuperação de desastre do HSM Gerenciado

Talvez você queira criar uma réplica exata do HSM para o caso do original ser perdido ou ficar indisponível devido a qualquer uma destas razões:

  • Foi excluído e, em seguida, limpo.
  • Uma falha catastrófica na região resultou na destruição de todas as partições-membro.

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

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

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

  1. Crie uma instância do HSM.
  2. Ative a "Recuperação do Domínio de Segurança". Um novo par de chaves RSA (chave de Troca do Domínio de Segurança) será gerado para a transferência do Domínio de Segurança e enviado como resposta, que será baixada como uma SecurityDomainExchangeKey (chave pública).
  3. Crie e carregue o "Arquivo de Transferência do Domínio de Segurança". Você precisará das chaves privadas que criptografam o domínio de segurança. As chaves privadas são usadas localmente e jamais são transferidas em nenhum lugar desse processo.
  4. Faça um backup do novo HSM. É necessário um backup antes de qualquer operação de restauração, mesmo quando o HSM está vazio. Os backups facilitam a reversão.
  5. Restaurar o backup recente do HSM de origem.

Estas 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, será necessário alterar a configuração do aplicativo para que essas chaves sejam usadas em outra localização.

Criar um HSM Gerenciado

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

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

  • O nome do HSM.
  • O grupo de recursos em que ele será colocado na assinatura.
  • A localização do Azure.
  • Uma lista de administradores iniciais.

O exemplo a seguir cria um HSM chamado ContosoMHSM2 no grupo de recursos ContosoResourceGroup, que se encontra na localização Oeste dos EUA 3, com o usuário conectado no momento sendo 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

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 Gerenciado são consideradas sempre em uso. Se você optar por habilitar a proteção contra limpeza usando o sinalizador --enable-purge-protection, será cobrado por todo o 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:

  • nome: no exemplo, o nome é ContosoMHSM. Você usará esse nome para outros comandos do Key Vault.
  • hsmUri: no exemplo, o URI é 'https://contosomhsm2.managedhsm.azure.net.' Os aplicativos que usam o HSM por meio da API REST devem usar essa URI.

Sua conta do Azure agora está autorizada a executar qualquer operação 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 de criação normal, 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 ao HSM que entre no Modo de Recuperação de Domínio de Segurança e baixe uma Chave de Troca do 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 a proteção do conteúdo do Domínio de Segurança durante a transferência.

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

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

Para esta etapa, será necessário:

  • A Chave de Troca do Domínio de Segurança que você baixou na etapa anterior.
  • O Domínio de Segurança do HSM de origem.
  • Ao menor o número do quorum de chaves privadas que foram usadas para criptografar o Domínio de segurança.

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

  • Descriptografa o Domínio de Segurança do HSM de origem com as chaves privadas que você fornece;
  • 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 ContosoMHSM, três das chaves privadas correspondentes e a chave de troca de domínio de segurança para criar e baixar um blob criptografado que usaremos para fazer upload 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 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 sinalizador --restore-blob é usado para impedir 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 nós podemos restaurar um backup completo do HSM de origem no HSM de destino.

Backup e restauração

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

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

Para criar um backup do HSM, será necessário:

  • Uma conta de armazenamento em que o backup será armazenado
  • Um contêiner de armazenamento de blobs nessa conta de armazenamento em que o processo de backup criará uma 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 az keyvault backup para o backup do 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 pelo usuário, especificaremos a identidade gerenciada atribuída pelo usuário com o parâmetro --mi-user-assigned 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 o backup do HSM de origem

Para esta etapa, você precisa:

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

Usamos o comando 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 encontrada 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ída pelo usuário, definiremos o parâmetro --use-managed-identity 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 de recuperação de desastre completo. O conteúdo do HSM de origem de quando o backup foi feito é copiado ao HSM de destino, incluindo todas as chaves, versões, atributos, marcações e atribuições de função.

Próximas etapas