Modifier

Partager via


Analytique Big Data sur l’informatique confidentielle avec Apache Spark sur Kubernetes

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

Cette solution utilise l’informatique confidentielle sur Kubernetes pour exécuter une analytique Big Data avec Apache Spark dans des conteneurs confidentiels contenant des données issues de Azure Data Lake et Azure SQL Database. L’informatique confidentielle est fournie par les extensions De protection logicielle Intel et les processeurs AMD EPYCTM avec chiffrement sécurisé Virtualization-Secure pagination imbriquée. Pour des informations supplémentaires sur l’approvisionnement d’un cluster AKS avec des machines virtuelles confidentielles AMD SEV-SNP, consultez Prise en charge du pool de nœuds de machine virtuelle confidentielle sur AKS avec des machines virtuelles confidentielles AMD SEV-SNP. Pour des informations supplémentaires sur le déploiement d’un cluster AKS avec des nœuds d’agent d’informatique confidentielle Intel SGX, consultez Déployer un cluster AKS avec des nœuds d’agent d’informatique confidentielle Intel SGX à l’aide d’Azure CLI.

Apache®, Apache Ignite, Ignite et le logo de la flamme sont soit des marques déposées, soit des marques commerciales d’Apache Software Foundation aux États-Unis et/ou dans d’autres pays. L’utilisation de ces marques n’implique aucune approbation de l’Apache Software Foundation.

Architecture

Diagramme d’une analytique Big Data confidentielle avec Apache Spark, Azure SQL Always Encrypted, AKS et Secure Container Environment.

Téléchargez un fichier PowerPoint de cette architecture.

Le diagramme précédent présente l’architecture : un modèle scalable pour traiter les jeux de données plus grands de manière distribuée. Il présente également l’analytique confidentielle sur les moteurs de base de données relationnelle et le stockage des données confidentielles. En particulier, l’application Spark conteneurisée peut traiter les jeux de données de deux sources de données, comme illustré :

  1. Azure Data Lake Storage - Fichiers Parquet/Delta Lake : comme indiqué dans l’exemple de démo, un déploiement Spark à quatre pods (un pilote, trois exécuteurs sur le runtime SCONE (Secure Container Environment)) est capable de traiter 1,5 milliard de lignes de fichiers Parquet/Delta Lake stockés sur Azure Data Lake Stockage en deux minutes, ou environ 131 secondes.

  2. Azure SQL DB - Always Encrypted avec enclaves sécurisées : cet exemple utilise Spark pour accéder aux données Always Encrypted en texte clair en utilisant le pilote Azure SQL JDBC à l’intérieur de l’enclave de conteneur Spark pour exécuter des pipelines analytiques et de machine learning.

Vous pouvez facilement étendre ce modèle à toutes les sources de données prises en charge par le vaste écosystème de Spark.

