Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il modulo di protezione hardware cloud di Microsoft Azure consente di eseguire il backup e il ripristino del modulo di protezione hardware cloud, mantenendo tutte le chiavi, le versioni, gli attributi, i tag e le assegnazioni di ruolo.
Importante
Quando si crea un backup del modulo di protezione hardware cloud di Azure, viene protetto da una chiave derivata all'interno del modulo di protezione hardware. Microsoft non ha visibilità o accesso alla chiave derivata che protegge i backup. HSM cloud di Azure non supporta il ripristino di un backup nel modulo di protezione hardware di origine o in qualsiasi modulo di protezione hardware cloud già attivato. Per eseguire il ripristino, usare un altro modulo di protezione hardware cloud non attivato in qualsiasi area preferita. In caso contrario, l'operazione di ripristino non riesce, rendendo la destinazione Cloud HSM non funzionante.
Prerequisiti
I prerequisiti seguenti supportano le operazioni di backup e ripristino del modulo di protezione hardware cloud di Azure.
- Identità del servizio gestita configurata per l'origine e la destinazione del modulo di protezione hardware cloud di Azure.
- Archiviazione BLOB di Azure con controllo degli accessi in base al ruolo (Collaboratore ai dati dei BLOB di archiviazione).
- La risorsa di destinazione del modulo di protezione hardware cloud di Azure deve trovarsi nello stato NotActivated.
Le configurazioni seguenti non sono supportate per il backup e il ripristino con HSM cloud di Azure.
- I token SAS del contenitore di archiviazione non sono supportati.
Applicare un MSI a Cloud HSM e creare un account di archiviazione per i backup del HSM.
Creazione di un'identità del servizio gestita
Creare una nuova identità gestita assegnata dall'utente nel gruppo di risorse HSM Cloud di Azure esistente. In questo esempio guidato, usiamo CHSM-MSI e CHSM-SERVER-RG, il nome del gruppo di risorse a cui si fa riferimento nell'esempio di onboarding di Azure Cloud HSM.
# 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
Applicare MSI al Cloud HSM di origine e destinazione
Per le operazioni di backup e ripristino del modulo di protezione hardware cloud di Azure, è necessario applicare un'identità del servizio gestito alle risorse del modulo di protezione hardware cloud di origine e di destinazione. Ogni cluster Cloud HSM può avere solo un MSI. È possibile utilizzare lo stesso MSI sia per l'origine che per la destinazione oppure utilizzare MSI diversi per ciascuna. In questo esempio guidato, applichiamo la stessa identità del servizio gestito (MSI) sia alle risorse Cloud HSM di origine che a quelle di destinazione.
# 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
Creare un account di archiviazione nella tua rete virtuale privata per i backup del Cloud HSM
Configurare l'infrastruttura di archiviazione per le operazioni di backup del modulo di protezione hardware cloud di Azure definendo e configurando un account di archiviazione e un contenitore BLOB associato all'interno di una rete virtuale privata. Iniziare definendo l'ID sottoscrizione e specificando i parametri dell'account di archiviazione, tra cui posizione, SKU e tipo. Il processo include la creazione di un nuovo gruppo di risorse, la definizione dell'account di archiviazione con regole di rete per limitare l'accesso a una rete virtuale designata e migliorare la sicurezza tramite un endpoint privato. Viene configurato un endpoint privato per l'accesso sicuro e il ruolo "Collaboratore ai dati dei BLOB di archiviazione" viene assegnato a un'identità specificata per garantire le autorizzazioni appropriate per le attività di backup. In questo esempio viene creato un nuovo gruppo di risorse denominato CHSM-BACKUP-RG, un account di archiviazione denominato chsmbackup00 e un contenitore BLOB denominato chsmbackupcontainer00, con accesso in lettura/scrittura concesso sia per l'origine che per la destinazione.
Importante
Il ruolo di controllo degli accessi in base al ruolo minimo necessario è Collaboratore ai dati dei BLOB di archiviazione. Gli account di archiviazione pubblici sono accessibili tramite Internet pubblico, quindi posizionare l'account di archiviazione dietro una rete virtuale privata per una maggiore sicurezza.
# 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
Disabilitare l'accesso con chiave condivisa tramite l'impostazione del portale
Disabilitare l'accesso con chiave condivisa per migliorare la sicurezza. A tale scopo, passare all'account di archiviazione di Azure, selezionare Configurazione delle impostazioni >> e impostare "Consenti l'accesso alla chiave dell'account di archiviazione" su "Disabilitato".
Backup del modulo di protezione hardware cloud di Azure
Avvia il backup di Cloud HSM dall'HSM di origine
Avvia un backup per l'Azure Cloud HSM di origine inviando una richiesta POST con l'URI del contenitore di archiviazione all'endpoint dell'API per il backup. Per monitorare l'avanzamento del backup, invia una richiesta GET all'URL presente nelle intestazioni della risposta. Lo script recupera e mostra lo stato del processo di backup e l'ID di backup univoco dalla risposta, confermando che il backup è stato avviato e monitorandone lo stato.
# 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
Output previsto: $backupStatus restituisce "Succeeded" e $backupID mostra l'ID di backup corrispondente per il backup avviato.
Ripristino dell'HSM cloud di Azure
Avviare il ripristino del modulo di protezione hardware cloud nel modulo di protezione hardware di destinazione
Avvia un'operazione di ripristino per l'Azure Cloud HSM di destinazione fornendo le proprietà di ripristino necessarie, inclusi l'URI del contenitore di archiviazione e l'ID di backup. Lo script crea l'URI corretto per l'endpoint dell'API di ripristino e invia una richiesta POST per avviare il ripristino. Per monitorare lo stato di avanzamento del ripristino, inviare una richiesta GET al percorso specificato nelle intestazioni di risposta e recuperare lo stato del processo di ripristino per confermarne il completamento.
$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
Output previsto: $jobStatus deve restituire "Succeeded".
Convalidare il ripristino nel modulo di protezione hardware cloud di destinazione
Dopo un certo periodo di elaborazione, l'operazione di ripristino dovrebbe indicare "Operazione riuscita" e il modulo di protezione hardware del cloud di destinazione dovrebbe visualizzare lo stato di attivazione "Attivo". Quando ci si connette al modulo di protezione hardware di Destination Cloud in cui è stata eseguita l'operazione di ripristino, l'esecuzione e l'esecuzione azcloudhsm_mgmt_utilgetClusterInfo dovrebbero mostrare tutti e tre i nodi come attivi e disponibili.
Importante
Quando ci si connette al modulo di protezione hardware cloud di Azure dalla macchina virtuale amministratore, aggiornare sia i file di configurazione client che di gestione (azcloudhsm_resource.cfg) in modo che puntino al modulo di protezione hardware cloud di destinazione corretto in cui è stato eseguito il ripristino.
Avviare il
azcloudhsm_mgmt_utileseguendo:Linux
cd /usr/local/bin/AzureCloudHSM-ClientSDK-* sudo ./azcloudhsm_mgmt_util ./azcloudhsm_resource.cfgWindows
cd azcloudhsm_mgmt_util .\azcloudhsm_mgmt_util.exe .\azcloudhsm_resource.cfgAll'interno dell'utilità di gestione, il prompt diventa
cloudmgmt. Per elencare le informazioni sul cluster, eseguire:getClusterInfoOutput previsto:
getClusterInfodovreste verificare che tutti e tre i nodi siano ora disponibili per il cluster HSM nel cloud di Azure.Uscire dall'utilità di gestione, quindi avviare l'utilità HSM cloud di Azure (
azcloudhsm_util). Accedere come CU ed eseguire ilfindKeycomando .Importante
Gli handle di chiave possono cambiare perché sono dinamici; tuttavia, gli ID chiave non cambiano.
Linux
./azcloudhsm_util loginHSM -u CU -s cu1 -p user1234 findKeyWindows
azcloudhsm_util.exe loginHSM -u CU -s cu1 -p user1234 findKey