Editar

Compartir a través de


Análisis de macrodatos en la computación confidencial con Apache Spark en Kubernetes

Azure Kubernetes Service (AKS)
Azure SQL Database
Azure Data Lake

Esta solución usa la computación confidencial en Kubernetes para ejecutar análisis de macrodatos con Apache Spark dentro de contenedores confidenciales con datos de Azure Data Lake y Azure SQL Database. La computación confidencial la proporcionan los procesadores Intel Software Guard Extensions y AMD EPYCTM con Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP). Para más información sobre el aprovisionamiento de un clúster de AKS con máquinas virtuales confidenciales de AMD SEV-SNP, consulte Compatibilidad con grupos de nodos de máquina virtual confidenciales en AKS con AMD SEV-SNP. Para más información sobre la implementación de un clúster de AKS con nodos de agente Intel SGX de computación confidencial, consulte Implementación de un clúster de AKS con nodos de agente de Intel SGX de computación confidencial mediante la CLI de Azure.

Apache®, Apache Ignite, Ignite y el logotipo de la llama son marcas registradas o marcas comerciales de Apache Software Foundation en Estados Unidos y otros países. El uso de estas marcas no implica la aprobación de Apache Software Foundation.

Architecture

Diagrama del análisis de macrodatos confidenciales con Apache Spark, Azure SQL Always Encrypted, AKS y Secure Container Environment.

Descargue un archivo de PowerPoint de esta arquitectura.

En el diagrama anterior se describe la arquitectura: un patrón escalable para procesar conjuntos de datos más grandes de forma distribuida. También muestra análisis confidenciales en motores de base de datos relacionales y almacenamiento de datos confidenciales. En concreto, la aplicación Spark en contenedores puede procesar conjuntos de datos de dos orígenes de datos, como se muestra a continuación:

  1. Azure Data Lake Storage - Archivos de Parquet/Delta Lake: como se muestra en la demostración de ejemplo, una implementación de Spark de cuatro pods (un controlador y tres ejecutores en el runtime de Secure Container Environment [SCONE]) es capaz de procesar 1,500 millones de filas de archivos de Parquet/Delta Lake que se almacenan en Azure Data Lake Storage en un plazo de dos minutos, o aproximadamente 131 segundos.

  2. Azure SQL DB - Always Encrypted con enclaves seguros: en este ejemplo se usa Spark para acceder a los datos de Always Encrypted como texto no cifrado mediante el controlador JDBC de Azure SQL dentro del enclave de contenedores de Spark para ejecutar canalizaciones de aprendizaje automático y análisis.

Puede ampliar fácilmente este patrón para incluir cualquier origen de datos que admita el gran ecosistema de Spark.

