Share via


Versión segura de claves con contenedores confidenciales en Azure Container Instance (ACI)

El flujo de versió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 el firmware 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 una SKU de computación confidencial.

  • Contenedor auxiliar de side-Car proporcionado por Azure
  • Implementación personalizada con la aplicación contenedora

Contenedor auxiliar side-Car proporcionado por Azure

Un proyecto de GitHub código abierto "coches laterales confidenciales" detalla cómo compilar este contenedor y qué parámetros y variables de entorno son necesarios para preparar y ejecutar este contenedor side-car. La implementación actual del coche lateral proporciona varias API 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á integrada. 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 de auto lateral, tal como se define en el ejemplo siguiente. Los coches laterales 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 key/release método POST 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 key/release método POST lleva un StatusOK encabezado y una carga del formato siguiente:

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

Tras el error, la respuesta del key/release método POST lleva un StatusForbidden encabezado y una carga del formato siguiente:

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

Implementación personalizada con la aplicación contenedora

Para realizar una aplicación contenedora personalizada que amplíe la funcionalidad de Azure Key Vault (AKV): versión de clave segura 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 coche lateral en este proyecto de GitHub de auto lateral.

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

  1. Paso 1: Configurar AKV con clave exportable y adjuntar la directiva de versión. Más aquí
  2. Paso 2: Configurar una identidad administrada con el identificador de Microsoft Entra y adjuntarla a AKV. Más aquí
  3. 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 aquí
  4. 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 coche lateral
  5. Paso 5: Capturar la cadena de certificados DE 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 aquí
  6. Paso 6: Enviar el informe de hardware RAW de SNP y los detalles del certificado a MAA para comprobar y devolver notificaciones. Más aquí
  7. Paso 7: Enviar el token MAA y el token de identidad administrada generado por ACI a AKV para la versión de clave. Más 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

Microsoft Azure Attestation (MAA)

Ejemplos de directivas de SKR