Поделиться через


Руководство по выпуску безопасного ключа в конфиденциальных виртуальных машинах

В приведенной ниже статье описывается, как реализовать безопасный выпуск ключей из Azure Key Vault, когда приложения работают с конфиденциальной виртуальной машиной на основе AMD SEV-SNP. Дополнительные сведения о выпуске безопасного ключа и конфиденциальных вычислениях Azure см. здесь.

Для SKR требуется, чтобы приложение, выполняющее SKR, проходило процедуру удаленной аттестации гостя с использованием Microsoft Azure Attestation (MAA), как описано здесь.

Общий поток и архитектура

Чтобы разрешить Azure Key Vault освободить ключ для подтвержденной конфиденциальной виртуальной машины, необходимо выполнить определенные действия.

  1. Назначьте управляемое удостоверение для конфиденциальной виртуальной машины. Управляемое удостоверение, назначаемое системой, или управляемое удостоверение, назначаемое пользователем, поддерживаются.
  2. Задайте политику доступа для Key Vault, чтобы предоставить управляемому удостоверению разрешение на использование ключа «release». Политика позволяет конфиденциальной виртуальной машине получить доступ к Key Vault и выполнить операцию выпуска. При использовании Key Vault Managed HSM, назначьте членство в роли "Managed HSM Crypto Service Release User".
  3. Создайте ключ Key Vault, помеченный как экспортируемый и имеющий связанную политику выпуска. Политика выпуска ключа связывает ключ с подтвержденной конфиденциальной виртуальной машиной и что ключ можно использовать только для требуемой цели.
  4. Чтобы выполнить выпуск, отправьте HTTP-запрос в Key Vault из конфиденциальной виртуальной машины. HTTP-запрос должен содержать отчет о доверенной платформе конфиденциальных виртуальных машин в тексте запроса. Отчет о проверенной платформе используется для проверки надежности состояния платформы с поддержкой доверенной среды выполнения, например конфиденциальной виртуальной машины. Службу Microsoft Azure Аттестация можно использовать, чтобы создать отчет о подтвержденной платформе и включить его в запрос.

Схема упомянутых выше операций, которые мы будем выполнять.

Развертывание службы Azure Key Vault

Настройте AKV Premium или AKV mHSM с экспортируемым ключом. Следуйте подробным инструкциям по настройке экспортируемых ключей SKR

Бицепс

@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

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

Развертывание конфиденциальной виртуальной машины

Следуйте инструкциям по быстрому запуску, как "развернуть конфиденциальную виртуальную машину с помощью шаблона ARM"

Включить назначаемое системой управляемое удостоверение

Управляемые удостоверения для ресурсов Azure предоставляют службам Azure автоматически управляемую идентификацию в Microsoft Entra ID. Это удостоверение можно использовать для проверки подлинности в любой службе, которая поддерживает аутентификацию Microsoft Entra, без использования учетных данных в коде.

Чтобы включить системное управление удостоверением на CVM, вашей учётной записи требуется назначение роли участника виртуальной машины. Другие назначения ролей каталога Microsoft Entra не требуются.

  1. После входа в Azure локально или через портал Azure используйте учетную запись, связанную с подпиской Azure, содержащей виртуальную машину.

  2. Чтобы включить системно назначаемое управляемое удостоверение, загрузите шаблон в редактор, найдите Microsoft.Compute/virtualMachines ресурс и добавьте "identity" свойство на том же уровне, что и свойство name: vmName. Используйте следующий синтаксис:

       identity:{
         type: 'SystemAssigned'
       }
    
  3. resource Добавьте сведения в шаблон.

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