Flujo de trabajo

  1. Rol de operador: un ingeniero de DevOps aprovisiona clústeres de Kubernetes, espacios de nombres, cuentas de servicio y grupos de nodos de máquina virtual confidencial (por ejemplo, DC4s_v3).

  2. Rol de desarrollador: un ingeniero de datos usa PySpark para escribir una aplicación de análisis diseñada para analizar grandes volúmenes de datos.

  3. Rol de administrador de datos: el ingeniero de seguridad o de datos crea una directiva de seguridad para la aplicación PySpark a partir de un repositorio compartido de la organización (una actividad única). Esta directiva especifica el estado esperado de los datos y el código de la aplicación, los requisitos mínimos de seguridad para la plataforma y las variables de entorno, los argumentos de la línea de comandos o los secretos (como la cadena JDBC, el URI del blob de entrada y un token de SAS para el acceso). También puede hacer que esta configuración esté disponible para el runtime de Spark mediante secretos de Kubernetes o mediante Azure Key Vault. (Para más información, consulte Uso del proveedor de Azure Key Vault para el controlador CSI del almacén de secretos en un clúster de AKS). La configuración se inserta en el enclave solo si un proveedor de atestación valida la evidencia que proporciona. El proveedor de atestación (por ejemplo, Azure Attestation Service) también se define en la directiva de seguridad.

  4. Con la ayuda del software de computación confidencial SCONE, el ingeniero de datos crea una imagen confidencial de Docker que contiene el código de análisis cifrado y una versión segura de PySpark. SCONE funciona dentro de un clúster de AKS que tiene habilitado Intel SGX (consulte Creación de un clúster de AKS con un grupo de nodos del sistema), que permite que el contenedor se ejecute dentro de un enclave. PySpark proporciona evidencia de que los datos confidenciales y el código de la aplicación están cifrados y aislados en un entorno de ejecución de confianza (TEE), lo que significa que ningún usuario, ningún proceso y ningún registro tienen acceso a los datos de texto no cifrado o al código de la aplicación.

  5. La aplicación PySpark se implementa en el clúster remoto de AKS. Se inicia y envía su evidencia de atestación al proveedor de atestación. Si la evidencia es válida, se devuelve un token de atestación. La infraestructura remota acepta el token de atestación de la API web de la plataforma médica y lo comprueba con un certificado público que se encuentra en el servicio Azure Attestation. Si se comprueba correctamente el token, hay casi certeza de que el enclave es seguro y no se han abierto los datos ni el código de la aplicación fuera del enclave. A continuación, la configuración de la directiva de seguridad (variables de entorno, argumentos de línea de comandos y secretos) se inserta en enclaves de PySpark.

  6. Puede escalar horizontalmente la ejecución de PySpark en varios nodos de Kubernetes. Todas las instancias de PySpark se comunican a través de un canal cifrado y todos los archivos se cifran y deben escribirse en sus sistemas de archivos locales (por ejemplo, archivos aleatorios).

  7. Los resultados del análisis se cifran y cargan en un Azure SQL Database con Always Encrypted (que usa el cifrado de nivel de columna). El acceso a los datos de salida y las claves de cifrado se puede conceder de forma segura a otras aplicaciones confidenciales (por ejemplo, en una canalización) mediante el mismo tipo de directivas de seguridad y pruebas de atestación basadas en hardware que se describen en este artículo.

Componentes

  • Azure Attestation es una solución unificada que comprueba de forma remota la confiabilidad de una plataforma. Azure Attestation también comprueba de forma remota la integridad de los archivos binarios que se ejecutan en la plataforma. Use Azure Attestation para establecer la confianza con la aplicación confidencial.

  • Los nodos de computación confidencial de Azure se hospedan en una serie de máquinas virtuales específica que puede ejecutar cargas de trabajo confidenciales en AKS dentro de un TEE basado en hardware. En este entorno, el código de nivel de usuario puede asignar regiones privadas de memoria, conocidas como enclaves. Los nodos de computación confidencial pueden admitir contenedores confidenciales o contenedores compatibles con enclave.

  • Azure Kubernetes Service simplifica el proceso de implementación y administración de un clúster de Kubernetes.

  • Apache Spark es un motor de código abierto y varios lenguajes para ejecutar ingeniería de datos, ciencia de datos y aprendizaje automático en máquinas de un solo nodo y clústeres de varios nodos, como pods de Kubernetes.

  • Azure SQL Database ofrece Always Encrypted con enclaves seguros, ampliando las funcionalidades de computación confidencial de la tecnología Always Encrypted de SQL Server para incluir el cifrado en contexto y consultas confidenciales enriquecidas.

  • SCONE admite la ejecución de aplicaciones confidenciales en contenedores que se ejecutan dentro de un clúster de Kubernetes.

  • La plataforma SCONE es una solución de Scontain, un proveedor de software independiente y asociado de Azure.

Alternativas

Occlum es un sistema operativo de biblioteca (LibOS) de varios procesos y seguro para memoria para Intel SGX. Occlum permite que las aplicaciones heredadas se ejecuten en Intel SGX con pocas o ninguna modificaciones en el código fuente. Occlum protege de forma transparente la confidencialidad de las cargas de trabajo de los usuarios al tiempo que permite una fácil migración a las aplicaciones Docker existentes. Occlum admite aplicaciones Java.

El equipo de ingeniería de SCONE mantiene una imagen de contenedor de Apache Spark que ejecuta la versión más reciente de Spark. Una alternativa que no es específica de Apache Spark es Fortanix, con el que puede implementar contenedores confidenciales para usarlos con la aplicación en contenedores. Fortanix ofrece la flexibilidad necesaria para ejecutar y administrar el conjunto más amplio de aplicaciones, como las aplicaciones existentes, las nuevas aplicaciones nativas de enclave y las aplicaciones ya empaquetadas.

