Bezpieczne wydanie klucza za pomocą poufnych maszyn wirtualnych — przewodnik

W poniższym artykule opisano sposób wykonywania bezpiecznego wydania klucza z usługi Azure Key Vault, gdy aplikacje są uruchomione z poufnej maszyny wirtualnej opartej na protokole AMD SEV-SNP. Aby dowiedzieć się więcej na temat bezpiecznego wydania klucza i poufnego przetwarzania na platformie Azure, przejdź tutaj.

Skr wymaga, aby aplikacja wykonująca skr przechodziła przez zdalny przepływ zaświadczania gościa przy użyciu zaświadczania Microsoft Azure (MAA) zgodnie z opisem w tym miejscu.

Ogólny przepływ i architektura

Aby zezwolić usłudze Azure Key Vault na wydanie klucza do chronionej poufnej maszyny wirtualnej, należy wykonać pewne kroki:

  1. Przypisz tożsamość zarządzaną do poufnej maszyny wirtualnej. Obsługiwana jest tożsamość zarządzana przypisana przez system lub tożsamość zarządzana przypisana przez użytkownika.
  2. Ustaw zasady dostępu usługi Key Vault, aby udzielić tożsamości zarządzanej uprawnienia klucza "release". Zasady umożliwiają poufnej maszynie wirtualnej uzyskiwanie dostępu do usługi Key Vault i wykonywanie operacji wydania. W przypadku korzystania z zarządzanego modułu HSM usługi Key Vault przypisz członkostwo w roli "Zarządzanego użytkownika wersji usługi kryptograficznej modułu HSM".
  3. Utwórz klucz usługi Key Vault, który jest oznaczony jako możliwy do wyeksportowania i ma skojarzone zasady wydania. Zasady wydania klucza kojarzą klucz z zaświadczaną zaufaną maszyną wirtualną i że klucz może być używany tylko do żądanego celu.
  4. Aby wykonać wydanie, wyślij żądanie HTTP do usługi Key Vault z poufnej maszyny wirtualnej. Żądanie HTTP musi zawierać raport platformy poświadczeń poufnych maszyn wirtualnych w treści żądania. Testowany raport platformy służy do weryfikowania wiarygodności stanu platformy z obsługą zaufanego środowiska wykonawczego, na przykład poufnej maszyny wirtualnej. Za pomocą usługi zaświadczania platformy Microsoft Azure można utworzyć zaświadczany raport platformy i dołączyć go do żądania.

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

Wdrażanie usługi Azure Key Vault

Skonfiguruj maszynę wirtualną AKV Premium lub AKV mHSM przy użyciu klucza możliwego do wyeksportowania. Postępuj zgodnie ze szczegółowymi instrukcjami z tego miejsca , aby skonfigurować klucze umożliwiające eksportowanie 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'
    }
  }
}

Szablon ARM

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

Wdrażanie poufnej maszyny wirtualnej

Postępuj zgodnie z instrukcjami przewodnika Szybki start dotyczącymi wdrażania poufnej maszyny wirtualnej przy użyciu szablonu usługi ARM

Włączanie tożsamości zarządzanej przypisanej przez system

Tożsamości zarządzane dla zasobów platformy Azure zapewniają usługom platformy Azure automatyczną tożsamość zarządzaną w usłudze Microsoft Entra ID. Za pomocą tej tożsamości można uwierzytelnić się w dowolnej usłudze obsługującej uwierzytelnianie usługi Microsoft Entra bez konieczności przechowywania poświadczeń w kodzie.

Aby włączyć tożsamość zarządzaną przypisaną przez system w cvM, twoje konto wymaga przypisania roli Współautor maszyny wirtualnej. Nie są wymagane żadne inne przypisania roli katalogu Entra firmy Microsoft.

  1. Niezależnie od tego, czy logujesz się na platformie Azure lokalnie, czy za pośrednictwem witryny Azure Portal, użyj konta skojarzonego z subskrypcją platformy Azure, która zawiera maszynę wirtualną.

  2. Aby włączyć tożsamość zarządzaną przypisaną przez system, załaduj szablon do edytora, znajdź Microsoft.Compute/virtualMachines interesujący go zasób i dodaj "identity" właściwość na tym samym poziomie co name: vmName właściwość. Użyj następującej składni:

       identity:{
         type: 'SystemAssigned'
       }
    
  3. resource Dodaj szczegóły do szablonu.

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