Workflow

  1. L’opérateur : un ingénieur DevOps provisionne les clusters Kubernetes, les espaces de noms, les comptes de service et les pools de nœuds de machine virtuelle (VM) (par exemple, DC4s_v3) confidentiels.

  2. Le développeur : un ingénieur Données utilise PySpark pour écrire une application analytique conçue pour analyser de grands volumes de données.

  3. L’opérateur des données : l’ingénieur Données ou l’ingénieur de sécurité crée une stratégie de sécurité pour l’application PySpark à partir d’un dépôt partagé dans l’organisation (activité ponctuelle). Cette stratégie spécifie l’état attendu des données et du code d’application, les exigences de sécurité minimales pour la plateforme et toutes les variables d’environnement, tous les arguments de ligne de commande ou tous les secrets (par exemple, la chaîne JDBC, l’URI de blob d’entrée et un jeton SAS pour l’accès). Vous pouvez également rendre cette configuration disponible pour le runtime Spark en utilisant Azure Key Vault ou des secrets Kubernetes. (Pour plus d’informations, consultez Utiliser le fournisseur Azure Key Vault pour la prise en charge du pilote CSI du magasin de secrets dans un cluster AKS). La configuration est injectée dans l’enclave uniquement si la preuve qu’elle fournit est validée par un fournisseur d’attestation. Le fournisseur d’attestation (par exemple, le Service Azure Attestation) est également défini dans la stratégie de sécurité.

  4. Avec l’aide du logiciel d’informatique confidentielle SCONE, l’ingénieur Données crée une image Docker confidentielle qui contient le code analytique chiffré et une version sécurisée de PySpark. SCONE fonctionne dans un cluster AKS avec Intel SGX activé (voir Créer un cluster AKS avec un pool de nœuds système), ce qui permet au conteneur de s’exécuter au sein d’une enclave. PySpark fournit la preuve que les données sensibles et le code d’application sont chiffrés et isolés dans un environnement d’exécution de confiance (TEE), ce qui signifie qu’aucune personne, aucun processus ni aucun journal n’a accès aux données en texte brut ou au code d’application.

  5. L’application PySpark est déployée sur le cluster AKS distant. Elle démarre et envoie sa preuve d’attestation au fournisseur d’attestation. Si la preuve est valide, un jeton d’attestation est retourné. L’infrastructure distante accepte le jeton d’attestation et le vérifie avec un certificat public trouvé dans le service Azure Attestation. Si le jeton est vérifié, il est presque certain que l’enclave est sécurisée et que ni les données ni le code d’application n’ont été ouverts en dehors de l’enclave. La configuration de la stratégie de sécurité (variables d’environnement, arguments de ligne de commande et secrets) est ensuite injectée dans les enclaves PySpark.

  6. Vous pouvez mettre à l’échelle horizontalement l’exécution de PySpark sur plusieurs nœuds Kubernetes. Toutes les instances PySpark communiquent sur un canal chiffré, et tous les fichiers qui doivent être écrits dans leurs systèmes de fichiers locaux (par exemple, des fichiers aléatoires) sont chiffrés.

  7. Les résultats de l’analyse sont chiffrés et chargés dans une base de données Azure SQL avec Always Encrypted (qui utilise le chiffrement au niveau des colonnes). L’accès aux données de sortie et aux clés de chiffrement peut être accordé de manière sécurisée à d’autres applications confidentielles (par exemple, dans un pipeline) en utilisant le même type de stratégie de sécurité et de preuve d’attestation basée sur le matériel qui est décrit dans cet article.

Composants

  • Azure Attestation est une solution unifiée qui vérifie à distance la fiabilité d’une plateforme. Azure Attestation vérifie également à distance l’intégrité des fichiers binaires qui s’exécutent dans la plateforme. Utilisez Azure Attestation pour établir une approbation avec l’application confidentielle.

  • Les nœuds d’informatique confidentielle Azure sont hébergés sur une série VM spécifique qui peut exécuter des charges de travail sensibles sur AKS au sein d’un TEE basé sur le matériel. Dans cet environnement, le code de niveau utilisateur peut allouer des régions privées de mémoire, appelées enclaves. Les nœuds d’informatique confidentielle peuvent prendre en charge les conteneurs confidentiels ou les conteneurs reconnaissant les enclaves.

  • Azure Kubernetes Service simplifie le processus de déploiement et de gestion d’un cluster Kubernetes.

  • Apache Spark est un moteur multilangage Open Source permettant d’exécuter l’engineering données, la science des données et le machine learning sur des machines mononœuds et des clusters multinœuds, comme les pods Kubernetes.

  • Azure SQL Database offre désormais Always Encrypted avec enclaves sécurisées, en développant les fonctionnalités d’informatique confidentielle de la technologie Always Encrypted de SQL Server pour y ajouter le chiffrement sur place et des requêtes confidentielles enrichies.

  • SCONE prend en charge l’exécution d’applications confidentielles dans des conteneurs qui s’exécutent à l’intérieur d’un cluster Kubernetes.

  • La plateforme SCONE est une solution de Scontain, un éditeur de logiciels indépendant et partenaire Azure.

Autres solutions

Occlum est un système d’exploitation de bibliothèque (LibOS) multiprocessus, à mémoire sécurisée, pour Intel SGX. Occlum permet aux applications héritées de s’exécuter sur Intel SGX avec peu ou pas de modifications du code source. Occlum protège de manière transparente la confidentialité des charges de travail utilisateur, tout en facilitant la migration vers des applications Docker existantes. Occlum prend en charge les applications Java.

L’équipe d’ingénierie SCONE gère une image conteneur Apache Spark qui exécute la dernière version de Spark. Fortanix est une alternative qui n’est pas spécifique d’Apache Spark et qui vous permet de déployer des conteneurs confidentiels pour les utiliser avec votre application conteneurisée. Fortanix offre la flexibilité dont vous avez besoin pour exécuter et gérer l’ensemble le plus vaste d’applications : des applications existantes, de nouvelles applications d’enclave natives et des applications prépackagées.

Détails du scénario