Detalles del escenario

Hay un crecimiento exponencial de los conjuntos de datos, lo que ha dado lugar a un creciente examen de cómo se exponen los datos, desde las perspectivas de privacidad y cumplimiento de los datos de consumidor. En este contexto, la computación confidencial se convierte en una herramienta importante para ayudar a las organizaciones a satisfacer sus necesidades de privacidad y seguridad para los datos empresariales y de consumidor. Las organizaciones pueden obtener nuevas conclusiones de los datos regulados si los datos se procesan de forma compatible. La computación confidencial es especialmente útil en escenarios en los que se necesita la escala proporcionada por la informática en la nube para procesar los datos de forma confidencial.

La tecnología de computación confidencial cifra los datos en memoria y solo los procesa una vez comprobado o atestiguado el entorno en la nube. La computación confidencial impide el acceso a los datos por parte de operadores en la nube, administradores malintencionados y software con privilegios, como el hipervisor. También ayuda a mantener los datos protegidos a lo largo de su ciclo de vida, mientras los datos están en reposo, en tránsito y también ahora mientras están en uso.

Los contenedores confidenciales en Azure Kubernetes Service (AKS) proporcionan la infraestructura necesaria para que los clientes usen aplicaciones populares, como Apache Spark, para realizar la limpieza de datos y el entrenamiento de aprendizaje automático. En este artículo se presenta una solución que ofrece la computación confidencial de Azure para ejecutar una aplicación Apache Spark en un clúster de AKS mediante el uso de grupos de nodos con Intel Software Guard Extensions (Intel SGX). Los datos de ese procesamiento se almacenan de forma segura en Azure SQL Database mediante Always Encrypted con enclaves seguros.

Nota:

El análisis de datos confidenciales en este contexto está pensado para implicar la ejecución de análisis en datos confidenciales con la libertad de pensar en la filtración de datos. Esto incluye una posible vulneración del acceso a contenedores en el nivel raíz, tanto internamente (por ejemplo, por un administrador no autorizado) como externamente (por riesgo del sistema).

El análisis de datos confidenciales ayuda a satisfacer las necesidades más altas de seguridad y confidencialidad mediante la eliminación del cálculo de las partes que no son de confianza, como el operador en la nube y los administradores de servicios o invitados. Este método ayuda a satisfacer las necesidades de cumplimiento de datos a través de garantías con respaldo de hardware.

Posibles casos de uso

Muchas industrias, especialmente las de servicios financieros, protegen sus datos mediante el uso de computación confidencial para estos fines:

Consideraciones

Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.

Los enclaves confidenciales de Azure que usan máquinas virtuales de DCsv3 y DCdsv3-series ofrecen tamaños de memoria grandes para ayudar a ejecutar aplicaciones que consumen mucha memoria, como el análisis. En este escenario se usan máquinas virtuales de DCsv3-series habilitadas para Intel SGX. Solo puede implementar ciertos tamaños en ciertas regiones. Para más información, consulte Inicio rápido: Implementación de una máquina virtual de computación confidencial de Azure en Marketplace y Productos disponibles por región.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Dos factores principales en la seguridad de este escenario son los enclaves seguros y la atestación.

Garantías de enclave

Los administradores de Kubernetes o cualquier usuario con privilegios con el nivel de acceso más alto (por ejemplo, raíz) no pueden inspeccionar el contenido en memoria ni el código fuente de los controladores o ejecutores. La caché de páginas de enclave (EPC) es una partición de memoria especializada en máquinas virtuales confidenciales de Azure que usan enclaves o contenedores confidenciales. Las máquinas virtuales de DCsv3 y DCdsv3-series también incluyen memoria normal sin cifrar para ejecutar aplicaciones que no requieren el enclave seguro. Para obtener más información sobre el uso de Intel SGX para enclaves, consulte Compilación con enclaves SGX.

Atestación

