Panduan Cara Rilis Kunci Aman dengan VM Rahasia

Artikel di bawah ini menjelaskan cara melakukan Rilis Kunci Aman dari Azure Key Vault saat aplikasi Anda berjalan dengan komputer virtual rahasia berbasis AMD SEV-SNP. Untuk mempelajari selengkapnya tentang Rilis Kunci Aman dan Komputasi Rahasia Azure, buka di sini..

SKR mengharuskan aplikasi yang melakukan SKR harus melalui alur pengesahan tamu jarak jauh menggunakan Microsoft Azure Attestation (MAA) seperti yang dijelaskan di sini.

Alur dan arsitektur keseluruhan

Untuk mengizinkan Azure Key Vault merilis kunci ke komputer virtual rahasia yang dibuktikan, ada langkah-langkah tertentu yang perlu diikuti:

  1. Tetapkan identitas terkelola ke komputer virtual rahasia. Identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna didukung.
  2. Atur kebijakan akses Key Vault untuk memberikan identitas terkelola izin kunci "rilis". Kebijakan memungkinkan komputer virtual rahasia untuk mengakses Key Vault dan melakukan operasi rilis. Jika menggunakan HSM Terkelola Key Vault, tetapkan keanggotaan peran "Pengguna Rilis Layanan Kripto HSM Terkelola".
  3. Buat kunci Key Vault yang ditandai sebagai dapat diekspor dan memiliki kebijakan rilis terkait. Kebijakan rilis kunci mengaitkan kunci ke komputer virtual rahasia yang dibuktikan dan bahwa kunci hanya dapat digunakan untuk tujuan yang diinginkan.
  4. Untuk melakukan rilis, kirim permintaan HTTP ke Key Vault dari komputer virtual rahasia. Permintaan HTTP harus menyertakan laporan platform yang diujukkan VM Rahasia dalam isi permintaan. Laporan platform yang dibuktikan digunakan untuk memverifikasi kepercayaan status platform yang mendukung Lingkungan Eksekusi Tepercaya, seperti VM Rahasia. Layanan Microsoft Azure Attestation dapat digunakan untuk membuat laporan platform yang dibuktikan dan menyertakannya dalam permintaan.

Diagram of the aforementioned operations, which we'll be performing.

Menyebarkan Azure Key Vault

Siapkan AKV Premium atau AKV mHSM dengan kunci yang dapat diekspor. Ikuti instruksi terperinci dari sini menyiapkan kunci yang dapat diekspor SKR

Bicep

@description('Required. Specifies the Azure location where the key vault should be created.')
param location string = resourceGroup().location

@description('Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.')
param tenantId string = subscription().tenantId

resource keyVault 'Microsoft.KeyVault/vaults@2021-11-01-preview' = {
  name: 'mykeyvault'
  location: location
  properties: {
    tenantId: tenantId
    sku: {
      name: 'premium'
      family: 'A'
    }
  }
}

Templat ARM

    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-11-01-preview",
      "name": "mykeyvault",
      "location": "[parameters('location')]",
      "properties": {
        "tenantId": "[parameters('tenantId')]",
        "sku": {
          "name": "premium",
          "family": "A"
        }
      }
    }

Menyebarkan komputer virtual rahasia

Ikuti instruksi mulai cepat tentang cara "Menyebarkan VM rahasia dengan templat ARM"

Aktifkan identitas terkelola yang ditetapkan sistem

Identitas terkelola untuk sumber daya Azure menyediakan layanan Azure dengan identitas yang dikelola secara otomatis di ID Microsoft Entra. Anda dapat menggunakan identitas ini untuk mengautentikasi tiap layanan yang mendukung autentikasi Microsoft Entra, tanpa memiliki kredensial dalam kode Anda.

Untuk mengaktifkan identitas terkelola yang ditetapkan sistem pada CVM, akun Anda memerlukan penetapan peran Kontributor Komputer Virtual. Tidak diperlukan penetapan peran direktori Microsoft Entra lainnya.

  1. Baik Anda masuk ke Azure secara lokal maupun melalui portal Microsoft Azure, gunakan akun yang terkait dengan langganan Azure yang berisi komputer virtual.

  2. Untuk mengaktifkan identitas terkelola yang ditetapkan sistem, muat templat ke editor, temukan Microsoft.Compute/virtualMachines sumber daya yang menarik dan tambahkan "identity" properti pada tingkat yang sama dengan name: vmName properti . Gunakan sintaks berikut:

       identity:{
         type: 'SystemAssigned'
       }
    
  3. resource Tambahkan detail ke templat.

     resource confidentialVm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
       name: vmName
       location: location
       identity:{
         type: 'SystemAssigned'
       }
       // other resource provider properties
     }