Il y a une croissance exponentielle de jeux de données, ce qui aboutit à l’examen de plus en plus poussé de la façon dont les données sont exposées, du point de vue de la confidentialité et de la conformité des données des consommateurs. Dans ce contexte, l’informatique confidentielle devient un outil important afin d’aider les organisations à répondre à leurs besoins de confidentialité et de sécurité pour les données métier et celles des consommateurs. Les organisations peuvent obtenir de nouveaux insights à partir de données réglementées si elles sont traitées de manière conforme. L’informatique confidentielle est particulièrement utile dans les scénarios où le traitement des données de manière confidentielle nécessite l’échelle fournie par le cloud computing.

La technologie de l’informatique confidentielle chiffre les données en mémoire et les traite uniquement après vérification ou attestationde l’environnement cloud. L’informatique confidentielle empêche l’accès aux données par les opérateurs cloud, les administrateurs malveillants et les logiciels privilégiés, comme l’hyperviseur. Elle permet également de protéger les données tout au long de leur cycle de vie, quand les données sont au repos, en transit et même désormais quand elles sont utilisées.

Les conteneurs confidentiels sur Azure Kubernetes Service (AKS) fournissent l’infrastructure nécessaire pour que les clients puissent utiliser des applications populaires, comme Apache Spark, pour le nettoyage des données et l’entraînement du machine learning. Cet article présente la solution offerte par l’informatique confidentielle Azure pour exécuter une application Apache Spark sur un cluster AKS en utilisant des pools de nœuds avec Intel Software Guard Extensions (Intel SGX). Les données de ce traitement sont stockées de manière sécurisée dans Azure SQL Database en utilisant Always Encrypted avec enclaves sécurisées.

Notes

Dans ce contexte, l’analytique des données confidentielles signifie l’exécution d’analyses sur les données sensibles sans risquer l’exfiltration des données. L’exfiltration des données peut se faire par une violation de l’accès du conteneur au niveau de la racine, à la fois en interne (par exemple, par un administrateur malveillant) ou en externe (par la compromission du système).

L’analytique des données confidentielles vous aide à répondre à vos besoins les plus hauts en matière de sécurité et de confidentialité en supprimant du calcul les parties non fiables, comme l’opérateur cloud et les administrateurs du service ou invités. Cette méthode permet de répondre aux besoins de conformité des données à travers des garanties basées sur le matériel.

Cas d’usage potentiels

De nombreux secteurs, en particulier les services financiers, protègent leurs données en utilisant l’informatique confidentielle avec les objectifs suivants :

Considérations

Ces considérations implémentent les piliers d’Azure Well-Architected Framework qui est un ensemble de principes directeurs qui permettent d’améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Microsoft Azure Well-Architected Framework.

Les enclaves confidentielles Azure qui utilisent des machines virtuelles de série DCsv3 et DCdsv3 offrent de grandes tailles de mémoire pour permettre l’exécution d’applications nécessitant de nombreuses ressources de mémoire, comme l’analytique. Ce scénario utilise des machines virtuelles de série DCsv3 compatibles avec Intel SGX. Vous pouvez uniquement déployer certaines tailles dans certaines régions. Pour plus d’informations, consultez Démarrage rapide : Déployer une machine virtuelle d’informatique confidentielle Azure dans la Place de marché et Disponibilité des produits par région.

Sécurité

La sécurité fournit des garanties contre les attaques délibérées, et contre l’utilisation abusive de vos données et systèmes importants. Pour plus d’informations, consultez Vue d’ensemble du pilier Sécurité.

Les deux facteurs principaux en matière de sécurité pour ce scénario sont les enclaves sécurisées et l’attestation.

Assurances d’enclave

Les administrateurs Kubernetes, ou tout utilisateur privilégié avec le niveau d’accès le plus élevé (par exemple, root), ne peuvent pas inspecter le contenu en mémoire, ou le code source des pilotes ou des exécuteurs. Le cache de pages d’enclave (EPC) est une partition de mémoire spécialisée dans les machines virtuelles confidentielles Azure utilisées par les enclaves ou les conteneurs confidentiels. Les machines virtuelles de série DCsv3 et DCdsv3 sont également dotées d’une mémoire non chiffrée normale pour exécuter les applications qui n’ont pas besoin de l’enclave sécurisée. Pour plus d’informations sur l’utilisation d’Intel SGX pour les enclaves, consultez Créer avec des enclaves SGX.

Attestation

