Récupération d’urgence du HSM managé

Vous souhaiterez peut-être créer un réplica exact de votre HSM si l’original est perdu ou indisponible pour l’une des raisons suivantes :

  • Il a été supprimé, puis vidé.
  • Une défaillance irrémédiable a eu lieu dans la région, entraînant la destruction de toutes les partitions membres.

Vous pouvez recréer l’instance HSM dans la même région ou dans une autre région si vous disposez des éléments suivants :

  • Le domaine de sécurité du HSM source.
  • Les clés privées (au moins le numéro de quorum) qui chiffrent le domaine de sécurité.
  • La sauvegarde complète la plus récente du HSM réalisée à partir du HSM source.

Voici les étapes de la récupération d’urgence :

  1. Créer une instance HSM.
  2. Activez la « Récupération du domaine de sécurité ». Une nouvelle paire de clés RSA (clé d’échange de domaine de sécurité) sera générée pour le transfert du domaine de sécurité puis envoyée en réponse, laquelle sera téléchargée sous forme de clé publique SecurityDomainExchangeKey.
  3. Créez puis chargez le « Fichier de transfert de domaine de sécurité ». Vous aurez besoin des clés privées qui chiffrent le domaine de sécurité. Les clés privées sont utilisées localement et ne sont pas transférées lors de ce processus.
  4. Effectuez une sauvegarde du nouveau HSM. Une sauvegarde est nécessaire avant toute restauration, même si le HSM est vide. Les sauvegardes permettent d’effectuer des restaurations simples.
  5. Restaurer la sauvegarde la plus récente du HSM à partir du HSM source.

Ces étapes vont vous permettre de répliquer manuellement le contenu du HSM dans une autre région. Le nom du HSM (et l’URI du point de terminaison de service) seront différents : vous devrez donc modifier la configuration de votre application pour utiliser ces clés depuis un autre emplacement.

Créer un HSM managé

Utilisez la commande az keyvault create pour créer un HSM managé. Ce script a trois paramètres obligatoires : le nom d’un groupe de ressources, le nom d’un HSM et l’emplacement géographique.

Vous devez fournir les entrées suivantes pour créer une ressource de HSM managé :

  • Le nom du HSM.
  • Le groupe de ressources dans lequel il sera placé, à l’intérieur de votre abonnement.
  • L’emplacement Azure.
  • La liste des administrateurs initiaux.

L’exemple suivant crée un HSM nommé ContosoMHSM2 dans le groupe de ressources ContosoResourceGroup, qui réside à l’emplacement USA Ouest 3, avec l’utilisateur actuellement connecté comme unique administrateur.

oid=$(az ad signed-in-user show --query objectId -o tsv)
az keyvault create --hsm-name "ContosoMHSM2" --resource-group "ContosoResourceGroup" --location "westus3" --administrators $oid

Notes

La création peut prendre quelques minutes. Une fois celle-ci terminée, vous êtes prêt à activer votre HSM.

Avertissement

Les instances HSM managées sont considérées comme toujours en cours d’utilisation. Si vous choisissez d’activer la protection contre le vidage à l’aide de l’indicateur --enable-purge-protection, vous êtes facturé pour l’intégralité de la période de rétention.

La sortie de cette commande affiche les propriétés du HSM managé que vous avez créé. Les deux propriétés les plus importantes sont :

  • nom : Dans l’exemple, son nom est ContosoMHSM. Vous allez utiliser ce nom pour d’autres commandes Key Vault.
  • hsmUri : dans l’exemple, l’URI est https://contosomhsm2.managedhsm.azure.net.. les applications qui utilisent votre HSM via son API REST doivent utiliser cet URI.

Votre compte Azure est pour l’instant le seul autorisé à effectuer des opérations sur ce HSM managé. À l’heure actuelle, personne d’autre n’y est autorisé.

Activer le mode Récupération du domaine de sécurité

À ce stade du processus classique de création, nous initialisons et téléchargeons le nouveau domaine de sécurité du HSM. Toutefois, étant donné que nous exécutons une procédure de récupération d’urgence, nous demandons au HSM de passer en mode de récupération de domaine de sécurité et de télécharger une clé d’échange de domaine de sécurité à la place. La clé d’échange de domaine de sécurité est une clé publique RSA qui sera utilisée pour chiffrer le domaine de sécurité avant son chargement dans le HSM. La clé privée correspondante est protégée dans le HSM, afin de sécuriser le contenu de votre domaine de sécurité pendant le transfert.

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

