Gizli VM'lerle Güvenli Anahtar Sürümü Nasıl Yapılır Kılavuzu

Aşağıdaki makalede, uygulamalarınız AMD SEV-SNP tabanlı gizli bir sanal makineyle çalışırken Azure Key Vault'tan Güvenli Anahtar Yayını gerçekleştirme işlemi açıklanmaktadır. Güvenli Anahtar Sürümü ve Azure Gizli Bilgi İşlem hakkında daha fazla bilgi edinmek için buraya gidin..

SKR, SKR gerçekleştiren bir uygulamanın burada açıklandığı gibi Microsoft Azure Doğrulama (MAA) kullanarak uzak bir konuk kanıtlama akışından geçmesini gerektirir.

Genel akış ve mimari

Azure Key Vault'un bir anahtarı doğrulanmış bir gizli sanal makineye serbest bırakmasına izin vermek için izlenmesi gereken bazı adımlar vardır:

  1. Gizli sanal makineye yönetilen kimlik atayın. Sistem tarafından atanan yönetilen kimlik veya kullanıcı tarafından atanan yönetilen kimlik desteklenir.
  2. Yönetilen kimliğe "yayın" anahtar izni vermek için bir Key Vault erişim ilkesi ayarlayın. İlke, gizli sanal makinenin Key Vault'a erişmesine ve yayın işlemini gerçekleştirmesine olanak tanır. Key Vault Yönetilen HSM kullanıyorsanız " Yönetilen HSM Şifreleme Hizmeti Yayın Kullanıcısı" rol üyeliğini atayın.
  3. Dışarı aktarılabilir olarak işaretlenmiş ve ilişkili bir sürüm ilkesi olan bir Key Vault anahtarı oluşturun. Anahtar yayın ilkesi, anahtarı doğrulanmış bir gizli sanal makineyle ilişkilendirir ve anahtarın yalnızca istenen amaç için kullanılabileceğini gösterir.
  4. Yayını gerçekleştirmek için gizli sanal makineden Key Vault'a bir HTTP isteği gönderin. HTTP isteği, istek gövdesinde Gizli VM'ler tarafından onaylanmış platform raporunu içermelidir. Onaylanan platform raporu, Gizli VM gibi Güvenilen Yürütme Ortamı özellikli platformun durumunun güvenilirliğini doğrulamak için kullanılır. Microsoft Azure Doğrulama hizmeti, onaylanan platform raporunu oluşturmak ve isteğe eklemek için kullanılabilir.

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

Azure Key Vault dağıtma

Dışarı aktarılabilir bir anahtarla AKV Premium veya AKV mHSM'yi ayarlayın. Buradan SKR dışarı aktarılabilir anahtarları ayarlama ile ilgili ayrıntılı yönergeleri izleyin

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'
    }
  }
}

ARM şablonu

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

Gizli sanal makine dağıtma

"ARM şablonuyla gizli VM dağıtma" hakkında hızlı başlangıç yönergelerini izleyin

Sistem tarafından atanan yönetilen kimliği etkinleştirme

Azure kaynakları için yönetilen kimlikler , Azure hizmetlerine Microsoft Entra Id'de otomatik olarak yönetilen bir kimlik sağlar. Bu kimliği kullanarak, Microsoft Entra kimlik doğrulamasını destekleyen tüm hizmetlerde kodunuzda kimlik bilgileri bulunmasına gerek kalmadan kimlik doğrulaması yapabilirsiniz.

CVM'de sistem tarafından atanan yönetilen kimliği etkinleştirmek için hesabınızın Sanal Makine Katılımcısı rol ataması gerekir. Başka Microsoft Entra dizin rolü ataması gerekmez.

  1. Azure'da yerel olarak veya Azure portalı aracılığıyla oturum açtığınızda, VM'yi içeren Azure aboneliğiyle ilişkili bir hesap kullanın.

  2. Sistem tarafından atanan yönetilen kimliği etkinleştirmek için şablonu bir düzenleyiciye yükleyin, ilgilendiğiniz Microsoft.Compute/virtualMachines kaynağı bulun ve özelliği özelliğiyle name: vmName aynı düzeyde ekleyin"identity". Aşağıdaki sözdizimini kullanın:

       identity:{
         type: 'SystemAssigned'
       }
    
  3. resource Ayrıntıları şablona ekleyin.

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