Tutoriel : Déploiement de modules HSM sur un réseau virtuel existant à l’aide de PowerShell
Le service HSM dédié d’Azure fournit un appareil physique à usage exclusif du client, avec un contrôle administratif complet et une responsabilité complète de la gestion. Étant donné qu’il fournit du matériel physique, Microsoft doit contrôler la façon dont ces appareils sont alloués afin de vérifier que la capacité est gérée de manière efficace. Par conséquent, dans un abonnement Azure, le service HSM dédié n’est normalement pas visible pour l’approvisionnement en ressources. Tous les clients Azure qui nécessitent un accès au service HSM dédié doivent d’abord contacter le responsable de leur compte Microsoft afin d’effectuer une demande d’inscription au service HSM dédié. Ce n’est qu’une fois le processus terminé que l’approvisionnement est possible.
Ce tutoriel montre un processus de provisionnement typique où le client :
- Dispose déjà d’un réseau virtuel
- Dispose d’une machine virtuelle
- Doit ajouter des ressources HSM dans l’environnement existant
L’architecture typique de déploiement multi-régions à haute disponibilité est la suivante :
Ce tutoriel concerne l’intégration d’une paire de modules de sécurité matériels (HSM) et l’intégration de la passerelle ExpressRoute nécessaire (voir le sous-réseau 1 ci-dessus) à un réseau virtuel existant (voir le réseau virtuel 1 ci-dessus). Toutes les autres ressources sont des ressources Azure standard. Le même processus d’intégration peut être utilisé pour les modules HSM situés sur le sous-réseau 4 du réseau virtuel 3 ci-dessus.
Notes
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour bien démarrer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Prérequis
Le service Azure Dedicated HSM n’est actuellement pas disponible sur le Portail Azure. Par conséquent, toutes les interactions avec le service se font via la ligne de commande ou à l’aide de PowerShell. Pour ce tutoriel, nous utiliserons PowerShell dans Azure Cloud Shell. Si vous débutez avec PowerShell, suivez les instructions fournies ici : Bien démarrer avec Azure PowerShell.
Il est supposé que :
- Vous avez un gestionnaire de compte Microsoft attribué et vous remplissez l’exigence monétaire d’au moins cinq millions d’USD (5 M $) en revenu annuel global Azure engagé pour être éligible à l’intégration et l’utilisation d’Azure Dedicated HSM.
- Vous avez suivi le processus d’enregistrement du service Azure Dedicated HSM et avez été autorisé à l’utiliser. Si ce n’est pas le cas, contactez votre responsable de compte Microsoft.
- Vous avez créé un groupe de ressources pour ces ressources et pour les nouvelles ressources déployées dans ce tutoriel.
- Vous avez déjà créé le réseau virtuel, le sous-réseau et les machines virtuelles nécessaires et vous souhaitez maintenant intégrer deux modules HSM à ce déploiement.
Les instructions suivantes supposent que vous avez déjà navigué sur le Portail Azure et que vous avez ouvert Cloud Shell (sélectionnez « >_ » en haut à droite du portail).
Provisionnement d’un module HSM dédié
L’approvisionnement des modules HSM et leur intégration dans un réseau virtuel existant via la passerelle ExpressRoute sont validés à l’aide de l’outil de ligne de commande SSH afin de garantir l’accessibilité et la disponibilité de base du module HSM pour toutes les activités de configuration ultérieures. Les commandes suivantes utilisent un modèle Resource Manager pour créer les ressources HSM et les ressources réseau associées.
Vérification de la fonctionnalité d’inscription
Comme indiqué précédemment, toute activité d’approvisionnement nécessite que le service HSM dédié soit inscrit à votre abonnement. Pour vérifier si c’est le cas, exécutez la commande PowerShell suivante dans le Cloud Shell du portail Azure.
Get-AzProviderFeature -ProviderNamespace Microsoft.HardwareSecurityModules -FeatureName AzureDedicatedHsm
Avant de continuer, la commande doit retourner un état « Inscrit ». Si vous n’êtes pas inscrit pour ce service, contactez votre représentant de compte Microsoft.
Création de ressources HSM
Un appareil HSM est approvisionné dans le réseau virtuel d’un client, ce qui nécessite un sous-réseau. Pour permettre la communication entre le réseau virtuel et l’appareil physique, vous devez utiliser une passerelle ExpressRoute. En outre, vous devez utiliser une machine virtuelle pour accéder au module HSM à l’aide du logiciel client Thales.
Vous pouvez créer une ressource HSM dédiée à l’aide d’un modèle ARM en vous inspirant de l’exemple suivant. Vous devez mettre à jour les paramètres en remplaçant les lignes contenant « value » : « » par vos noms de ressources préférés.
namingInfix
Préfixe des noms de ressources HSMExistingVirtualNetworkName
Nom du réseau virtuel utilisé pour les modules HSMDedicatedHsmResourceName1
Nom de la ressource HSM dans le tampon de centre de données 1DedicatedHsmResourceName2
Nom de la ressource HSM dans le tampon de centre de données 2hsmSubnetRange
Plage d’adresses IP du sous-réseau pour les modules HSMERSubnetRange
Plage d’adresses IP du sous-réseau pour la passerelle de réseau virtuel
Voici un exemple de ces modifications :
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
"namingInfix": {
"value": "MyHSM"
},
"ExistingVirtualNetworkName": {
"value": "MyHSM-vnet"
},
"DedicatedHsmResourceName1": {
"value": "HSM1"
},
"DedicatedHsmResourceName2": {
"value": "HSM2"
},
"hsmSubnetRange": {
"value": "10.0.2.0/24"
},
"ERSubnetRange": {
"value": "10.0.255.0/26"
},
}
}
Le fichier de modèle Resource Manager associé crée six ressources avec ces informations :
- Un sous-réseau pour les modules HSM dans le réseau virtuel spécifié
- Un sous-réseau pour la passerelle de réseau virtuel
- Une passerelle de réseau virtuel qui connecte le réseau virtuel aux modules HSM
- Une adresse IP publique pour la passerelle
- Un module HSM dans le tampon 1
- Un module HSM dans le tampon 2
Une fois que les valeurs de paramètres sont définies, les fichiers doivent être chargés sur le partage de fichiers Cloud Shell du portail Azure en vue de leur utilisation. Dans le Portail Azure, sélectionnez le symbole « >_ » Cloud Shell en haut à droite, ce qui vous permet d’utiliser la partie inférieure de l’écran comme un environnement de commande. Les options sont BASH et PowerShell, et vous devez sélectionner BASH si cela n’est pas déjà fait.
Dans la barre d’outils, sélectionnez l’option de charger/télécharger pour charger le modèle et les fichiers de paramètres sur votre partage de fichiers :
Une fois les fichiers chargés, vous êtes prêt à créer des ressources.
Avant de créer de nouvelles ressources HSM, il est nécessaire de disposer de certaines ressources préalables. Vous devez disposer d’un réseau virtuel avec des plages de sous-réseau pour le calcul, les modules HSM et la passerelle. Les commandes suivantes sont des exemples permettant de créer ce réseau virtuel.
$compute = New-AzVirtualNetworkSubnetConfig `
-Name compute `
-AddressPrefix 10.2.0.0/24
$delegation = New-AzDelegation `
-Name "myDelegation" `
-ServiceName "Microsoft.HardwareSecurityModules/dedicatedHSMs"
$hsmsubnet = New-AzVirtualNetworkSubnetConfig `
-Name hsmsubnet `
-AddressPrefix 10.2.1.0/24 `
-Delegation $delegation
$gwsubnet= New-AzVirtualNetworkSubnetConfig `
-Name GatewaySubnet `
-AddressPrefix 10.2.255.0/26
New-AzVirtualNetwork `
-Name myHSM-vnet `
-ResourceGroupName myRG `
-Location westus `
-AddressPrefix 10.2.0.0/16 `
-Subnet $compute, $hsmsubnet, $gwsubnet
Notes
La chose la plus importante à noter concernant la configuration du réseau virtuel est que le sous-réseau du module HSM doit avoir des délégations définies sur « Microsoft.HardwareSecurityModules/dedicatedHSMs ». Si ce n’est pas le cas, le provisionnement HSM ne fonctionnera pas.
Une fois que toutes les conditions préalables sont réunies et que le modèle du Resource Manager a été mis à jour avec vos noms uniques (au moins le nom du groupe de ressources), exécutez la commande suivante :
New-AzResourceGroupDeployment -ResourceGroupName myRG `
-TemplateFile .\Deploy-2HSM-toVNET-Template.json `
-TemplateParameterFile .\Deploy-2HSM-toVNET-Params.json `
-Name HSMdeploy -Verbose
L’exécution de cette commande prend environ 20 minutes. L’option « -verbose » utilisée permet de s’assurer que l’état est affiché en permanence.
Une fois l’opération terminée, indiquée par « provisioningState » : « Succeeded », vous pouvez vous connecter à votre machine virtuelle existante et utiliser SSH pour garantir la disponibilité de l’appareil HSM.
Vérification du déploiement
Pour vérifier que les modules ont été provisionnés et pour voir les attributs des modules, exécutez le jeu de commandes suivant. Vérifiez que le groupe de ressources est défini correctement et que le nom de la ressource correspond exactement à celui du fichier de paramètres.
$subid = (Get-AzContext).Subscription.Id
$resourceGroupName = "myRG"
$resourceName = "HSM1"
Get-AzResource -Resourceid /subscriptions/$subId/resourceGroups/$resourceGroupName/providers/Microsoft.HardwareSecurityModules/dedicatedHSMs/$resourceName
Vous pouvez également voir les ressources dans l’Explorateur de ressources Azure. Une fois dans l’Explorateur, développez « Abonnements » sur la gauche, votre abonnement pour HSM dédié, « Groupes de ressources », le groupe de ressources que vous avez utilisé, puis sélectionnez l’élément « Ressources ».
Test du déploiement
Pour tester le déploiement, il suffit de se connecter à une machine virtuelle qui peut accéder aux modules HSM, puis de se connecter directement au module HSM. Ces actions permettent de vérifier que le module HSM est accessible. L’outil SSH est utilisé pour la connexion à la machine virtuelle. La commande sera similaire à celle qui suit, sauf qu’elle contiendra le nom de l’administrateur et le nom DNS que vous avez spécifiés dans le paramètre.
ssh adminuser@hsmlinuxvm.westus.cloudapp.azure.com
Le mot de passe à utiliser est celui du fichier de paramètres. Une fois connecté à la machine virtuelle Linux, vous pouvez vous connecter au module HSM à l’aide de l’adresse IP privée indiquée dans le portail pour le <préfixe> de ressource hsm_vnic.
(Get-AzResource -ResourceGroupName myRG -Name HSMdeploy -ExpandProperties).Properties.networkProfile.networkInterfaces.privateIpAddress
Une fois que vous disposez de l’adresse IP, exécutez la commande suivante :
ssh tenantadmin@<ip address of HSM>
En cas de réussite, un mot de passe vous est demandé. Le mot de passe par défaut est PASSWORD. Le module HSM vous invitera à changer votre mot de passe. Choisissez un mot de passe fort et utilisez le mécanisme choisi par votre organisation pour stocker le mot de passe et éviter toute perte de données.
Important
Si vous perdez ce mot de passe, le module HSM doit être réinitialisé, ce qui signifie que vous perdrez vos clés.
Lorsque vous êtes connecté au module HSM avec ssh, exécutez la commande suivante pour vérifier que le module est opérationnel.
hsm show
La sortie doit ressembler à ceci :
À ce stade, vous avez alloué toutes les ressources pour un déploiement haute disponibilité à deux modules HSM, et vous avez vérifié que l’accès était possible et que l’état était opérationnel. Toute configuration ou tests supplémentaires doivent être effectués au niveau du module HSM. Pour cela, vous devez suivre les instructions du chapitre 7 du guide d’administration de Thales Luna 7 HSM pour initialiser le module HSM et créer des partitions. L’ensemble des logiciels et de la documentation peuvent être téléchargés directement du site Thales une fois que vous vous êtes inscrit dans le portail de support client Thales et que vous disposez d’un ID client. Téléchargez le logiciel client version 7.2 pour obtenir tous les composants nécessaires.
Supprimer ou nettoyer des ressources
Si vous n’avez plus besoin du module HSM, vous pouvez le supprimer comme ressource. Le module sera alors remis dans le pool des modules disponibles. Lorsque vous supprimez un module, le problème évident qui se pose est celui des données client sensibles qui s’y trouvent. La meilleure façon de « mettre à zéro » un module consiste à entrer un mot de passe d’administrateur HSM incorrect à trois reprises (remarque : il ne s’agit pas de l’administrateur d’appliance, mais bien de l’administrateur HSM). Le module ne peut pas être supprimé comme ressource Azure tant qu’il n’est pas à l’état mis à zéro. C’est une mesure de sécurité visant à protéger le matériel de clé.
Notes
Si vous rencontrez un problème avec la configuration d’un module Thales, vous devez contacter le support technique Thales.
Si vous souhaitez supprimer la ressource HSM dans Azure, vous pouvez utiliser la commande suivante en remplaçant les variables « $ » par vos propres paramètres :
$subid = (Get-AzContext).Subscription.Id
$resourceGroupName = "myRG"
$resourceName = "HSMdeploy"
Remove-AzResource -Resourceid /subscriptions/$subId/resourceGroups/$resourceGroupName/providers/Microsoft.HardwareSecurityModules/dedicatedHSMs/$resourceName
Étapes suivantes
Les étapes décrites dans ce tutoriel vous ont permis de provisionner les ressources HSM dédié et de les rendre disponibles dans votre réseau virtuel. Vous pouvez maintenant compléter ce déploiement avec d’autres ressources, selon les besoins de votre architecture de déploiement. Pour plus d’informations sur la planification de votre déploiement, consultez les documents Concepts. La conception recommandée comprend deux modules HSM dans une région primaire pour la disponibilité au niveau du rack, et deux modules HSM dans une région secondaire pour la disponibilité régionale. Le fichier de modèle utilisé dans ce tutoriel peut facilement être utilisé comme base pour un déploiement à deux HSM. Toutefois, vous devez modifier ses paramètres pour répondre à vos besoins.