Créer un blob de chargement de domaine de sécurité du HSM source

Pour cette étape, il vous faut :

  • La clé d’échange de domaine de sécurité que vous avez téléchargée à l’étape précédente.
  • Le domaine de sécurité du HSM source.
  • Au moins le numéro de quorum des clés privées qui sont utilisées pour chiffrer le domaine de sécurité.

La commande az keyvault security-domain restore-blob effectue les opérations suivantes :

  • Déchiffre le domaine de sécurité du HSM source à l’aide des clés privées que vous fournissez
  • Créer un blob de chargement de domaine de sécurité chiffré avec la clé d’échange de domaine de sécurité que nous avons téléchargée à l’étape précédente

Cette étape peut être effectuée hors connexion.

Dans l’exemple suivant, nous utilisons le domaine de sécurité de ContosoMHSM, les 3 clés privées correspondantes et la clé d’échange de domaine de sécurité pour créer et télécharger un blob chiffré que nous utiliserons pour le chargement dans ContosoMHSM2, qui attend de recevoir un domaine de sécurité.

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 

Charger le blob de chargement de domaine de sécurité dans le HSM de destination

Nous utilisons maintenant le blob de chargement de domaine de sécurité créé à l’étape précédente et le chargeons dans le HSM de destination pour effectuer la récupération du domaine de sécurité. L’indicateur --restore-blob est utilisé pour empêcher l’exposition de clés dans un environnement en ligne.

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

Désormais, le HSM source (ContosoMHSM) et le HSM de destination (ContosoMHSM2) ont le même domaine de sécurité. Nous pouvons maintenant restaurer une sauvegarde complète à partir du HSM source dans le HSM de destination.

Sauvegarde et restauration

Il est toujours judicieux de procéder à une sauvegarde complète avant d’exécuter une restauration HSM complète, afin de disposer d’un point de restauration en cas de problème avec la restauration. Pour ce faire, vous pouvez utiliser une des deux méthodes suivantes : une identité managée affectée par l’utilisateur ou des jetons SAP.

Créer une sauvegarde (comme point de restauration) de votre nouveau HSM

Pour créer une sauvegarde HSM, il vous faut :

  • Un compte de stockage dans lequel stocker la sauvegarde
  • Un conteneur Stockage Blob situé dans ce compte de stockage, dans lequel le processus de sauvegarde créera un nouveau dossier où stocker les sauvegardes chiffrées
  • Une identité managée affectée par l’utilisateur qui a le rôle Contributeur aux données Blob du stockage sur le compte de stockage OU un le jeton SAP du conteneur de stockage avec des autorisations « crdw »

Nous utilisons la commande az keyvault backup pour la sauvegarde du HSM dans le conteneur de stockage mhsmbackupcontainer, qui se trouve dans le compte de stockage mhsmdemobackup dans les exemples suivants.

Si nous utilisons la méthode de l’identité managée affectée par l’utilisateur, nous spécifions l’identité managée affectée par l’utilisateur avec le paramètre --mi-user-assigned et nous l’associons au HSM managé avant d’écrire la sauvegarde dans l’exemple ci-dessous.

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

Restaurer la sauvegarde à partir du HSM source

Pour cette étape, il vous faut :

  • Le compte de stockage et le conteneur d’objets blob où sont stockées les sauvegardes du HSM source
  • Le nom du dossier à partir duquel vous souhaitez restaurer la sauvegarde Si vous créez des sauvegardes régulièrement, il y aura de nombreux dossiers à l’intérieur de ce conteneur.

Nous utilisons la commande az keyvault restore dans le nouveau module HSM ContosoMHSM2 en utilisant la sauvegarde du MHSM source que nous essayons de restaurer, qui se trouve dans le nom de dossier mhsm-ContosoMHSM-2020083120161860 dans le conteneur de stockage mhsmdemobackupcontainer du compte de stockage ContosoBackup dans l’exemple suivant.

Si nous utilisons la méthode de l’identité managée affectée par l’utilisateur, nous définissons le paramètre --use-managed-identity sur « 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

Vous avez maintenant terminé le processus complet de récupération d’urgence. Le contenu du HSM source au moment de la sauvegarde est copié dans le HSM de destination, ainsi que l’ensemble des clés, versions, attributs, étiquettes et attributions de rôles.

Étapes suivantes