Liberação segura de chave com contêineres confidenciais na Instância de Contêiner do Azure (ACI)
O fluxo Secure Key Release (SKR) com o Azure Key Vault (AKV) com ofertas de contêiner confidenciais pode ser implementado de duas maneiras. Os contêineres confidenciais executam um dispositivo convidado iluminado expondo AMD SEV-SNP através 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). Esta plataforma não usa vTPM e HCL com base em VMs confidenciais com suporte a AMD SEV-SNP. Este documento conceitual 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 GitHub de código aberto "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 carro lateral. A implementação atual do side car fornece várias APIs HTTP REST que seu 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á incorporada. 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 finais da API WEB do carro lateral, conforme definido no exemplo abaixo. Os side-cars são executados dentro do mesmo grupo de contêineres e são um ponto de extremidade local para o contêiner do aplicativo. Todos os detalhes 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>"
}
Em caso de 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 é rever o código de implementação atual do side-car neste projeto GitHub de side-car.
- Passo 1: Configure o AKV com a Chave Exportável e anexe a política de lançamento. Mais aqui
- Etapa 2: Configure uma identidade gerenciada com o ID do Microsoft Entra e anexe-a ao AKV. Mais aqui
- Etapa 3: Implante seu aplicativo de contêiner com os parâmetros necessários no ACI configurando uma política de aplicação de computação confidencial. Mais aqui
- Passo 4: Nesta etapa, seu aplicativo deve buscar um relatório de hardware RAW AMD SEV-SNP fazendo uma chamada IOCTL Linux Socket. Você não precisa de nenhuma biblioteca de atestado de convidado para executar essa ação. Mais informações sobre a implementação existente de side-car
- Etapa 5: Buscar a cadeia de certificados AMD SEV-SNP para o grupo de contêineres. Esses certificados são entregues a partir do ponto de extremidade IMDS do host do Azure. Mais aqui
- Etapa 6: Envie o relatório de hardware SNP RAW e os detalhes do certificado para o MAA para verificação e declarações de retorno. Mais aqui
- Etapa 7: Envie o token MAA e o token de identidade gerenciado gerado pelo ACI para o AKV para liberação da chave. Mais aqui
No sucesso da busca de chave 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 Side-Car com busca de blob criptografado e descriptografia com chave SKR AKV
AKV SKR com VM confidencial AMD SEV-SNP