Mulai cepat: Menyebarkan VM rahasia dengan templat ARM

Anda dapat menggunakan templat Azure Resource Manager (templat ARM) untuk membuat VM rahasia Azure dengan cepat. VM rahasia berjalan pada prosesor AMD yang didukung oleh prosesor AMD SEV-SNP dan Intel yang didukung oleh Intel TDX untuk mencapai enkripsi dan isolasi memori VM. Untuk informasi selengkapnya, lihat Gambaran Umum VM Rahasia.

Tutorial ini mencakup penyebaran VM rahasia dengan konfigurasi kustom.

Prasyarat

  • Langganan Azure. Akun uji coba gratis tidak memiliki akses ke VM yang digunakan dalam tutorial ini. Salah satu opsinya adalah menggunakan langganan bayar sesuai pemakaian.
  • Jika Anda ingin menyebarkan dari Azure CLI, instal PowerShell dan instal Azure CLI.

Menyebarkan templat VM rahasia dengan Azure CLI

Anda dapat menyebarkan templat VM rahasia yang memiliki enkripsi rahasia disk OS opsional melalui kunci yang dikelola platform.

Untuk membuat dan menyebarkan VM rahasia Anda menggunakan templat ARM melalui Azure CLI:

  1. Masuk ke akun Azure Anda di Azure CLI.

    az login
    
  2. Atur langganan Azure Anda. Ganti <subscription-id> dengan pengidentifikasi langganan Anda. Pastikan untuk menggunakan langganan yang memenuhi prasyarat.

    az account set --subscription <subscription-id>
    
  3. Atur variabel untuk VM rahasia Anda. Berikan nama penyebaran ($deployName), grup sumber daya ($resourceGroup), nama VM ($vmName), dan wilayah Azure ($region). Ganti nilai sampel dengan informasi milik Anda sendiri.

    Catatan

    VM rahasia tidak tersedia di semua lokasi. Untuk lokasi yang saat ini didukung, lihat produk VM mana yang tersedia oleh wilayah Azure.

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

    Jika grup sumber daya yang Anda tentukan tidak ada, buat grup sumber daya dengan nama tersebut.

    az group create -n $resourceGroup -l $region
    
  4. Sebarkan VM Anda ke Azure menggunakan templat ARM dengan file parameter kustom. Untuk penyebaran TDX di sini adalah contoh templat: 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
    

Menentukan file parameter kustom

Saat Anda membuat VM rahasia melalui Azure Command-Line Interface (Azure CLI), Anda perlu menentukan file parameter kustom. Untuk membuat file parameter JSON kustom:

  1. Masuk ke akun Azure Anda melalui Azure CLI.

  2. Buat file parameter JSON. Contohnya,azuredeploy.parameters.json.

  3. Bergantung pada gambar OS yang Anda gunakan, salin contoh file parameter Windows atau contoh file parameter Linux ke dalam file parameter Anda.

  4. Edit kode JSON dalam file parameter sesuai kebutuhan. Misalnya, perbarui nama gambar OS (osImageName) atau nama pengguna administrator (adminUsername).

  5. Konfigurasikan pengaturan jenis keamanan Anda (securityType). Pilih VMGuestStateOnly untuk tidak ada enkripsi rahasia disk OS. Atau, pilih DiskWithVMGuestState untuk enkripsi rahasia disk OS dengan kunci yang dikelola platform. Hanya untuk SKU Intel TDX dan gambar berbasis Linux, pelanggan dapat memilih NonPersistedTPM jenis keamanan untuk disebarkan dengan vTPM ephemeral. NonPersistedTPM Untuk jenis keamanan, gunakan minimum "apiVersion": "2023-09-01" di bawah Microsoft.Compute/virtualMachines dalam file templat.

  6. Simpan file parameter Anda.

Contoh file parameter Windows

Gunakan contoh ini untuk membuat file parameter kustom untuk VM rahasia berbasis 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>"
    }
  }
}

Contoh file parameter Linux

