Partilhar via


Gestão de recuperação de desastres de HSM

Pode querer criar uma réplica exata do seu HSM caso o original se perca ou não esteja disponível devido a alguma destas razões:

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

Pode recriar a instância HSM na mesma ou noutra região se tiver:

Aqui estão os passos do procedimento de recuperação de desastres:

  1. Crie uma nova Instância HSM.
  2. Ativar a "Recuperação do Domínio de Segurança". Um novo par de chaves RSA (Security Domain Exchange Key) é gerado para transferência do Security Domain e enviado em resposta, sendo descarregado como uma SecurityDomainExchangeKey (chave pública).
  3. Crie e depois carregue o "Ficheiro de Transferência de Domínio de Segurança". Precisas das chaves privadas que encriptam o domínio de segurança. As chaves privadas são usadas localmente e nunca transferidas para lado nenhum neste processo.
  4. Faça uma cópia de segurança do novo HSM. É necessário um backup antes de qualquer restauro, mesmo quando o HSM está vazio. Os backups permitem uma reversão fácil.
  5. Restaurar o backup recente do HSM a partir do HSM de origem.

Estes passos permitem-lhe replicar manualmente o conteúdo do HSM para outra região. O nome do HSM (e o URI do endpoint de serviço) são diferentes, por isso tens de alterar a configuração da tua aplicação para usar estas chaves a partir de um local diferente.

Criar um novo HSM Gerido

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

Deve fornecer as seguintes entradas para criar um recurso de HSM gerido:

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

O exemplo seguinte cria um HSM chamado <destination-hsm-name>, no grupo de recursos <resource-group>, que reside na localização especificada, com o utilizador atualmente com sessão iniciada como ú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 create pode levar alguns minutos. Quando o processo for concluído com sucesso, estará pronto para ativar o seu HSM.

Advertência

As instâncias HSM geridas são consideradas sempre em uso. Se optar por ativar a proteção contra purgas usando o --enable-purge-protection indicador, é cobrado por todo o período de retenção.

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

  • nome: O nome HSM que especificaste. Você usará esse nome para outros comandos do Cofre da Chave.
  • hsmUri: O URI do seu HSM (por exemplo, https://<hsm-name>.managedhsm.azure.net). As aplicações que utilizam o seu HSM através da sua API REST devem usar este URI.

A sua conta Azure está agora autorizada a realizar quaisquer operações neste HSM Gerido. 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 descarregamos o Domínio de Segurança do novo HSM. No entanto, como estamos a executar um procedimento de recuperação de desastres, pedimos ao HSM que entre no Modo de Recuperação de Domínio de Segurança e descarregue uma Chave de Troca de Domínio de Segurança em vez disso. A Chave de Troca de Domínio de Segurança é uma chave pública RSA que será usada para encriptar o domínio de segurança antes de o carregar para o HSM. A chave privada correspondente está 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 <destination-hsm-name> --sd-exchange-key <destination-hsm-name>-SDE.cer

Crie um blob de Domínio de Segurança para Upload do HSM de origem

Para este passo, vai precisar de:

  • A Chave de Exchange de Domínio de Segurança que descarregou no passo anterior.
  • O Domínio de Segurança do HSM de origem.
  • Pelo menos o número necessário de quórum de chaves privadas usadas para encriptar o domínio de segurança.

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

  • Descifre o Domínio de Segurança do HSM de origem com as chaves privadas que fornecer.
  • Crie um blob de Upload de Domínio de Segurança encriptado com a Chave de Troca de Domínio de Segurança que descarregámos no passo anterior

Este passo pode ser realizado offline.

No exemplo seguinte, usamos o Domínio de Segurança do HSM de origem, as 3 das chaves privadas correspondentes e a Chave de Troca do Domínio de Segurança para criar e descarregar um blob encriptado que usaremos para carregar para o HSM de destino, que está à espera de 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 Domínio de Segurança Carregar blob para o HSM de destino

Agora usamos o blob de Upload do Domínio de Segurança criado na etapa anterior e carregámo-lo para o HSM de destino para completar a recuperação do domínio de segurança. A --restore-blob flag é usada para evitar a exposição de chaves num ambiente online.

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

Agora, tanto o HSM de origem como 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 uma cópia de segurança completa antes de executar uma restauração completa do HSM, para teres um ponto de restauração caso algo corra mal na restauração. Pode fazer isto usando um de dois métodos: identidade gerida atribuída pelo utilizador, ou tokens SAS.

Crie uma cópia de segurança (como ponto de restauro) do seu novo HSM

Para criar uma cópia de segurança HSM, vai precisar de:

  • Uma conta de armazenamento onde o backup será armazenado
  • Um contentor de armazenamento blob nesta conta de armazenamento onde o processo de backup criará uma nova pasta para armazenar cópias de segurança encriptadas
  • Uma identidade gerida atribuída pelo utilizador com o papel de Contribuidor de Dados de Blob de Armazenamento na conta de armazenamento, ou um token SAS de contentor de armazenamento com permissões 'crdw'.

Usamos o comando az keyvault backup para o backup HSM no contentor <container-name> de armazenamento, que está na conta <storage-account-name> de armazenamento nos exemplos seguintes.

Se usarmos o método de identidade gerida atribuída pelo utilizador, especificamos a identidade gerida atribuída pelo utilizador com o --mi-user-assigned parâmetro e associamos isso ao HSM Gerido antes de escrever a cópia de segurança 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 o backup a partir do HSM de origem

Para este passo, precisa de:

  • A conta de armazenamento e o contentor de blob onde estão armazenados os backups do HSM de origem.
  • O nome da pasta de onde quer restaurar o backup. Se criares backups regulares, haverá muitas pastas dentro deste contentor.

No exemplo seguinte, usamos o comando az keyvault restore para o HSM de destino, usando o backup do MHSM de origem que pretendemos restaurar, que está no nome <backup-folder> da pasta encontrado no contentor de armazenamento <container-name> da conta <storage-account-name> de armazenamento.

Se usarmos o método de identidade gerida atribuída pelo utilizador, definimos o --use-managed-identity parâmetro para "verdadeiro".

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 completou um processo completo de recuperação de desastres. O conteúdo do HSM de origem quando a cópia de segurança foi feita é copiado para o HSM de destino, incluindo todas as chaves, versões, atributos, etiquetas e atribuições de funções.

Próximos passos