Liberação de Chave Segura com contêineres confidenciais na Instância de Contêiner do Azure (ACI)
O fluxo de Liberação de Chave Segura (SKR) com o Azure Key Vault (AKV) com ofertas de contêineres confidenciais pode ser implementado de várias maneiras. Os contêineres confidenciais executam um dispositivo AMD SEV-SNP de exposição habilitado para convidados por meio de um Kernel do Linux que usa um firmware convidado com patches relacionados ao Hyper-V necessários que chamamos de Inicialização Direta do Linux (DLB). Essa plataforma não usa vTPMs e HCL que as VMs confidenciais com AMD SEV-SNP suportam. Este documento conceitual pressupõe que você planeja executar os contêineres no Suporte de Contêiner do Azure escolhendo um SKU de computação confidencial
- Contêiner auxiliar sidecar fornecido pelo Azure
- Implementação personalizada com seu aplicativo de contêiner
Contêiner auxiliar sidecar fornecido pelo Azure
Um projeto do GitHub "sidecars confidenciais" de software livre detalha como criar esse contêiner e quais parâmetros/variáveis de ambiente são necessários para que você prepare e execute esse contêiner sidecar. A implementação atual do sidecar fornece várias APIs REST HTTP que o contêiner do aplicativo primário pode usar para buscar a chave do AKV. A integração por meio do Atestado do Microsoft Azure (MAA) já foi incorporada. As etapas de preparação para executar o contêiner sidecar da SKR podem ser encontradas em detalhes aqui.
Seu aplicativo de contêiner de aplicativo principal pode chamar os pontos de extremidade da API WEB do sidecar, conforme definido no exemplo abaixo. Os sidecars são executados no mesmo grupo de contêineres e são um ponto de extremidade local para o contêiner do aplicativo. Detalhes completos da API podem ser encontrados aqui
O método POST key/release
espera um JSON do seguinte formato:
{
"maa_endpoint": "<maa endpoint>", //https://video2.skills-academy.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 sucesso, a resposta do método POST key/release
carrega um cabeçalho StatusOK
e uma carga do seguinte formato:
{
"key": "<key in JSON Web Key format>"
}
Após o erro, a resposta do método POST key/release
carrega um cabeçalho StatusForbidden
e uma carga 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) – Liberação de Chave Segura e Atestado do Microsoft Azure (MAA), use o diagrama abaixo como um fluxo de referência de alto nível. Uma abordagem fácil é examinar o código de implementação atual do sidecar neste projeto do GitHub de sidecar.
- Etapa 1: configurar o AKV com a Chave Exportável e anexar a política de liberação. Mais sobre isso aqui
- Etapa 2: configurar uma identidade gerenciada com o Microsoft Entra ID e anexá-lo ao AKV. Mais sobre isso aqui
- Etapa 3: implantar seu aplicativo de contêiner com os parâmetros necessários dentro da ACI configurando uma política de imposição de computação confidencial. Mais sobre isso aqui
- Etapa 4: nesta etapa, seu aplicativo 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. Mais informações sobre a implementação de sidecar existente
- 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 do IMDS do host do Azure. Mais sobre isso aqui
- Etapa 6: enviar o relatório de hardware do SNP RAW e os detalhes do certificado ao MAA para verificação e retorno de declarações. Mais sobre isso aqui
- Etapa 7: enviar o token do MAA e o token de identidade gerenciado gerado pela ACI para o AKV para a liberação de chave. Mais sobre isso 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êineres confidenciais
Implementação de sidecar com busca e descriptografia de blob criptografado com chave AKV do SKR
SKR do AKV com AMD SEV-SNP de VM Confidencial