Gunakan contoh ini untuk membuat file parameter kustom untuk VM rahasia berbasis 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>
    }
  }
}

Catatan

Ganti nilai osImageName yang sesuai.

Menyebarkan templat VM rahasia dengan enkripsi rahasia disk OS melalui kunci yang dikelola pelanggan

  1. Masuk ke akun Azure Anda melalui Azure CLI.

    az login
    
  2. Atur langganan Azure Anda. Ganti <subscription-id> dengan pengidentifikasi langganan Anda. Pastikan untuk menggunakan langganan yang memenuhi prasyarat.

    az account set --subscription <subscription-id>
    
  3. Memberikan Perwakilan Confidential VM Orchestrator Layanan VM rahasia kepada penyewa

    Untuk langkah ini, Anda harus menjadi Admin Global atau Anda harus memiliki peran RBAC Administrator Akses Pengguna. Instal Microsoft Graph SDK untuk menjalankan perintah di bawah ini.

    Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
    New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
    
  4. Siapkan brankas kunci Azure Anda. Untuk cara menggunakan Azure Key Vault Managed HSM sebagai gantinya, lihat langkah berikutnya.

    1. Buat grup sumber daya untuk brankas kunci Anda. Instans brankas kunci dan VM rahasia Anda harus berada di wilayah Azure yang sama.

      $resourceGroup = <key vault resource group>
      $region = <Azure region>
      az group create --name $resourceGroup --location $region
      
    2. Buat instans brankas kunci dengan SKU premium dan pilih wilayah pilihan Anda. SKU standar tidak didukung.

      $KeyVault = <name of key vault>
      az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protection
      
    3. Pastikan Anda memiliki peran pemilik dalam brankas kunci ini.

    4. Berikan Confidential VM Orchestrator izin ke get dan release brankas kunci.

      $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. (Opsional) Jika Anda tidak ingin menggunakan brankas kunci Azure, Anda dapat membuat Azure Key Vault Managed HSM sebagai gantinya.

    1. Ikuti mulai cepat untuk membuat Azure Key Vault Managed HSM untuk memprovisikan dan mengaktifkan Azure Key Vault Managed HSM.

    2. Aktifkan perlindungan penghapusan menyeluruh pada Azure Managed HSM. Langkah ini diperlukan untuk mengaktifkan rilis kunci.

      az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection true
      
    3. Berikan Confidential VM Orchestrator izin ke HSM terkelola.

      $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. Buat kunci baru menggunakan Azure Key Vault. Untuk cara menggunakan Azure Managed HSM sebagai gantinya, lihat langkah berikutnya.

    1. Siapkan dan unduh kebijakan rilis kunci ke disk lokal Anda.

    2. Buat kunci baru.

      $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. Dapatkan informasi tentang kunci yang Anda buat.

      $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. Sebarkan Set Enkripsi Disk (DES) menggunakan templat DES ARM (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. Tetapkan akses kunci ke file 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. (Opsional) Buat kunci baru dari Azure Managed HSM.

    1. Siapkan dan unduh kebijakan rilis kunci ke disk lokal Anda.

    2. Buat kunci baru.

      $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. Dapatkan informasi tentang kunci yang Anda buat.

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

      $desName = <name of DES>
      az disk-encryption-set create -n $desName `
       -g $resourceGroup `
       --key-url $encryptionKeyURL
      
    5. Tetapkan akses kunci ke 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. Sebarkan VM rahasia Anda dengan kunci yang dikelola pelanggan.

    1. Dapatkan ID sumber daya untuk DES.

      $desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
      
    2. Sebarkan VM rahasia Anda menggunakan templat ARM VM rahasia untuk AMD SEV-SNP atau Intel TDX dan file parameter penyebaran (misalnya, azuredeploy.parameters.win2022.json) dengan kunci yang dikelola pelanggan.

      $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. Koneksi ke VM rahasia Anda untuk memastikan pembuatan berhasil.

Langkah berikutnya