Partilhar via


Liberação segura de chaves com VMs confidenciais: Guia de instruções

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..

A SKR requer que um aplicativo que executa a 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 Azure Key Vault 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 ao Cofre da Chave para conceder à identidade gerenciada a permissão de chave "release". 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 Key Vault Managed HSM, atribua a associação de função "Managed HSM Crypto Service Release User".
  3. Crie uma chave do Cofre da Chave 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 da Chave a partir da máquina virtual confidencial. A solicitação HTTP deve incluir o relatório de plataforma certificada de VMs confidenciais 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.

Diagrama das operações acima mencionadas, que iremos realizar.

Implantando um Cofre da Chave do Azure

Configure AKV Premium ou AKV mHSM com uma chave exportável. Siga as instruções detalhadas aqui 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 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"

Ativar a identidade gerida atribuída pelo sistema

As identidades gerenciadas para recursos do Azure fornecem aos serviços do Azure uma identidade gerenciada automaticamente no Microsoft Entra ID. Pode utilizar esta identidade para se autenticar em qualquer serviço que suporte a autenticação do Microsoft Entra sem ter credenciais no código.

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

  1. Quer inicie sessão no Azure localmente ou através do portal do Azure, utilize uma conta associada à subscrição do Azure que contém a VM.

  2. Para habilitar a identidade gerenciada atribuída ao 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. Utilize 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
     }