Share via


Liberação de chave segura com contêineres confidenciais na ACI (Instância de Contêiner) do Azure

O fluxo Secure Key Release (SKR) com o Azure Key Vault (AKV) com ofertas de contêiner confidenciais pode ser implementado de algumas maneiras. Os contêineres confidenciais executam um dispositivo AMD SEV-SNP de expostagem habilitada de convidado por meio de um Kernel Linux que usa um firmware convidado com os patches necessários relacionados ao Hyper-V que chamamos de Direct Linux Boot (DLB). Essa plataforma não usa vTPM e HCL com base em VMs confidenciais com suporte a AMD SEV-SNP. Este documento de conceito pressupõe que você planeja executar os contêineres no Suporte de Contêiner do Azure escolhendo uma SKU de computação confidencial

  • Contêiner auxiliar de carro lateral fornecido pelo Azure
  • Implementação personalizada com seu aplicativo de contêiner

Contêiner auxiliar de carro lateral fornecido pelo Azure

Um projeto de código aberto do GitHub "side-cars confidenciais" detalha como construir esse contêiner e quais parâmetros/variáveis de ambiente são necessários para você preparar e executar esse contêiner de side-car. A implementação atual do carro lateral fornece várias APIs HTTP REST que o contêiner de aplicativo principal pode usar para buscar a chave do AKV. A integração por meio do Microsoft Azure Attestation(MAA) já está integrada. As etapas de preparação para executar o contêiner SKR do carro lateral podem ser encontradas em detalhes aqui.

Seu aplicativo de contêiner de aplicativo principal pode chamar os pontos de extremidade da API da Web do carro lateral, conforme definido no exemplo abaixo. Side-cars é executado dentro do mesmo grupo de contêineres e é um ponto de extremidade local para o contêiner de aplicativo. Detalhes completos da API podem ser encontrados aqui

O key/release método POST espera um JSON do seguinte formato:

{	
    "maa_endpoint": "<maa endpoint>", //https://learn.microsoft.com/en-us/azure/attestation/quickstart-portal#attestation-provider
    "akv_endpoint": "<akv endpoint>", //AKV URI
    "kid": "<key identifier>" //key name,
    "access_token": "optional aad token if the command will run in a resource without proper managed identity assigned"
}

Após o êxito, a resposta do key/release método POST carrega um StatusOK cabeçalho e uma carga útil do seguinte formato:

{
    "key": "<key in JSON Web Key format>"
}

Após o erro, a resposta do key/release método POST carrega um StatusForbidden cabeçalho e uma carga útil do seguinte formato:

{
    "error": "<error message>"
}

Implementação personalizada com seu aplicativo de contêiner

Para executar um aplicativo de contêiner personalizado que estende a capacidade do Azure Key Vault (AKV) - Secure Key Release e Microsoft Azure Attestation (MAA), use o abaixo como um fluxo de referência de alto nível. Uma abordagem fácil é revisar o código de implementação atual do side-car neste projeto do GitHub side-car.

Image of the aforementioned operations, which you should be performing.

  1. Etapa 1: Configure o AKV com a chave exportável e anexe a política de lançamento. Mais aqui
  2. Etapa 2: configurar uma identidade gerenciada com o Microsoft Entra ID e anexá-la ao AKV. Mais aqui
  3. Etapa 3: Implante seu aplicativo de contêiner com os parâmetros necessários na ACI configurando uma política de imposição de computação confidencial. Mais aqui
  4. Passo 4: Nesta etapa, seu aplicativo deve buscar um relatório de hardware RAW AMD SEV-SNP fazendo uma chamada de soquete Linux IOCTL. Você não precisa de nenhuma biblioteca de atestado de convidado para executar essa ação. Saiba mais sobre a implementação do side-car existente
  5. Etapa 5: Buscar a cadeia de certificados AMD SEV-SNP para o grupo de contêineres. Esses certificados são entregues do ponto de extremidade IMDS do host do Azure. Mais aqui
  6. Etapa 6: Envie o relatório de hardware SNP RAW e os detalhes do certificado para a MAA para verificação e declarações de devolução. Mais aqui
  7. Etapa 7: Envie o token MAA e o token de identidade gerenciada gerados pela ACI para AKV para liberação de chave. Mais aqui

Com o sucesso da busca de chaves do AKV, você pode consumir a chave para descriptografar os conjuntos de dados ou criptografar os dados que saem do ambiente de contêiner confidencial.

Referências

ACI com implantações de contêiner confidenciais

Implementação de carro lateral com busca e descriptografia de blob criptografado com chave SKR AKV

AKV SKR com AMD SEV-SNP da VM confidencial

Atestado do Microsoft Azure (MAA)

Exemplos de políticas SKR