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

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:

  1. Logga in på ditt Azure-konto i Azure CLI.

    az login
    
  2. 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>
    
  3. 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
    
  4. 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:

  1. Logga in på ditt Azure-konto via Azure CLI.

  2. Skapa en JSON-parameterfil. Exempel: azuredeploy.parameters.json

  3. Beroende på vilken OS-avbildning du använder kopierar du antingen Windows-exempelparameterfilen eller Linux-exempelparameterfilen till parameterfilen.

  4. Redigera JSON-koden i parameterfilen efter behov. Du kan till exempel uppdatera os-avbildningsnamnet (osImageName) eller administratörens användarnamn (adminUsername).

  5. Konfigurera inställningen för säkerhetstyp (securityType). Välj VMGuestStateOnly om det inte finns någon konfidentiell kryptering för OS-diskar. Du kan också välja DiskWithVMGuestState 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 den NonPersistedTPM säkerhetstyp som ska distribueras med en tillfällig vTPM. NonPersistedTPM För säkerhetstypen använder du den minsta "apiVersion": "2023-09-01" under Microsoft.Compute/virtualMachines i mallfilen.

  6. 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

  1. Logga in på ditt Azure-konto via Azure CLI.

    az login
    
  2. 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>
    
  3. Bevilja konfidentiellt huvudnamn Confidential VM Orchestrator för vm-tjänsten till klientorganisationen

    Fö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"
    
  4. Konfigurera ditt Azure-nyckelvalv. Mer information om hur du använder en Hanterad HSM för Azure Key Vault finns i nästa steg.

    1. 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
      
    2. 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
      
    3. Kontrollera att du har en ägarroll i det här nyckelvalvet.

    4. Ge Confidential VM Orchestrator behörigheter till get och release 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
      
  5. (Valfritt) Om du inte vill använda ett Azure-nyckelvalv kan du skapa en Hanterad HSM för Azure Key Vault i stället.

    1. Följ snabbstarten för att skapa en Azure Key Vault Managed HSM för att etablera och aktivera Azure Key Vault Managed HSM.

    2. 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
      
    3. 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
      
  6. 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.

    1. Förbered och ladda ned principen för nyckelutgivning till den lokala disken.

    2. 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"
      
    3. 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
      
    4. 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
      
    5. 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
      
  7. (Valfritt) Skapa en ny nyckel från en Azure Managed HSM.

    1. Förbered och ladda ned principen för nyckelutgivning till den lokala disken.

    2. 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"
      
    3. Hämta information om nyckeln som du skapade.

      $encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
      
    4. Distribuera en DES.

      $desName = <name of DES>
      az disk-encryption-set create -n $desName `
       -g $resourceGroup `
       --key-url $encryptionKeyURL
      
    5. 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
      
  8. Distribuera din konfidentiella virtuella dator med den kundhanterade nyckeln.

    1. Hämta resurs-ID:t för DES.

      $desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
      
    2. 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
      
  9. Anslut till den konfidentiella virtuella datorn för att se till att skapandet lyckades.

Nästa steg