Snabbstart: Distribuera konfidentiell virtuell dator med ARM-mall
Du kan använda en Azure Resource Manager-mall (ARM-mall) för att snabbt skapa en konfidentiell virtuell Azure-dator. Konfidentiella virtuella datorer körs på både AMD-processorer som backas upp av AMD SEV-SNP- och Intel-processorer som backas upp av Intel TDX för att uppnå vm-minneskryptering och isolering. Mer information finns i Översikt över konfidentiell virtuell dator.
I den här självstudien beskrivs distribution av en konfidentiell virtuell dator med en anpassad konfiguration.
Förutsättningar
- En Azure-prenumeration. Kostnadsfria utvärderingskonton har inte åtkomst till de virtuella datorer som används i den här självstudien. Ett alternativ är att använda en betala per användning-prenumeration.
- Om du vill distribuera från Azure CLI installerar du PowerShell och installerar Azure CLI.
Distribuera en mall för konfidentiell virtuell dator med Azure CLI
Du kan distribuera en mall för konfidentiell virtuell dator som har valfri kryptering av os-disken konfidentiellt via en plattformshanterad nyckel.
Så här skapar och distribuerar du din konfidentiella virtuella dator med hjälp av en ARM-mall via Azure CLI:
Logga in på ditt Azure-konto i Azure CLI.
az login
Ange din Azure-prenumeration. Ersätt
<subscription-id>
med din prenumerationsidentifierare. Se till att använda en prenumeration som uppfyller kraven.az account set --subscription <subscription-id>
Ange variablerna för den konfidentiella virtuella datorn. Ange distributionsnamnet (
$deployName
), resursgruppen ($resourceGroup
), namnet på den virtuella datorn ($vmName
) och Azure-regionen ($region
). Ersätt exempelvärdena med din egen information.Kommentar
Konfidentiella virtuella datorer är inte tillgängliga på alla platser. För platser som stöds för närvarande, se vilka VM-produkter som är tillgängliga per Azure-region.
$deployName="<deployment-name>" $resourceGroup="<resource-group-name>" $vmName= "<confidential-vm-name>" $region="<region-name>"
Om den angivna resursgruppen inte finns skapar du en resursgrupp med det namnet.
az group create -n $resourceGroup -l $region
Distribuera den virtuella datorn till Azure med hjälp av en ARM-mall med en anpassad parameterfil och mallfil.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "<json-template-file-path>" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Definiera anpassad parameterfil
När du skapar en konfidentiell virtuell dator via Azures kommandoradsgränssnitt (Azure CLI) måste du definiera en anpassad parameterfil. Så här skapar du en anpassad JSON-parameterfil:
Logga in på ditt Azure-konto via Azure CLI.
Skapa en JSON-parameterfil. Exempel:
azuredeploy.parameters.json
Beroende på vilken OS-avbildning du använder kopierar du antingen Windows-exempelparameterfilen eller Linux-exempelparameterfilen till parameterfilen.
Redigera JSON-koden i parameterfilen efter behov. Du kan till exempel uppdatera os-avbildningsnamnet (
osImageName
) eller administratörens användarnamn (adminUsername
).Konfigurera inställningen för säkerhetstyp (
securityType
). VäljVMGuestStateOnly
om det inte finns någon konfidentiell kryptering för OS-diskar. Du kan också väljaDiskWithVMGuestState
konfidentiell kryptering för OS-diskar med en plattformshanterad nyckel. Endast för Intel TDX-SKU:er och Linux-baserade avbildningar kan kunderna välja denNonPersistedTPM
säkerhetstyp som ska distribueras med en tillfällig vTPM.NonPersistedTPM
För säkerhetstypen använder du den minsta "apiVersion": "2023-09-01" underMicrosoft.Compute/virtualMachines
i mallfilen.Spara parameterfilen.
Exempel på Windows-parameterfil
Använd det här exemplet om du vill skapa en anpassad parameterfil för en Windows-baserad konfidentiell virtuell dator.
{
"$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>"
}
}
}
Exempel på Linux-parameterfil
Använd det här exemplet om du vill skapa en anpassad parameterfil för en Linux-baserad konfidentiell virtuell dator.
{
"$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>
}
}
}
Kommentar
Ersätt osImageName-värdet i enlighet med detta.
Distribuera en konfidentiell mall för virtuell dator med konfidentiell kryptering av os-diskar via kundhanterad nyckel
Logga in på ditt Azure-konto via Azure CLI.
az login
Ange din Azure-prenumeration. Ersätt
<subscription-id>
med din prenumerationsidentifierare. Se till att använda en prenumeration som uppfyller kraven.az account set --subscription <subscription-id>
Bevilja konfidentiellt huvudnamn
Confidential VM Orchestrator
för vm-tjänsten till klientorganisationenFör det här steget måste du vara global administratör eller ha rollen Administratör för användaråtkomstadministratör. Installera Microsoft Graph SDK för att köra kommandona nedan.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
Konfigurera ditt Azure-nyckelvalv. Mer information om hur du använder en Hanterad HSM för Azure Key Vault finns i nästa steg.
Skapa en resursgrupp för ditt nyckelvalv. Din key vault-instans och din konfidentiella virtuella dator måste finnas i samma Azure-region.
$resourceGroup = <key vault resource group> $region = <Azure region> az group create --name $resourceGroup --location $region
Skapa en key vault-instans med en Premium SKU och välj önskad region. Standard-SKU:n stöds inte.
$KeyVault = <name of key vault> az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protection
Kontrollera att du har en ägarroll i det här nyckelvalvet.
Ge
Confidential VM Orchestrator
behörigheter tillget
ochrelease
nyckelvalvet.$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
(Valfritt) Om du inte vill använda ett Azure-nyckelvalv kan du skapa en Hanterad HSM för Azure Key Vault i stället.
Följ snabbstarten för att skapa en Azure Key Vault Managed HSM för att etablera och aktivera Azure Key Vault Managed HSM.
Aktivera rensningsskydd på Azure Managed HSM. Det här steget krävs för att aktivera nyckelversion.
az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection true
Ge
Confidential VM Orchestrator
behörigheter till hanterad 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
Skapa en ny nyckel med Hjälp av Azure Key Vault. Mer information om hur du använder en Azure Managed HSM finns i nästa steg.
Förbered och ladda ned principen för nyckelutgivning till den lokala disken.
Skapa en ny nyckel.
$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"
Hämta information om nyckeln som du skapade.
$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
Distribuera en diskkrypteringsuppsättning (DES) med hjälp av en DES ARM-mall (
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
Tilldela nyckelåtkomst till DES-filen.
$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
(Valfritt) Skapa en ny nyckel från en Azure Managed HSM.
Förbered och ladda ned principen för nyckelutgivning till den lokala disken.
Skapa den nya nyckeln.
$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"
Hämta information om nyckeln som du skapade.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
Distribuera en DES.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURL
Tilldela nyckelåtkomst till 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
Distribuera din konfidentiella virtuella dator med den kundhanterade nyckeln.
Hämta resurs-ID:t för DES.
$desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
Distribuera den konfidentiella virtuella datorn med hjälp av en konfidentiell ARM-mall för den virtuella datorn för Intel TDX och en distributionsparameterfil (till exempel
azuredeploy.parameters.win2022.json
) med den kundhanterade nyckeln.$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
Anslut till den konfidentiella virtuella datorn för att se till att skapandet lyckades.