Szybki start: wdrażanie poufnej maszyny wirtualnej przy użyciu szablonu usługi ARM

Aby szybko utworzyć poufnej maszyny wirtualnej platformy Azure, możesz użyć szablonu usługi Azure Resource Manager (szablonu usługi ARM). Poufne maszyny wirtualne działają na obu procesorach AMD wspieranych przez procesory AMD SEV-SNP i Intel wspierane przez intel TDX w celu uzyskania szyfrowania i izolacji pamięci maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Poufne omówienie maszyny wirtualnej.

W tym samouczku omówiono wdrażanie poufnej maszyny wirtualnej z konfiguracją niestandardową.

Wymagania wstępne

Wdrażanie poufnego szablonu maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure

Można wdrożyć poufny szablon maszyny wirtualnej z opcjonalnym szyfrowaniem poufnym dysku systemu operacyjnego za pomocą klucza zarządzanego przez platformę.

Aby utworzyć i wdrożyć poufne maszyny wirtualne przy użyciu szablonu usługi ARM za pomocą interfejsu wiersza polecenia platformy Azure:

  1. Zaloguj się do konta platformy Azure w interfejsie wiersza polecenia platformy Azure.

    az login
    
  2. Ustaw subskrypcję platformy Azure. Zastąp <subscription-id> ciąg identyfikatorem subskrypcji. Upewnij się, że używasz subskrypcji spełniającej wymagania wstępne.

    az account set --subscription <subscription-id>
    
  3. Ustaw zmienne dla poufnej maszyny wirtualnej. Podaj nazwę wdrożenia (), grupę zasobów ($deployName$resourceGroup), nazwę maszyny wirtualnej ($vmName) i region platformy Azure ($region). Zastąp przykładowe wartości własnymi informacjami.

    Uwaga

    Poufne maszyny wirtualne nie są dostępne we wszystkich lokalizacjach. W przypadku aktualnie obsługiwanych lokalizacji zobacz , które produkty maszyn wirtualnych są dostępne w regionie świadczenia usługi Azure.

    $deployName="<deployment-name>"
    $resourceGroup="<resource-group-name>"
    $vmName= "<confidential-vm-name>"
    $region="<region-name>"
    

    Jeśli określona grupa zasobów nie istnieje, utwórz grupę zasobów o tej nazwie.

    az group create -n $resourceGroup -l $region
    
  4. Wdróż maszynę wirtualną na platformie Azure przy użyciu szablonu usługi ARM z niestandardowym plikiem parametrów. W przypadku wdrożeń TDX oto przykładowy szablon: https://aka.ms/TDXtemplate.

    az deployment group create `
     -g $resourceGroup `
     -n $deployName `
     -u "https://aka.ms/CVMTemplate" `
     -p "<json-parameter-file-path>" `
     -p vmLocation=$region `
        vmName=$vmName
    

Definiowanie niestandardowego pliku parametrów

Podczas tworzenia poufnej maszyny wirtualnej za pomocą interfejsu wiersza polecenia platformy Azure (interfejs wiersza polecenia platformy Azure) należy zdefiniować niestandardowy plik parametrów. Aby utworzyć niestandardowy plik parametrów JSON:

  1. Zaloguj się do konta platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure.

  2. Utwórz plik parametrów JSON. Na przykład azuredeploy.parameters.json.

  3. W zależności od używanego obrazu systemu operacyjnego skopiuj przykładowy plik parametrów systemu Windows lub przykładowy plik parametrów systemu Linux do pliku parametrów.

  4. Edytuj kod JSON w pliku parametrów zgodnie z potrzebami. Na przykład zaktualizuj nazwę obrazu systemu operacyjnego (osImageName) lub nazwę użytkownika administratora (adminUsername).

  5. Skonfiguruj ustawienie typu zabezpieczeń (securityType). Wybierz VMGuestStateOnly opcję braku poufnego szyfrowania dysku systemu operacyjnego. Możesz też wybrać DiskWithVMGuestState opcję poufnego szyfrowania dysku systemu operacyjnego przy użyciu klucza zarządzanego przez platformę. W przypadku tylko jednostek SKU Intel TDX i obrazów opartych na systemie Linux klienci mogą wybrać NonPersistedTPM typ zabezpieczeń do wdrożenia przy użyciu efemerycznej maszyny wirtualnej vTPM. NonPersistedTPM W przypadku typu zabezpieczeń użyj minimalnej wartości "apiVersion": "2023-09-01" w Microsoft.Compute/virtualMachines pliku szablonu.

  6. Zapisz plik parametrów.

Przykładowy plik parametrów systemu Windows

Użyj tego przykładu, aby utworzyć niestandardowy plik parametrów dla poufnej maszyny wirtualnej z systemem Windows.