La atestación es un mecanismo que proporciona a un cliente o entidad la evidencia criptográfica de que el entorno en el que se ejecuta una aplicación es de confianza, incluidos su hardware y software, antes de intercambiar datos. La atestación remota garantiza que la carga de trabajo no se ha alterado cuando se implementa en un host que no es de confianza, como una instancia de máquina virtual o un nodo de Kubernetes que se ejecuta en la nube. En este proceso, un proveedor de atestación analiza la evidencia de atestación proporcionada por el hardware de Intel SGX.

Para realizar la atestación remota en una aplicación SCONE (como los pods del controlador Spark y el ejecutor), se requieren dos servicios:

  • Servicio de atestación local (LAS): un servicio local que se ejecuta en el host que no es de confianza (máquina virtual del grupo de nodos de AKS) y recopila la evidencia de atestación proporcionada por Intel SGX sobre la aplicación que se está atestiguando. Debido al método de implementación de aplicaciones de SCONE, esta evidencia se firma y reenvía al servicio de configuración y atestación (CAS).

  • CAS: un servicio central que administra las directivas de seguridad (denominadas sesiones SCONE), la configuración y los secretos. CAS compara la evidencia de atestación recopilada por LAS con las directivas de seguridad de la aplicación (definidas por el propietario de la aplicación) para decidir si el enclave es de confianza. Si es así, CAS permite que se ejecute el enclave y SCONE inserta de forma segura la configuración y los secretos en él. Para más información sobre CAS y sus características, como la generación de secretos y el control de acceso, consulte Configuración de SCONE y Servicio de atestación.

En este escenario se usa un CAS público proporcionado por SCONE para la demostración y la simplicidad, y se implementa el LAS para que se ejecute como DaemonSet en cada nodo de AKS.

Optimización de costos

La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.

Use la calculadora de precios de Azure que preconfigura todos los servicios de Azure para explorar el costo de la ejecución de este escenario. Tenga en cuenta las licencias adicionales que necesita el asociado para ejecutar cargas de trabajo de producción.

Implementación de este escenario

La implementación de este escenario implica los siguientes pasos de alto nivel:

  • Obtenga acceso a la imagen base de PySpark que se usa en este escenario desde el registro de contenedor de SCONE: consulte registry.scontain.com:5050 en imágenes mantenidas de SCONE.

  • Clone el proyecto de demostración en GitHub, Confidential Data Analytics con Apache Spark en contenedores confidenciales de Intel SGX. Este proyecto contiene todos los recursos necesarios, los pasos de implementación y el código fuente para reproducir la demostración.

  • Implemente Always Encrypted con enclaves seguros en Azure SQL Database: Demos. Estas demos usan un conjunto de datos confidencial, ContosoHR, que se incluye. Este escenario descifra datos confidenciales en texto no cifrado dentro del enclave de contenedores de Spark.

  • Implemente un grupo de nodos de clúster de AKS habilitado para Intel SGX. Para obtener instrucciones, consulte Inicio rápido: Implementación de un clúster de AKS con nodos de computación confidenciales mediante la CLI de Azure.

  • Implemente el servicio de atestación local de SCONE en el clúster mediante el manifiesto de Kubernetes incluido.

  • Compile la imagen cifrada con software de computación confidencial SCONE e insértela en su propio Azure Container Registry. El repositorio tiene una aplicación demo que cuenta el número de líneas en los registros de viajes de taxis amarillos de la ciudad de Nueva York, un conjunto de datos abierto de horas, ubicaciones, tarifas y otros datos relacionados con los viajes de taxi. Puede adaptar esto a sus necesidades específicas.

  • Implemente la aplicación Spark mediante la ejecución del comando spark-submit. Esto implementa un pod de controlador y un número configurable de pods ejecutores (la demostración usa tres) que ejecutan las tareas e informan de los resultados del análisis al controlador. Toda la comunicación está cifrada.

Como alternativa, SCONE Confidential PySpark en Kubernetes, una máquina virtual, incluye la misma demo que puede reproducir en un clúster local de minikube. Para más información, consulte la documentación oficial: máquina virtual SCONE PySpark.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

  • Amar Gowda | Administrador de programas principal

Otro colaborador:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes