Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Microsoft Azure Cloud HSM vous permet de sauvegarder et de restaurer votre HSM cloud, en conservant toutes les clés, versions, attributs, balises et attributions de rôles.
Important
Lorsque vous créez une sauvegarde HSM Cloud Azure, elle est protégée par une clé dérivée du HSM. Microsoft n’a pas de visibilité ni d’accès à la clé dérivée protégeant vos sauvegardes. Azure Cloud HSM ne prend pas en charge la restauration d’une sauvegarde sur son HSM source ou tout HSM cloud déjà activé. Pour restaurer, utilisez un autre HSM cloud non activé dans n’importe quelle région préférée. Sinon, l’opération de restauration échoue, rendant le HSM cloud de destination non fonctionnelle.
Conditions préalables
Les prérequis suivants sont nécessaires pour les opérations de sauvegarde et de restauration HSM Cloud Azure.
- Identité de service managée configurée pour la source et la destination Azure Cloud HSM.
- Stockage Blob Azure avec contrôle d’accès en fonction du rôle (RBAC) (Contributeur de données de Stockage Blob).
- La ressource de destination HSM cloud Azure doit être dans l’état NotActivated.
Les configurations suivantes ne sont pas prises en charge pour la sauvegarde et la restauration avec azure Cloud HSM.
- Les jetons SAS pour conteneurs de stockage ne sont pas pris en charge.
Appliquer une msi à HSM cloud et créer un compte de stockage pour les sauvegardes HSM
Création d’une identité de service managé
Créez une identité de service managé affectée par l’utilisateur dans votre groupe de ressources Azure Cloud HSM existant. Dans cet exemple guidé, nous utilisons CHSM-MSI et CHSM-SERVER-RG, le nom du groupe de ressources référencé dans l’exemple de guide d’intégration du HSM cloud Azure.
# Define parameters for the new managed service identity (MSI)
$identity = @{
Location = "<RegionName>"
ResourceName = "<MSIName>"
ResourceGroupName = "<ResourceGroupName>"
SubscriptionID = "<SubscriptionID>"
}
# Create a new user-assigned managed service identity (MSI) in the specified resource group and location
New-AzUserAssignedIdentity -Name $identity.ResourceName -ResourceGroupName $identity.ResourceGroupName -Location $identity.Location
Appliquer MSI à un HSM cloud source et de destination
Pour les opérations de sauvegarde et de restauration HSM cloud Azure, une identité de service managée (MSI) doit être appliquée à vos ressources HSM cloud source et de destination. Chaque cluster HSM cloud ne peut avoir qu’une seule MSI. Vous pouvez utiliser la même MSI pour la source et la destination ou utiliser des MSIs différentes pour chacun d’eux. Dans cet exemple guidé, nous appliquons la même MSI aux ressources HSM cloud source et de destination.
# Define the source Cloud HSM parameters
$sourceCloudHSM = @{
Location = "<RegionName>"
Sku = @{ "family" = "B"; "Name" = "Standard_B1" }
ResourceName = "<SourceCloudHSMName>"
ResourceType = "microsoft.hardwaresecuritymodules/cloudHsmClusters"
ResourceGroupName = "<SourceResourceGroupName>"
Force = $true
}
# Define the destination Cloud HSM parameters
$destinationCloudHSM = @{
Location = "<RegionName>"
Sku = @{ "family" = "B"; "Name" = "Standard_B1" }
ResourceName = "<DestinationCloudHSMName>"
ResourceType = "microsoft.hardwaresecuritymodules/cloudHsmClusters"
ResourceGroupName = "<DestinationResourceGroupName>"
Force = $true
}
# Define the Cloud HSM MSI patch payload
$chsmMSIPatch = '{
"Sku": {
"Family": "B",
"Name": "Standard_B1"
},
"Location": "<RegionName>",
"Identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<SubscriptionID>/resourcegroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<MSIName>": {}
}
}
}'
# Construct the source URI
$sourceURI = "/subscriptions/$($identity.SubscriptionID)/resourceGroups/$($sourceCloudHSM.ResourceGroupName)/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/$($sourceCloudHSM.ResourceName)?api-version=2024-06-30-preview"
# Construct the destination URI
$destinationURI = "/subscriptions/$($identity.SubscriptionID)/resourceGroups/$($destinationCloudHSM.ResourceGroupName)/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/$($destinationCloudHSM.ResourceName)?api-version=2024-06-30-preview"
# Invoke REST method to update the source Cloud HSM with MSI patch
Invoke-AzRestMethod -Path $sourceURI -Method Put -Payload $chsmMSIPatch
# Invoke REST method to update the destination Cloud HSM with MSI patch
Invoke-AzRestMethod -Path $destinationURI -Method Put -Payload $chsmMSIPatch
Créer un compte de stockage dans votre réseau virtuel privé pour les sauvegardes HSM cloud
Configurez l’infrastructure de stockage pour les opérations de sauvegarde HSM cloud Azure en définissant et en configurant un compte de stockage et un conteneur d’objets blob associé au sein d’un réseau virtuel privé. Commencez par définir l’ID d’abonnement et en spécifiant les paramètres du compte de stockage, notamment l’emplacement, la référence SKU et le type. Le processus inclut la création d’un groupe de ressources, l’établissement du compte de stockage avec des règles réseau pour restreindre l’accès à un réseau virtuel désigné et améliorer la sécurité via un point de terminaison privé. Un point de terminaison privé est configuré pour un accès sécurisé et le rôle « Contributeur aux données blob de stockage » est affecté à une identité spécifiée pour garantir les autorisations appropriées pour les tâches de sauvegarde. Dans cet exemple, nous créons un groupe de ressources nommé CHSM-BACKUP-RG, un compte de stockage appelé chsmbackup00 et un conteneur d’objets blob nommé chsmbackupcontainer00, avec un accès en lecture/écriture accordé pour la source et la destination.
Important
Le rôle RBAC minimal requis est Contributeur de données de Stockage Blob. Les comptes de stockage public sont accessibles via l’Internet public. Placez donc votre compte de stockage derrière un réseau virtuel privé pour renforcer la sécurité.
# Define the subscription ID
$subscriptionId = "<SubscriptionID>"
# Define storage account parameters
$storageAccount = @{
Location = "<RegionName>"
ResourceGroupName = "<BackupResourceGroupName>"
AccountName = "<ResourceName>" # Name for the storage account
SkuName = "<StorageAccountSKU>" # Storage account SKU (example: Standard_LRS)
Kind = "<StorageAccountType>" #Type of storage account (example: StorageV2)
}
# Define the blob container parameters
$container = @{
ResourceGroupName = $storageAccount.ResourceGroupName # Resource group name where the storage account is located
StorageAccountName = $storageAccount.AccountName # Name of the storage account
ContainerName = "<StorageContainerName>" # Name for the blob container
}
# Define the private endpoint parameters
# Storage accounts are publicly accessible, its recommended to put it behind a private VNET
$privateEndpoint = @{
Name = "<PrivateEndpointName>"
VnetName = "<ExistingVNetName>" # Name of the existing VNet
SubnetName = "<ExistingSubnetName>" # Name of the existing subnet within the VNet
ResourceGroupName = "<ResourceGroupName>" # Resource group for private VNet and subnet (example: CHSM-CLIENT-RG)
}
# Define the role assignment parameters
$roleAssignment = @{
RoleDefinitionName = "Storage Blob Data Contributor" # Minimum RBAC role required
PrincipalId = "<PrincipalId>" # The ID of the managed identity or user to assign the role to
Scope = "/subscriptions/$($subscriptionId)/resourceGroups/$($storageAccount.ResourceGroupName)/providers/Microsoft.Storage/storageAccounts/$($storageAccount.AccountName)"
}
# Create a new resource group with the specified name and location
New-AzResourceGroup -Name $storageAccount.ResourceGroupName -Location $storageAccount.Location -Force
# Create a new storage account in the specified resource group and location
# This command sets up the storage account needed for backup operations
New-AzStorageAccount -ResourceGroupName $storageAccount.ResourceGroupName `
-Name $storageAccount.AccountName `
-Location $storageAccount.Location `
-SkuName $storageAccount.SkuName `
-Kind $storageAccount.Kind
# Retrieve the storage account key
$storageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $storageAccount.ResourceGroupName -Name $storageAccount.AccountName)[0].Value
# Create the storage context
$storageAccountContext = New-AzStorageContext -StorageAccountName $storageAccount.AccountName -StorageAccountKey $storageAccountKey
# Create the blob container in the storage account
New-AzStorageContainer -Name $container.ContainerName -Context $storageAccountContext
# Retrieve the virtual network and subnet object
$vnet = Get-AzVirtualNetwork -ResourceGroupName $privateEndpoint.ResourceGroupName -Name $privateEndpoint.VnetName
$subnet = $vnet.Subnets | Where-Object { $_.Name -eq $privateEndpoint.SubnetName }
# Create the private endpoint for the storage account in the existing VNet
New-AzPrivateEndpoint -ResourceGroupName $storageAccount.ResourceGroupName `
-Name $privateEndpoint.Name `
-Location $storageAccount.Location `
-PrivateLinkServiceConnection @(
@{
Name = "$($storageAccount.AccountName)-connection"
PrivateLinkServiceConnectionState = @{
Status = "Approved"
Description = "Private Endpoint Connection"
}
PrivateLinkServiceId = "/subscriptions/$subscriptionId/resourceGroups/$($storageAccount.ResourceGroupName)/providers/Microsoft.Storage/storageAccounts/$($storageAccount.AccountName)"
GroupIds = @("blob") # Add this parameter with the required group ID
}
) `
-Subnet $subnet
# Assign 'Storage Blob Data Contributor' role to the specified identity
New-AzRoleAssignment -RoleDefinitionName $roleAssignment.RoleDefinitionName `
-PrincipalId $roleAssignment.PrincipalId `
-Scope $roleAssignment.Scope
Désactiver l’accès à la clé partagée via le paramètre du portail
Désactivez l’accès à la clé partagée pour améliorer la sécurité. Pour ce faire, accédez à votre compte de stockage Azure, sélectionnez Configuration des paramètres >> , puis définissez « Autoriser l’accès à la clé du compte de stockage » sur « Désactivé ».
Sauvegarde HSM cloud Azure
Lancer la sauvegarde HSM cloud depuis l’appareil HSM source
Démarrez une sauvegarde pour votre HSM Cloud Azure source en envoyant une requête POST avec l’URI du conteneur de stockage au point de terminaison de l’API de sauvegarde. Surveillez la progression de la sauvegarde en envoyant une requête GET à l’URL dans les en-têtes de réponse. Le script récupère et affiche l’état du travail de sauvegarde et l’ID de sauvegarde unique de la réponse, confirmant que la sauvegarde a démarré et suivi sa progression.
# Define backup properties, including the URI for the Azure Storage Blob container
$backupProperties = ConvertTo-Json @{
azureStorageBlobContainerUri = "https://$($container.StorageAccountName).blob.core.windows.net/$($container.ContainerName)"
}
# Construct the URI for the backup operation using the provided parameters
$backupUri = "/subscriptions/$($identity.SubscriptionID)/resourceGroups/$($sourceCloudHSM.ResourceGroupName)/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/$($sourceCloudHSM.ResourceName)/backup?api-version=2024-06-30-preview"
# Initiate the backup operation by sending a POST request with the backup properties
$response = Invoke-AzRestMethod -Path $backupUri -Method Post -Payload $backupProperties
# Check the backup job status to confirm it succeeded
$jobStatus = Invoke-AzRestMethod -Method 'GET' -Uri $response.Headers.Location
$backupStatus = (ConvertFrom-Json $jobStatus.Content).properties.status
# Extract the backup ID from the job status response
$backupID = (ConvertFrom-Json $jobStatus.Content).properties.backupId
# Output the backup status and backup ID
$backupStatus
$backupID
Sortie attendue : $backupStatus retourne « Réussi » et $backupID affiche l’ID de sauvegarde correspondant pour la sauvegarde que vous avez lancée.
Restauration HSM cloud Azure
Lancer la restauration du HSM cloud vers le HSM de destination
Démarrez une opération de restauration pour le HSM cloud Azure de destination en fournissant les propriétés de restauration nécessaires, y compris l’URI du conteneur de stockage et l’ID de sauvegarde. Le script crée l’URI approprié pour le point de terminaison de l’API de restauration et envoie une requête POST pour lancer la restauration. Pour surveiller la progression de la restauration, envoyez une requête GET à l’emplacement spécifié dans les en-têtes de réponse et récupérez l’état du travail de restauration pour confirmer son achèvement.
$restoreProperties = ConvertTo-Json @{
"azureStorageBlobContainerUri" = "https://$($container.StorageAccountName).blob.core.windows.net/$($container.ContainerName)"
"backupId" = "$($backupID)"
}
# Set the URI for the restore API endpoint using the subscription ID, resource group, and destination server details
$restoreUri = "/subscriptions/$($identity.SubscriptionID)/resourceGroups/$($destinationCloudHSM.ResourceGroupName)/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/$($destinationCloudHSM.ResourceName)/restore?api-version=2024-06-30-preview"
# Initiate the restore operation by sending a POST request to the restore API endpoint with the defined properties
$response = Invoke-AzRestMethod -Path $restoreUri -Method Post -Payload $restoreProperties
# Check the status of the restore job by sending a GET request to the location provided in the response headers
$jobStatus = Invoke-AzRestMethod -Method 'GET' -Uri $response.Headers.Location
# Extract and display the status of the restore job
(ConvertFrom-Json $jobStatus.Content).properties.status
Sortie attendue : $jobStatus doit retourner « Réussi ».
Valider la restauration vers le HSM cloud de destination
Après un certain temps de traitement, l’opération de restauration doit indiquer « Réussi », et le HSM cloud de destination doit afficher l’état d’activation « Actif ». Lorsque vous vous connectez au HSM cloud de destination où vous avez effectué l’opération de restauration, l’exécution azcloudhsm_mgmt_util et l’exécution getClusterInfo doivent afficher les trois nœuds comme actifs et disponibles.
Important
Lors de la connexion à Azure Cloud HSM à partir de la machine virtuelle d’administration, mettez à jour les fichiers de configuration client et de gestion (azcloudhsm_resource.cfg) pour pointer vers le HSM cloud de destination approprié où la restauration a été effectuée.
Pour démarrer
azcloudhsm_mgmt_util, exécutez :Linux
cd /usr/local/bin/AzureCloudHSM-ClientSDK-* sudo ./azcloudhsm_mgmt_util ./azcloudhsm_resource.cfgWindows
cd azcloudhsm_mgmt_util .\azcloudhsm_mgmt_util.exe .\azcloudhsm_resource.cfgÀ l’intérieur de l’utilitaire de gestion, le prompt devient
cloudmgmt. Pour répertorier les informations du cluster, exécutez :getClusterInfoSortie attendue :
getClusterInfodoit confirmer que les trois nœuds sont désormais disponibles pour votre cluster HSM Cloud Azure.Quittez l’utilitaire de gestion, puis lancez l’utilitaire Azure Cloud HSM (
azcloudhsm_util). Connectez-vous en tant que CU et exécutez la commandefindKey.Important
Les descripteurs de clé peuvent changer, car ils sont dynamiques ; toutefois, les ID de clé ne changent pas.
Linux
./azcloudhsm_util loginHSM -u CU -s cu1 -p user1234 findKeyWindows
azcloudhsm_util.exe loginHSM -u CU -s cu1 -p user1234 findKey