Liberación segura de claves con contenedores confidenciales en Azure Container Instances (ACI)
El flujo de liberación segura de claves (SKR) con Azure Key Vault (AKV) con ofertas de contenedor confidenciales puede implementarse de dos maneras. Los contenedores confidenciales ejecutan un invitado optimizado para exponer el dispositivo AMD SEV-SNP a través de un kernel de Linux que usa un firmware en invitado con las revisiones relacionadas con Hyper-V necesarias que hacemos referencia a Direct Linux Boot (DLB). Esta plataforma no usa vTPM ni HCL basado en máquinas virtuales confidenciales con compatibilidad con AMD SEV-SNP. En este documento de concepto, se da por supuesto que planea ejecutar los contenedores en Azure Container Support mediante la elección de un SKU de informática confidencial
- Contenedor auxiliar side-car proporcionado por Azure
- Implementación personalizada con la aplicación contenedora
Contenedor auxiliar side-car proporcionado por Azure
Un proyecto de GitHub de código abierto "confidential side-cars" detalla cómo compilar este contenedor y qué parámetros o variables de entorno son necesarios para preparar y ejecutar este contenedor side-car. La implementación actual del side-car proporciona varias API de REST HTTP que el contenedor de aplicaciones principal puede usar para capturar la clave de AKV. La integración a través de Microsoft Azure Attestation (MAA) ya está incorporada. Los pasos de preparación para ejecutar el contenedor SKR side-car se pueden encontrar en los detalles aquí.
La aplicación contenedora de aplicaciones principal puede llamar a los puntos de conexión de la API web side-car, tal como se define en el ejemplo siguiente. Los side-car se ejecutan dentro del mismo grupo de contenedores y es un punto de conexión local para el contenedor de aplicaciones. Puede encontrar detalles completos de la API aquí
El método POST key/release
espera un JSON con el formato siguiente:
{
"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"
}
Tras la operación correcta, la respuesta del método POST key/release
lleva un encabezado StatusOK
y una carga del formato siguiente:
{
"key": "<key in JSON Web Key format>"
}
Tras el error, la respuesta del método POST key/release
lleva un encabezado StatusForbidden
y una carga del formato siguiente:
{
"error": "<error message>"
}
Implementación personalizada con la aplicación contenedora
Para establecer una aplicación contenedora personalizada que amplíe la funcionalidad de Azure Key Vault (AKV), liberación segura de claves y Microsoft Azure Attestation (MAA), use lo siguiente como un flujo de referencia de alto nivel. Un enfoque sencillo es revisar el código actual de implementación del side-car en este proyecto de GitHub de auto lateral.
- Paso 1: Configurar AKV con clave exportable y adjuntar la directiva de versión. Más información aquí
- Paso 2: Configurar una identidad administrada con el identificador de Microsoft Entra y adjuntarla a AKV. Más información aquí
- Paso 3: Implemente la aplicación contenedora con los parámetros necesarios en ACI mediante la configuración de una directiva de cumplimiento de computación confidencial. Más información aquí
- Paso 4: En este paso, la aplicación capturará un informe de hardware RAW AMD SEV-SNP mediante una llamada de socket de Linux IOCTL. No necesita ninguna biblioteca de atestación de invitado para realizar esta acción. Más información sobre la implementación existente del side-car
- Paso 5: Capturar la cadena de certificados AMD SEV-SNP para el grupo de contenedores. Estos certificados se entregan desde el punto de conexión IMDS del host de Azure. Más información aquí
- Paso 6: Enviar el informe de hardware RAW SNP y los detalles del certificado a MAA para comprobar y devolver notificaciones. Más información aquí
- Paso 7: Enviar el token MAA y el token de identidad administrada generado por ACI a AKV para la liberación de claves. Más información aquí
Si la captura de clave se realiza correctamente desde AKV, puede consumir la clave para descifrar los conjuntos de datos o cifrar los datos que salen del entorno de contenedor confidencial.
Referencias
ACI con implementaciones de contenedores confidenciales
Implementación de side-car con captura y descifrado de blobs cifrados con clave de AKV SKR
AKV SKR con AMD SEV-SNP de la máquina virtual confidencial