Share via


Guia de lançamento seguro de chave com VMs confidenciais

O artigo abaixo descreve como executar uma liberação de chave segura do Cofre de Chaves do Azure quando seus aplicativos estão sendo executados com uma máquina virtual confidencial baseada em AMD SEV-SNP. Para saber mais sobre o Secure Key Release e a Computação Confidencial do Azure, clique aqui.

O SKR requer que um aplicativo que executa o SKR passe por um fluxo de atestado de convidado remoto usando o Microsoft Azure Attestation (MAA), conforme descrito aqui.

Fluxo geral e arquitetura

Para permitir que o Cofre de Chaves do Azure libere uma chave para uma máquina virtual confidencial atestada, há algumas etapas que precisam ser seguidas:

  1. Atribua uma identidade gerenciada à máquina virtual confidencial. Há suporte para identidade gerenciada atribuída pelo sistema ou uma identidade gerenciada atribuída pelo usuário.
  2. Defina uma política de acesso do Cofre de Chaves para conceder à identidade gerenciada a permissão de chave "liberar". Uma política permite que a máquina virtual confidencial acesse o Cofre da Chave e execute a operação de liberação. Se estiver usando o HSM gerenciado do Cofre de Chaves, atribua a associação à função "Usuário do Managed HSM Crypto Service Release".
  3. Crie uma chave do Cofre de Chaves marcada como exportável e com uma política de lançamento associada. A política de liberação de chave associa a chave a uma máquina virtual confidencial atestada e que a chave só pode ser usada para a finalidade desejada.
  4. Para executar a liberação, envie uma solicitação HTTP para o Cofre de Chaves da máquina virtual confidencial. A solicitação HTTP deve incluir o relatório de plataforma de VMs confidenciais atestado no corpo da solicitação. O relatório de plataforma atestado é usado para verificar a confiabilidade do estado da plataforma habilitada para Ambiente de Execução Confiável, como a VM Confidencial. O serviço de Atestado do Microsoft Azure pode ser usado para criar o relatório de plataforma atestado e incluí-lo na solicitação.

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

Implantando um Cofre de Chaves do Azure

Configure AKV Premium ou AKV mHSM com uma chave exportável. Siga as instruções detalhadas daqui configurando chaves exportáveis 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'
    }
  }
}

Modelo de ARM

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

Implantar uma máquina virtual confidencial

Siga as instruções de início rápido sobre como "Implantar VM confidencial com modelo ARM"

Habilitar identidade gerenciada atribuída pelo sistema

As Identidades gerenciadas para recursos do Azure fornecem aos serviços do Azure uma identidade gerenciada automaticamente na ID do Microsoft Entra. Use essa identidade para autenticar qualquer serviço que dê suporte à autenticação do Microsoft Entra, sem a necessidade de ter as credenciais no código.

Para habilitar a identidade gerenciada atribuída pelo sistema em um CVM, sua conta precisa da atribuição de função Colaborador de Máquina Virtual. Nenhuma outra atribuição de função do diretório do Microsoft Entra é necessária.

  1. Se você entrar no Azure localmente ou por meio do portal do Azure, use uma conta que esteja associada com a assinatura do Azure que contenha a máquina virtual.

  2. Para habilitar a identidade gerenciada atribuída pelo sistema, carregue o modelo em um editor, localize o Microsoft.Compute/virtualMachines recurso de interesse e adicione a "identity" propriedade no mesmo nível da name: vmName propriedade. Use a seguinte sintaxe:

       identity:{
         type: 'SystemAssigned'
       }
    
  3. Adicione os resource detalhes ao modelo.

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