L’attestation est un mécanisme qui fournit à un client, ou à un tiers, la preuve cryptographique que l’environnement d’exécution d’une application est digne de confiance, y compris son matériel et ses logiciels, avant l’échange de données. L’attestation distante garantit que votre charge de travail n’a pas été falsifiée pendant le déploiement sur un hôte non approuvé, comme une instance VM ou un nœud Kubernetes qui s’exécute dans le cloud. Dans ce processus, la preuve d’attestation fournie par le matériel Intel SGX est analysée par un fournisseur d’attestation.

Pour effectuer une attestation distante sur une application SCONE (comme des pods pilote et exécuteur Spark), deux services sont nécessaires :

  • Service d’attestation locale (LAS) : il s’agit d’un service local qui s’exécute sur l’hôte non approuvé (machine virtuelle du pool de nœuds AKS) et collecte la preuve d’attestation fournie par Intel SGX sur l’application en cours d’attestation. Selon la méthode de déploiement d’applications de SCONE, cette preuve est signée et transférée au service de configuration et d’attestation (CAS).

  • CAS : il s’agit du service central qui gère les stratégies de sécurité (appelées sessions SCONE), la configuration et les secrets. CAS compare la preuve d’attestation collectée par LAS aux stratégies de sécurité de l’application (qui sont définies par le propriétaire de l’application) pour décider si l’enclave est digne de confiance. Si c’est le cas, CAS autorise l’exécution de l’enclave et SCONE y injecte de manière sécurisée la configuration et les secrets. Pour en savoir plus sur CAS et ses fonctionnalités, comme la génération de secrets et le contrôle d’accès, consultez SCONE Configuration and Attestation Service.

Ce scénario utilise un CAS public fourni par SCONE dans un but de démonstration et de simplicité, et déploie le service LAS pour qu’il s’exécute comme un DaemonSet sur chaque nœud AKS.

Optimisation des coûts

L’optimisation des coûts consiste à examiner les moyens de réduire les dépenses inutiles et d’améliorer l’efficacité opérationnelle. Pour plus d’informations, consultez Vue d’ensemble du pilier d’optimisation des coûts.

Pour explorer le coût d’exécution de ce scénario, utilisez la calculatrice de prix Azure, qui préconfigure tous les services Azure. Notez les licences supplémentaires demandées par le partenaire pour exécuter des charges de travail de production.

Déployer ce scénario

Le déploiement de ce scénario implique les étapes générales suivantes :

  • Accédez à l’image de base PySpark qui est utilisée dans ce scénario à partir du registre de conteneurs de SCONE : consultez registry.scontain.com:5050 :5050 sur SCONE curated images.

  • Clonez le projet de démo sur GitHub, Confidential Data Analytics with Apache Spark on Intel SGX Confidential Containers. Ce projet contient toutes les ressources nécessaires, les étapes de déploiement et le code source pour reproduire la démo.

  • Déployez Always Encrypted with secure enclaves in Azure SQL Database - Demos. Ces démos utilisent un jeu de données confidentiel, ContosoHR, qui est inclus. Ce scénario déchiffre les données confidentielles en texte clair à l’intérieur de l’enclave des conteneurs Spark.

  • Déployez un pool de nœuds de cluster AKS compatibles Intel SGX. Pour obtenir des instructions, consultez Démarrage rapide : Déployer un cluster AKS avec des nœuds d’informatique confidentielle en utilisant Azure CLI.

  • Déployez le service d’attestation locale SCONE sur le cluster en utilisant le manifeste Kubernetes inclus.

  • Créez l’image chiffrée avec le logiciel d’informatique confidentielle SCONE et poussez-la vers votre propre registre de conteneurs Azure. Le dépôt a une application de démo qui compte le nombre de lignes dans les enregistrements de trajets des taxis jaunes de New York, un jeu de données ouvert contenant des heures, des localisations, des tarifs et d’autres données relatives aux courses de taxi. Vous pouvez l’adapter à vos besoins spécifiques.

  • Déployez l'application Spark en exécutant la commande spark-submit. Elle déploie un pod de pilote et un nombre configurable de pods d’exécuteur (la démo en utilise trois) qui exécutent les tâches et rapportent les résultats d’analyse au pilote. Toutes les communications sont chiffrées.

Autre alternative, la machine virtuelle SCONE Confidential PySpark on Kubernetes comprend la même démo, que vous pouvez reproduire dans un cluster minikube local. Pour plus d’informations, consultez la documentation officielle : SCONE PySpark virtual machine.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Auteur principal :

Autre contributeur :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étapes suivantes