Quickstart: Vertrouwelijke VM implementeren met ARM-sjabloon
U kunt een Azure Resource Manager-sjabloon (ARM-sjabloon) gebruiken om snel een vertrouwelijke Azure-VM te maken. Vertrouwelijke VM's worden uitgevoerd op beide AMD-processors die worden ondersteund door AMD SEV-SNP en Intel-processors die worden ondersteund door Intel TDX om versleuteling en isolatie van VM-geheugen te bereiken. Zie Overzicht van vertrouwelijke VM's voor meer informatie.
In deze zelfstudie wordt de implementatie van een vertrouwelijke VM behandeld met een aangepaste configuratie.
Vereisten
- Een Azure-abonnement. Gratis proefaccounts hebben geen toegang tot de VM's die in deze zelfstudie worden gebruikt. Een optie is om een abonnement op basis van betalen per gebruik te gebruiken.
- Als u wilt implementeren vanuit de Azure CLI, installeert u PowerShell en installeert u de Azure CLI.
Een vertrouwelijke VM-sjabloon implementeren met Azure CLI
U kunt een vertrouwelijke VM-sjabloon implementeren met optionele vertrouwelijke versleuteling van besturingssysteemschijven via een door het platform beheerde sleutel.
Uw vertrouwelijke VM maken en implementeren met behulp van een ARM-sjabloon via de Azure CLI:
Meld u aan bij uw Azure-account in de Azure CLI.
az login
Stel uw Azure-abonnement in. Vervang door
<subscription-id>
uw abonnements-id. Zorg ervoor dat u een abonnement gebruikt dat voldoet aan de vereisten.az account set --subscription <subscription-id>
Stel de variabelen voor uw vertrouwelijke VM in. Geef de implementatienaam (
$deployName
), de resourcegroep ($resourceGroup
), de vm-naam ($vmName
) en de Azure-regio () op$region
. Vervang de voorbeeldwaarden door uw eigen gegevens.Notitie
Vertrouwelijke VM's zijn niet beschikbaar op alle locaties. Voor momenteel ondersteunde locaties kunt u zien welke VM-producten beschikbaar zijn per Azure-regio.
$deployName="<deployment-name>" $resourceGroup="<resource-group-name>" $vmName= "<confidential-vm-name>" $region="<region-name>"
Als de opgegeven resourcegroep niet bestaat, maakt u een resourcegroep met die naam.
az group create -n $resourceGroup -l $region
Implementeer uw VIRTUELE machine in Azure met behulp van een ARM-sjabloon met een aangepast parameterbestand en sjabloonbestand.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "<json-template-file-path>" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Aangepast parameterbestand definiëren
Wanneer u een vertrouwelijke VM maakt via de Azure-opdrachtregelinterface (Azure CLI), moet u een aangepast parameterbestand definiëren. Een aangepast JSON-parameterbestand maken:
Meld u aan bij uw Azure-account via de Azure CLI.
Maak een JSON-parameterbestand. Bijvoorbeeld:
azuredeploy.parameters.json
.Afhankelijk van de installatiekopie van het besturingssysteem dat u gebruikt, kopieert u het voorbeeldparameterbestand van Windows of het voorbeeld van het Linux-parameterbestand naar het parameterbestand .
Bewerk de JSON-code in het parameterbestand indien nodig. Werk bijvoorbeeld de naam van de installatiekopieën van het besturingssysteem (
osImageName
) of de gebruikersnaam van de beheerder (adminUsername
) bij.Configureer de instelling van uw beveiligingstype (
securityType
). KiesVMGuestStateOnly
voor geen vertrouwelijke versleuteling van besturingssysteemschijven. Of kiesDiskWithVMGuestState
voor vertrouwelijke versleuteling van besturingssysteemschijven met een door het platform beheerde sleutel. Alleen voor Intel TDX-SKU's en linux-installatiekopieën kunnen klanten hetNonPersistedTPM
beveiligingstype kiezen dat moet worden geïmplementeerd met een kortstondige vTPM. Gebruik voor hetNonPersistedTPM
beveiligingstype de minimale 'apiVersion': '2023-09-01' onderMicrosoft.Compute/virtualMachines
in het sjabloonbestand.Sla het parameterbestand op.
Voorbeeld van windows-parameterbestand
Gebruik dit voorbeeld om een aangepast parameterbestand te maken voor een vertrouwelijke windows-VM.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Windows Server 2022 Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"adminPasswordOrKey": {
"value": "<your password>"
}
}
}
Voorbeeld van een Linux-parameterbestand
Gebruik dit voorbeeld om een aangepast parameterbestand te maken voor een op Linux gebaseerde vertrouwelijke VM.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Ubuntu 20.04 LTS Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"authenticationType": {
"value": "sshPublicKey"
},
"adminPasswordOrKey": {
"value": <your SSH public key>
}
}
}
Notitie
Vervang de waarde osImageName dienovereenkomstig.
Een vertrouwelijke VM-sjabloon implementeren met vertrouwelijke versleuteling van besturingssysteemschijven via door de klant beheerde sleutel
Meld u aan bij uw Azure-account via de Azure CLI.
az login
Stel uw Azure-abonnement in. Vervang door
<subscription-id>
uw abonnements-id. Zorg ervoor dat u een abonnement gebruikt dat voldoet aan de vereisten.az account set --subscription <subscription-id>
Vertrouwelijke VM-service-principal
Confidential VM Orchestrator
verlenen aan tenantVoor deze stap moet u een globale beheerder zijn of moet u de rol Beheerder voor gebruikerstoegang hebben. Installeer Microsoft Graph SDK om de onderstaande opdrachten uit te voeren.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
Uw Azure-sleutelkluis instellen. Zie de volgende stap voor het gebruik van een beheerde HSM van Azure Key Vault.
Maak een resourcegroep voor uw sleutelkluis. Uw sleutelkluisexemplaren en uw vertrouwelijke VM moeten zich in dezelfde Azure-regio bevinden.
$resourceGroup = <key vault resource group> $region = <Azure region> az group create --name $resourceGroup --location $region
Maak een sleutelkluisexemplaren met een premium-SKU en selecteer uw voorkeursregio. De standaard-SKU wordt niet ondersteund.
$KeyVault = <name of key vault> az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protection
Zorg ervoor dat u de rol van eigenaar in deze sleutelkluis hebt.
Geef
Confidential VM Orchestrator
machtigingen aanget
enrelease
de sleutelkluis.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault set-policy --name $KeyVault --object-id $cvmAgent.Id --key-permissions get release
(Optioneel) Als u geen Azure-sleutelkluis wilt gebruiken, kunt u in plaats daarvan een door Azure Key Vault beheerde HSM maken.
Volg de quickstart om een met Azure Key Vault beheerde HSM te maken om beheerde HSM van Azure Key Vault in te richten en te activeren.
Schakel beveiliging tegen opschonen in op de Azure Managed HSM. Deze stap is vereist om sleutelrelease in te schakelen.
az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection true
Geef
Confidential VM Orchestrator
machtigingen aan beheerde HSM.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault role assignment create --hsm-name $hsm --assignee $cvmAgent.Id --role "Managed HSM Crypto Service Release User" --scope /keys/$KeyName
Maak een nieuwe sleutel met behulp van Azure Key Vault. Zie de volgende stap voor het gebruik van een door Azure beheerde HSM.
Bereid het beleid voor sleutelrelease voor op uw lokale schijf en download het.
Maak een nieuwe sleutel.
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --vault-name $KeyVault --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --policy "@.\skr-policy.json"
Informatie ophalen over de sleutel die u hebt gemaakt.
$encryptionKeyVaultId = ((az keyvault show -n $KeyVault -g $resourceGroup) | ConvertFrom-Json).id $encryptionKeyURL= ((az keyvault key show --vault-name $KeyVault --name $KeyName) | ConvertFrom-Json).key.kid
Implementeer een SCHIJFversleutelingsset (DES) met behulp van een DES ARM-sjabloon (
deployDES.json
).$desName = <name of DES> $deployName = <name of deployment> $desArmTemplate = <name of DES ARM template file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $desArmTemplate ` -p desName=$desName ` -p encryptionKeyURL=$encryptionKeyURL ` -p encryptionKeyVaultId=$encryptionKeyVaultId ` -p region=$region
Wijs sleuteltoegang toe aan het DES-bestand.
$desIdentity= (az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $KeyVault ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
(Optioneel) Maak een nieuwe sleutel op basis van een door Azure beheerde HSM.
Bereid het beleid voor sleutelrelease voor op uw lokale schijf en download het.
Maak de nieuwe sleutel.
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --hsm-name $hsm --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --policy "@.\skr-policy.json"
Informatie ophalen over de sleutel die u hebt gemaakt.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
Een DES implementeren.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURL
Wijs sleuteltoegang toe aan de DES.
desIdentity=$(az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $hsm ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
Implementeer uw vertrouwelijke VM met de door de klant beheerde sleutel.
Haal de resource-id voor de DES op.
$desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
Implementeer uw vertrouwelijke VM met behulp van een VERTROUWELIJKE VM ARM-sjabloon voor Intel TDX en een implementatieparameterbestand (bijvoorbeeld
azuredeploy.parameters.win2022.json
) met de door de klant beheerde sleutel.$deployName = <name of deployment> $vmName = <name of confidential VM> $cvmArmTemplate = <name of confidential VM ARM template file> $cvmParameterFile = <name of confidential VM parameter file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $cvmArmTemplate ` -p $cvmParameterFile ` -p diskEncryptionSetId=$desID ` -p vmName=$vmName
Maak verbinding met uw vertrouwelijke VM om ervoor te zorgen dat het maken is geslaagd.