Compartir a través de


Contenedores confidenciales en Azure Kubernetes Service (AKS) con enclaves de Intel SGX

Los contenedores confidenciales ayudan a ejecutar aplicaciones de contenedor sin modificar existentes de los entornos de ejecución de lenguajes de programación más comunes (por ejemplo, Python, Node, Java, etc.) en el entorno de ejecución de confianza (TEE) basado en Intel SGX. Este modelo de empaquetado normalmente no necesita modificaciones o recompilaciones de código fuente y es el método más rápido para ejecutarse en enclaves de Intel SGX. El proceso de implementación típico para ejecutar los contenedores estándar de Docker con proyectos de código abierto de un contenedor SGX o una solución de asociados de Azure. En este modelo de empaquetado y ejecución, cada aplicación contenedora se carga en el límite de confianza (enclave) y con un aislamiento basado en hardware aplicado por la CPU de Intel SGX. Cada contenedor que se ejecuta en un enclave recibe su propia clave de cifrado de memoria entregada desde la CPU de Intel SGX. Este modelo funciona bien con aplicaciones contenedoras comerciales del mercado o con aplicaciones personalizadas que se ejecutan actualmente en nodos de uso general. Para ejecutar un contenedor de Docker existente, las aplicaciones en nodos de computación confidencial requieren un software contenedor Intel Software Guard Extensions (SGX) para ayudar a la ejecución del contenedor dentro de los límites del conjunto de instrucciones de CPU especial. SGX crea una ejecución directa en la CPU para quitar el sistema operativo invitado (SO), el sistema operativo host o el hipervisor del límite de confianza. Este paso reduce las áreas de ataque expuestas generales y las vulnerabilidades a la vez que logra el aislamiento de nivel de proceso dentro de un solo nodo.

El proceso general para ejecutar contenedores sin modificar implica cambios en la forma en que el contenedor se empaqueta hoy como se detalla a continuación.

Diagrama de conversión de contenedores confidenciales, con nuevos pasos para habilitar Intel SGX y AKS.

El software contenedor SGX necesario para ayudar a ejecutar contenedores estándar se ofrece mediante asociados de software de Azure o soluciones de software de código abierto (OSS).

Habilitadores de asociados

Los desarrolladores pueden elegir proveedores de software en función de sus características, la integración con los servicios de Azure y la compatibilidad con las herramientas.

Importante

Los asociados de software de Azure suelen implicar tarifas de licencia sobre la infraestructura de Azure. Compruebe todos los términos del software asociado de manera independiente.

Fortanix

Fortanix tiene experiencias de interfaz de línea de comandos (CLI) y portal para convertir sus aplicaciones contenedorizadas en contenedores confidenciales compatibles con SGX. No es necesario modificar ni volver a compilar la aplicación. Fortanix proporciona la flexibilidad para ejecutar y administrar un amplio conjunto de aplicaciones. Puede usar aplicaciones existentes, nuevas aplicaciones nativas del enclave y aplicaciones empaquetadas previamente. Comience con la interfaz de usuario de Enclave Manager de Fortanix o las API REST. Cree contenedores confidenciales mediante la guía de inicio rápido para AKS de Fortanix.

Diagrama del proceso de implementación de Fortanix, en el que se muestran los pasos para mover aplicaciones a contenedores confidenciales e implementarlas.

SCONE (Scontain)

Las directivas de seguridad de SCONE (Scontain) generan certificados, claves y secretos. Solo los servicios con atestación para una aplicación ven estas credenciales. Los servicios de aplicación realizan automáticamente la atestación entre sí por medio de TLS. No es necesario modificar las aplicaciones ni TLS. Para más explicación, vea la demostración de la aplicación Flask de SCONE.

SCONE puede convertir la mayoría de los archivos binarios existentes en aplicaciones que se ejecutan dentro de enclaves. SCONE también protege los lenguajes interpretados como Python mediante el cifrado de los archivos de datos y los archivos de código de Python. Puede usar directivas de seguridad de SCONE para proteger los archivos cifrados contra el acceso no autorizado, las modificaciones y las reversiones. Para más información, vea la documentación de SCONE sobre cómo usar SCONE con una aplicación de Python existente.

Diagrama del flujo de trabajo de SCONE, en el que se muestra cómo procesa SCONE las imágenes binarias.

Puede implementar SCONE en nodos de computación confidencial de Azure con AKS después de esta implementación de aplicación de AKS de ejemplo de SCONE.

Anjuna

Anjuna proporciona software de plataforma SGX para ejecutar contenedores sin modificar en AKS. Para más información, vea la documentación sobre la funcionalidad y las aplicaciones de ejemplo de Anjuna.

Puede comenzar con un ejemplo de Redis Cache y de una aplicación personalizada de Python aquí.

Diagrama del proceso de Anjuna, en el que se muestra cómo se ejecutan los contenedores en la computación confidencial de Azure.

Habilitadores de OSS

Nota:

La computación confidencial de Azure y Microsoft no están directamente afiliadas a estos proyectos y soluciones.

Gramine

Gramine es un sistema operativo invitado ligero diseñado para ejecutar una única aplicación Linux con requisitos mínimos de host. Gramine puede ejecutar aplicaciones en un entorno aislado. Hay compatibilidad con herramientas para convertir el contenedor de Docker existente en contenedores listos para SGX.

Para más información, vea la aplicación de ejemplo y la implementación en AKS de Gramine.

Occlum

Occlum es un sistema operativo de biblioteca (LibOS) de varios procesos y seguro para memoria para Intel SGX. El SO permite que las aplicaciones heredadas se ejecuten en SGX con pocas modificaciones en el código fuente, o incluso ninguna. Occlum protege de forma transparente la confidencialidad de las cargas de trabajo de usuario, a la vez que permite una "migración mediante lift-and-shift" sencilla a aplicaciones de Docker existentes.

Para más información, vea las instrucciones de implementación y las aplicaciones de ejemplo en AKS.

Marblerun

Marblerun es un marco de orquestación para contenedores confidenciales. Puede ejecutar y modificar la escala de servicios confidenciales en Kubernetes habilitado para SGX. Marblerun se encarga de tareas repetitivas como comprobar los servicios del clúster, administrar sus secretos y establecer conexiones mTLS de enclave a enclave entre ellos. También garantiza que el clúster de contenedores confidenciales se adhiera a un manifiesto definido en JSON simple. Puede comprobar el manifiesto con clientes externos mediante la atestación remota.

Este marco amplía las propiedades de confidencialidad, integridad y capacidad de comprobación de un único enclave para un clúster de Kubernetes.

Marblerun admite contenedores confidenciales creados con Graphene, Occlum y EGo con ejemplos para cada SDK. El marco se ejecuta en Kubernetes junto con las herramientas nativas de nube existentes. Hay una CLI y gráficos de Helm. Marblerun también admite nodos de computación confidencial en AKS. Siga la guía para implementar Marblerun en AKS.

Arquitecturas de referencia de contenedores confidenciales

Ponerse en contacto

¿Tiene alguna pregunta sobre la implementación? ¿Quiere convertirse en un habilitador para contenedores confidenciales? Envíe un correo electrónico a acconaks@microsoft.com.

Pasos siguientes