{
  "$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>"
    }
  }
}

Przykładowy plik parametrów systemu Linux

Użyj tego przykładu, aby utworzyć niestandardowy plik parametrów dla poufnej maszyny wirtualnej opartej na systemie Linux.

{
  "$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>
    }
  }
}

Uwaga

Zastąp odpowiednio wartość osImageName.

Wdrażanie poufnego szablonu maszyny wirtualnej przy użyciu poufnego szyfrowania dysku systemu operacyjnego za pomocą klucza zarządzanego przez klienta

  1. Zaloguj się do konta platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure.

    az login
    
  2. Ustaw subskrypcję platformy Azure. Zastąp <subscription-id> ciąg identyfikatorem subskrypcji. Upewnij się, że używasz subskrypcji spełniającej wymagania wstępne.

    az account set --subscription <subscription-id>
    
  3. Udzielanie poufnej jednostki Confidential VM Orchestrator usługi maszyny wirtualnej dzierżawie

    W tym kroku musisz być Administracja globalnym lub musisz mieć rolę RBAC Administracja istratora dostępu użytkowników. Zainstaluj zestaw Microsoft Graph SDK , aby wykonać poniższe polecenia.

    Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
    New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
    
  4. Konfigurowanie magazynu kluczy platformy Azure. Aby zamiast tego użyć zarządzanego modułu HSM usługi Azure Key Vault, zobacz następny krok.

    1. Utwórz grupę zasobów dla magazynu kluczy. Wystąpienie magazynu kluczy i poufne maszyny wirtualnej muszą znajdować się w tym samym regionie świadczenia usługi Azure.

      $resourceGroup = <key vault resource group>
      $region = <Azure region>
      az group create --name $resourceGroup --location $region
      
    2. Utwórz wystąpienie magazynu kluczy przy użyciu jednostki SKU w warstwie Premium i wybierz preferowany region. Standardowa jednostka SKU nie jest obsługiwana.

      $KeyVault = <name of key vault>
      az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protection
      
    3. Upewnij się, że masz rolę właściciela w tym magazynie kluczy.

    4. Nadaj Confidential VM Orchestrator uprawnienia i getrelease magazynowi kluczy.

      $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. (Opcjonalnie) Jeśli nie chcesz używać magazynu kluczy platformy Azure, możesz zamiast tego utworzyć zarządzany moduł HSM usługi Azure Key Vault.

    1. Postępuj zgodnie z przewodnikiem Szybki start, aby utworzyć zarządzany moduł HSM usługi Azure Key Vault w celu aprowizowania i aktywowania zarządzanego modułu HSM usługi Azure Key Vault.

    2. Włącz ochronę przed przeczyszczaniem w zarządzanym module HSM platformy Azure. Ten krok jest wymagany do włączenia wydania klucza.

      az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection true
      
    3. Nadaj Confidential VM Orchestrator uprawnienia zarządzanemu modułowi 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. Utwórz nowy klucz przy użyciu usługi Azure Key Vault. Aby zamiast tego użyć zarządzanego modułu HSM platformy Azure, zobacz następny krok.

    1. Przygotuj i pobierz zasady wydania klucza na dysk lokalny.

    2. Utwórz nowy klucz.

      $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. Uzyskaj informacje o utworzonym kluczu.

      $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. Wdróż zestaw szyfrowania dysków (DES) przy użyciu szablonu USŁUGI ARM DES (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. Przypisz dostęp do klucza do pliku DES.

      $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. (Opcjonalnie) Utwórz nowy klucz na podstawie zarządzanego modułu HSM platformy Azure.

    1. Przygotuj i pobierz zasady wydania klucza na dysk lokalny.

    2. Utwórz nowy klucz.

      $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. Uzyskaj informacje o utworzonym kluczu.

      $encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
      
    4. Wdrażanie des.

      $desName = <name of DES>
      az disk-encryption-set create -n $desName `
       -g $resourceGroup `
       --key-url $encryptionKeyURL
      
    5. Przypisz dostęp do klucza do 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. Wdróż poufne maszyny wirtualnej przy użyciu klucza zarządzanego przez klienta.

    1. Pobierz identyfikator zasobu des.

      $desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
      
    2. Wdróż poufne maszyny wirtualnej przy użyciu poufnego szablonu usługi ARM maszyny wirtualnej dla oprogramowania AMD SEV-SNP lub Intel TDX oraz pliku parametrów wdrożenia (na przykład azuredeploy.parameters.win2022.json) przy użyciu klucza zarządzanego przez klienta.

      $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. Połączenie do poufnej maszyny wirtualnej, aby upewnić się, że tworzenie zakończyło się pomyślnie.

Następne kroki