Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit Microsoft Azure Cloud HSM können Sie Ihre Cloud HSM sichern und wiederherstellen, wobei alle Schlüssel, Versionen, Attribute, Tags und Rollenzuweisungen beibehalten werden.
Wichtig
Wenn Sie eine Azure Cloud HSM-Sicherung erstellen, wird sie durch einen schlüssel geschützt, der innerhalb des HSM abgeleitet ist. Microsoft verfügt nicht über Sichtbarkeit oder Zugriff auf den abgeleiteten Schlüssel, der Ihre Sicherungen schützt. Azure Cloud HSM unterstützt das Wiederherstellen einer Sicherung auf deren Quell-HSM oder Cloud HSM, die bereits aktiviert ist. Verwenden Sie zum Wiederherstellen eine andere nicht aktivierte Cloud HSM in einer beliebigen bevorzugten Region. Andernfalls schlägt der Wiederherstellungsvorgang fehl, wodurch die Zielcloud HSM nicht funktional gerendert wird.
Voraussetzungen
Die folgenden Voraussetzungen unterstützen Azure Cloud HSM-Sicherungs- und Wiederherstellungsvorgänge.
- Verwaltete Dienstidentität, die für Azure Cloud HSM-Quelle und -Ziel konfiguriert ist.
- Azure Blob Storage mit RBAC (Storage Blob Data Contributor).
- Die Azure Cloud HSM-Zielressource muss sich im Status "NotActivated" befinden.
Die folgenden Konfigurationen werden für die Sicherung und Wiederherstellung mit Azure Cloud HSM nicht unterstützt.
- Speichercontainer-SAS-Token werden nicht unterstützt.
Anwenden einer MSI-Datei auf Cloud HSM und Erstellen eines Speicherkontos für HSM-Sicherungen
Erstellen einer verwalteten Dienstidentität
Erstellen Sie eine neue vom Benutzer zugewiesene verwaltete Dienstidentität in Ihrer vorhandenen Azure Cloud HSM-Ressourcengruppe. In diesem geführten Beispiel verwenden wir CHSM-MSI und CHSM-SERVER-RG, den Ressourcengruppennamen, auf den im Beispiel für das Azure Cloud HSM-Onboarding verwiesen wird.
# 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
Anwenden von MSI auf Quell- und Ziel-Cloud-HSM
Für Azure Cloud HSM-Sicherungs- und Wiederherstellungsvorgänge muss eine verwaltete Dienstidentität (MANAGED Service Identity, MSI) sowohl auf Ihre Quell- als auch die Ziel-Cloud HSM-Ressourcen angewendet werden. Jeder Cloud HSM-Cluster kann nur über eine MSI-Datei verfügen. Sie können entweder die gleiche MSI-Datei sowohl für die Quelle als auch für das Ziel verwenden oder für jedes unterschiedliche MSIs verwenden. In diesem geführten Beispiel wenden wir dasselbe MSI sowohl auf die Quell- als auch die Ziel-Cloud HSM-Ressourcen an.
# 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
Erstellen eines Speicherkontos in Ihrem privaten VNET für Cloud HSM-Sicherungen
Richten Sie die Speicherinfrastruktur für Azure Cloud HSM-Sicherungsvorgänge ein, indem Sie ein Speicherkonto und einen zugeordneten BLOB-Container in einem privaten virtuellen Netzwerk definieren und konfigurieren. Definieren Sie zunächst die Abonnement-ID, und geben Sie die Speicherkontoparameter an, einschließlich Standort, SKU und Typ. Der Prozess umfasst das Erstellen einer neuen Ressourcengruppe, das Einrichten des Speicherkontos mit Netzwerkregeln, um den Zugriff auf ein bestimmtes virtuelles Netzwerk einzuschränken und die Sicherheit über einen privaten Endpunkt zu verbessern. Ein privater Endpunkt ist für den sicheren Zugriff eingerichtet, und die Rolle "Storage Blob Data Contributor" wird einer bestimmten Identität zugewiesen, um geeignete Berechtigungen für Sicherungsaufgaben sicherzustellen. In diesem Beispiel erstellen wir eine neue Ressourcengruppe namens "CHSM-BACKUP-RG", ein Speicherkonto namens "chsmbackup00" und einen BLOB-Container mit dem Namen "chsmbackupcontainer000" mit Lese-/Schreibzugriff, der sowohl für Die Quelle als auch für das Ziel gewährt wurde.
Wichtig
Die minimale RBAC-Rolle ist Storage Blob Data Contributor. Auf öffentliche Speicherkonten kann über das öffentliche Internet zugegriffen werden. Platzieren Sie daher Ihr Speicherkonto hinter einem privaten VNET, um die Sicherheit zu erhöhen.
# 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
Deaktivieren des Zugriffs auf gemeinsam genutzte Schlüssel über die Portaleinstellung
Deaktivieren Sie den Zugriff auf gemeinsam genutzte Schlüssel, um die Sicherheit zu verbessern. Navigieren Sie dazu zu Ihrem Azure Storage-Konto, wählen Sie "Einstellungskonfiguration >> " aus, und legen Sie "Zugriff auf den Speicherkontoschlüssel zulassen" auf "Deaktiviert" fest.
Azure Cloud HSM Backup
Starten der Cloud HSM-Sicherung vom Quell-HSM
Starten Sie eine Sicherung für Ihre Quell-Azure Cloud HSM, indem Sie eine POST-Anforderung mit dem Speichercontainer-URI an den Sicherungs-API-Endpunkt senden. Überwachen Sie den Fortschritt der Sicherung, indem Sie eine GET-Anforderung an die URL in den Antwortheadern senden. Das Skript ruft den Status des Sicherungsauftrags und die eindeutige Sicherungs-ID aus der Antwort ab und zeigt sie an, dass die Sicherung gestartet wurde, und den Fortschritt nachverfolgt.
# 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
Erwartete Ausgabe: $backupStatus Gibt "Erfolgreich" zurück und $backupID zeigt die entsprechende Sicherungs-ID für die von Ihnen initiierte Sicherung an.
Azure Cloud HSM-Wiederherstellung
Initiieren Sie die Wiederherstellung von Cloud HSM zum Ziel-HSM.
Starten Sie einen Wiederherstellungsvorgang für das Ziel Azure Cloud HSM, indem Sie die erforderlichen Wiederherstellungseigenschaften bereitstellen, einschließlich des Speichercontainer-URI und der Sicherungs-ID. Das Skript erstellt den richtigen URI für den Wiederherstellungs-API-Endpunkt und sendet eine POST-Anforderung, um die Wiederherstellung zu initiieren. Um den Wiederherstellungsfortschritt zu überwachen, senden Sie eine GET-Anforderung an den Speicherort, der in den Antwortheadern angegeben ist, und rufen Sie den Status des Wiederherstellungsjobs ab, um den Abschluss zu bestätigen.
$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
Erwartete Ausgabe: $jobStatus sollte "Erfolgreich" zurückgeben.
Überprüfung der Wiederherstellung zum Ziel-Cloud-HSM
Nach einiger Verarbeitungszeit sollte der Wiederherstellungsvorgang als "Erfolgreich" angezeigt werden, und das Zielcloud-HSM sollte den Aktivierungsstatus "Aktiv" anzeigen. Wenn Sie sich mit dem Zielcloud-HSM verbinden, auf dem Sie den Wiederherstellungsvorgang durchgeführt haben, sollten azcloudhsm_mgmt_util und getClusterInfo zeigen, dass alle drei Knoten als aktiv und verfügbar angezeigt werden.
Wichtig
Aktualisieren Sie beim Herstellen einer Verbindung mit Azure Cloud HSM von der Administrator-VM sowohl die Client- als auch die Verwaltungskonfigurationsdateien (azcloudhsm_resource.cfg) so, dass sie auf das richtige Ziel cloud HSM verweisen, in dem die Wiederherstellung ausgeführt wurde.
Starten Sie
azcloudhsm_mgmt_utildurch Ausführen von:Linux
cd /usr/local/bin/AzureCloudHSM-ClientSDK-* sudo ./azcloudhsm_mgmt_util ./azcloudhsm_resource.cfgFenster
cd azcloudhsm_mgmt_util .\azcloudhsm_mgmt_util.exe .\azcloudhsm_resource.cfgInnerhalb des Verwaltungsprogramms wird die Eingabeaufforderung
cloudmgmt. Führen Sie Folgendes aus, um die Clusterinformationen auflisten zu können:getClusterInfoErwartete Ausgabe:
getClusterInfosollte bestätigen, dass alle drei Knoten jetzt für Ihren Azure Cloud HSM-Cluster verfügbar sind.Beenden Sie das Verwaltungsprogramm, und starten Sie dann das Azure Cloud HSM Utility (
azcloudhsm_util). Melden Sie sich als CU an, und führen Sie denfindKeyBefehl aus.Wichtig
Tastenziehpunkte können sich ändern, da sie dynamisch sind; Schlüssel-IDs werden jedoch nicht geändert.
Linux
./azcloudhsm_util loginHSM -u CU -s cu1 -p user1234 findKeyFenster
azcloudhsm_util.exe loginHSM -u CU -s cu1 -p user1234 findKey