Bearbeiten

Big Data-Analysen für Confidential Computing mit Apache Spark in Kubernetes

Azure Kubernetes Service (AKS)
Azure SQL-Datenbank
Azure Data Lake

Diese Lösung verwendet Confidential Computing in Kubernetes, um Big Data-Analysen mit Apache Spark in vertraulichen Containern mit Daten aus Azure Data Lake und Azure SQL-Datenbank auszuführen. Confidential Computing wird von Intel Software Guard Extensions und AMD EPYCTM-Prozessoren mit Secure Encrypted Virtualization-Secure Nested Paging bereitgestellt. Weitere Informationen zur Bereitstellung eines AKS-Clusters mit vertraulichen AMD SEV-SNP-VMs finden Sie unter Unterstützung vertraulicher VM-Knotenpools auf AKS mit vertraulichen AMD SEV-SNP-VMs. Weitere Informationen über die Bereitstellung eines AKS-Clusters mit Intel SGX-Agentenknoten für vertrauliche Datenverarbeitung finden Sie unter Bereitstellen eines AKS-Clusters mit Intel SGX-Agentenknoten für vertrauliche Datenverarbeitung mithilfe der Azure CLI.

Apache®, Apache Ignite, Ignite und das Flammenlogo sind entweder eingetragene Marken oder Marken der Apache Software Foundation in den USA und/oder anderen Ländern. Die Verwendung dieser Markierungen impliziert kein Endorsement durch die Apache Software Foundation.

Aufbau

Diagramm vertraulicher Big Data-Analysen mit Apache Spark, Azure SQL Always Encrypted, AKS und Secure Container Environment (SCONE).

Laden Sie eine PowerPoint-Datei zu dieser Architektur herunter.

Das obige Diagramm zeigt die Architektur: ein skalierbares Muster für die verteilte Verarbeitung größerer Datasets. Außerdem werden vertrauliche Analysen für relationale Datenbank-Engines und das Speichern vertraulicher Daten präsentiert. Insbesondere kann die Container-Spark-App Datasets aus zwei Datenquellen verarbeiten, wie dargestellt:

  1. Azure Data Lake Storage – Parquet-/Delta Lake-Dateien: Wie in der Beispieldemonstration gezeigt, kann eine Spark-Bereitstellung mit vier Pods – ein Treiber und drei Executors in der Secure Container Environment (SCONE)-Runtime – 1,5 Milliarden Zeilen von Parquet-/Delta Lake-Dateien verarbeiten, die innerhalb von zwei Minuten oder ungefähr 131 Sekunden in Azure Data Lake Storage gespeichert werden.

  2. Azure SQL-Datenbank – Always Encrypted mit Secure Enclaves: In diesem Beispiel wird Spark verwendet, um mithilfe des Azure SQL JDBC-Treibers innerhalb der Spark-Containerenclave auf Always Encrypted-Daten als Klartext zuzugreifen, um Analyse- und Machine Learning-Pipelines ausführen zu können.

Sie können dieses Muster problemlos erweitern, um alle Datenquellen zu integrieren, die vom großen Ökosystem von Spark unterstützt werden.

Workflow

  1. Operator-Persona: Ein DevOps-Techniker stellt Kubernetes-Cluster, Namespaces, Dienstkonten und Knotenpools für vertrauliche virtuelle Computer (VM) (z. B. DC4s_v3) bereit.

  2. Entwickler-Persona: Ein Datentechniker verwendet PySpark , um eine Analyseanwendung zu schreiben, die für die Analyse großer Datenmengen konzipiert ist.

  3. Datenverwalter-Persona: Der Daten- oder Sicherheitstechniker erstellt eine Sicherheitsrichtlinie für die PySpark-Anwendung aus einem freigegebenen Repository in der Organisation (eine einmalige Aktivität). Diese Richtlinie gibt den erwarteten Status der Daten und des App-Codes, die Mindestsicherheitsanforderungen für die Plattform und alle Umgebungsvariablen, Befehlszeilenargumente oder Geheimnisse (z. B. die JDBC-Zeichenfolge, den Eingabeblob-URI und ein SAS-Token für den Zugriff) an. Sie können diese Konfiguration auch für die Spark-Runtime verfügbar machen, indem Sie Kubernetes-Geheimnisse oder Azure Key Vault verwenden. (Weitere Informationen finden Sie unter Verwenden des Azure Key Vault Provider for Secrets Store CSI-Treibers in einem AKS-Cluster). Die Konfiguration wird nur dann in die Enclave eingefügt, wenn der von ihr übermittelte Beweis von einem Nachweisanbieter überprüft wird. Der Nachweisanbieter (z. B. Azure Attestation Service) wird ebenfalls in der Sicherheitsrichtlinie definiert.

  4. Mithilfe der Confidential Computing-Software SCONE erstellt der Datentechniker ein vertrauliches Docker-Image, das den verschlüsselten Analysecode und eine sichere Version von PySpark enthält. SCONE funktioniert in einem AKS-Cluster, für den Intel SGX aktiviert ist (siehe Erstellen eines AKS-Clusters mit einem Systemknotenpool), was die Ausführung des Containers in einer Enclave ermöglicht. PySpark stellt einen Beweis dafür zur Verfügung, dass die vertraulichen Daten und der App-Code in einer Trusted Execution Environment (TEE) verschlüsselt und isoliert sind. Dies bedeutet, dass keine Menschen, keine Prozesse und keine Protokolle Zugriff auf die Klartextdaten oder den Anwendungscode haben.

  5. Die PySpark-Anwendung wird im AKS-Remotecluster bereitgestellt. Er startet und sendet seinen Nachweisbeweis an den Nachweisanbieter. Wenn der Beweis gültig ist, wird ein Nachweistoken zurückgegeben. Die Remoteinfrastruktur akzeptiert das Nachweistoken und überprüft es mithilfe eines öffentlichen Zertifikats, das im Azure Attestation-Dienst zu finden ist. Wenn das Token überprüft wurde, kann mit nahezu absoluter Sicherheit gesagt werden, dass die Enclave sicher ist und dass weder Daten noch Anwendungscode außerhalb der Enclave verfügbar gemacht wurden. Die Konfiguration in der Sicherheitsrichtlinie (Umgebungsvariablen, Befehlszeilenargumente und Geheimnisse) wird dann in PySpark-Enclaves eingefügt.

  6. Sie können die PySpark-Ausführung horizontal auf mehrere Kubernetes-Knoten skalieren. Alle PySpark-Instanzen kommunizieren über einen verschlüsselten Kanal, und alle Dateien, die in ihre lokalen Dateisysteme geschrieben werden müssen (z. B. Shuffledateien), werden verschlüsselt.

  7. Die Ergebnisse der Analyse werden verschlüsselt und in eine Azure SQL-Datenbank mit Always Encrypted hochgeladen (die Verschlüsselung auf Spaltenebene verwendet). Der Zugriff auf die Ausgabedaten und Verschlüsselungsschlüssel kann anderen vertraulichen Anwendungen (z. B. in einer Pipeline) mithilfe derselben Art von Sicherheitsrichtlinien und hardwarebasierten Nachweisbeweisen, die in diesem Artikel beschrieben werden, sicher gewährt werden.

Komponenten

  • Azure Attestation ist eine einheitliche Lösung, die remote die Vertrauenswürdigkeit einer Plattform überprüft. Azure Attestation überprüft außerdem remote die Integrität der Binärdateien, die auf der Plattform ausgeführt werden. Verwenden Sie Azure Attestation, um für Vertrauen zur vertraulichen Anwendung zu sorgen.

  • Azure Confidential Computing-Knoten werden auf einer bestimmten VM-Serie gehostet, die vertrauliche Workloads in AKS innerhalb einer hardwarebasierten TEE ausführen kann. In dieser Umgebung kann Code auf Benutzerebene private Speicherregionen zuordnen, die als Enclaves bezeichnet werden. Für vertrauliche Computingknoten werden sowohl vertrauliche Container als auch für Enclaves geeignete Container unterstützt.

  • Azure Kubernetes Service vereinfacht das Bereitstellen und Verwalten eines Kubernetes-Clusters.

  • Apache Spark ist eine Open-Source-Engine mit mehreren Sprachen zum Ausführen von Datentechnik, Data Science und maschinellem Lernen auf Computern mit nur einem Knoten und Clustern mit mehreren Knoten, z. B. Kubernetes-Pods.

  • Azure SQL-Datenbank bietet jetzt Always Encrypted mit Secure Enclaves und erweitert die Confidential Computing-Funktionen der Always Encrypted-Technologie von SQL Server um die direkte Verschlüsselung und umfangreiche vertrauliche Abfragen.

  • SCONE unterstützt die Ausführung vertraulicher Anwendungen in Containern, die in einem Kubernetes-Cluster ausgeführt werden.

  • Die SCONE-Plattform ist eine Lösung von Scontain, einem unabhängigen Softwareanbieter und Azure-Partner.

Alternativen

Occlum ist ein arbeitsspeichersicheres Multiprozess-Bibliotheksbetriebssystem (LibOS) für Intel SGX. Occlum ermöglicht die Ausführung von Legacyanwendungen unter Intel SGX mit wenig bis gar keinen Änderungen am Quellcode. Occlum schützt die Vertraulichkeit von Benutzerworkloads auf transparente Weise und erlaubt gleichzeitig eine einfache Migrationzu vorhandenen Dockeranwendungen. Occlum unterstützt Java-Apps.

Das SCONE-Entwicklungsteam verwaltet ein Apache Spark-Containerimage, das die neueste Version von Spark ausgeführt. Eine Alternative, die nicht spezifisch für Apache Spark ist, ist Fortanix, mit dem Sie vertrauliche Container für die Verwendung mit Ihrer Containeranwendung bereitstellen können. Fortanix bietet Ihnen die Flexibilität, die Sie zum Ausführen und Verwalten einer Vielzahl unterschiedlichster Anwendungen benötigen. Das schließt auch bereits vorhandene Anwendungen, neue Enclave-native Anwendungen sowie vorab gepackte Anwendungen ein.

Szenariodetails

Es gibt ein exponentielles Wachstum von Datasets, was dazu führte, dass die Untersuchung der Art und Weise, wie Daten verfügbar gemacht werden, sowohl aus Sicht des Datenschutzes als auch der Konformität der Verbraucher immer genauer untersucht wurde. In diesem Kontext wird vertrauliches Computing zu einem wichtigen Tool, um Organisationen bei der Erfüllung ihrer Datenschutz- und Sicherheitsanforderungen für Geschäfts- und Verbraucherdaten zu unterstützen. Organisationen können neue Erkenntnisse aus regulierten Daten gewinnen, wenn die Daten auf konforme Weise verarbeitet werden. Vertrauliches Computing ist besonders hilfreich in Szenarien, in denen die vom Cloud Computing bereitgestellte Skalierung erforderlich ist, um die Daten vertraulich zu verarbeiten.

Vertrauliches Computing-Technologie verschlüsselt Daten im Arbeitsspeicher und verarbeitet sie nur, nachdem die Cloudumgebung überprüft oder bestätigt wurde. Vertrauliches Computing verhindert den Datenzugriff durch Cloudbetreiber, böswillige Administratoren und privilegierte Software wie den Hypervisor. Darüber hinaus ist es hilfreich, Daten während des gesamten Lebenszyklus zu schützen – während die Daten ruhen, während der Übertragung und auch während ihrer Verwendung.

Vertrauliche Container in Azure Kubernetes Service (AKS) stellen die erforderliche Infrastruktur für Kunden zur Verwendung beliebter Anwendungen wie Apache Spark zum Durchführen von Datenbereinigung und Machine Learning-Training zur Verfügung. Dieser Artikel enthält eine Lösung, die Azure vertrauliches Computing für die Ausführung einer Apache Spark-Anwendung in einem AKS-Cluster mithilfe von Knotenpools mit Intel Software Guard Extensions (Intel SGX) bietet. Die Daten aus dieser Verarbeitung werden sicher in Azure SQL-Datenbank gespeichert, indem Always Encrypted Secure Enclaves verwendet werden.

Hinweis

Vertrauliche Datenanalysen in diesem Kontext sollen die Ausführung von Analysen für sensible Daten mit Bedenken gegen die Datenexfiltration implizieren. Dies schließt eine potenzielle Sicherheitsverletzung des Containerzugriffs auf der Stammebene ein, sowohl intern (z. B. von einem nicht autorisierten Administrator) als auch extern (durch Systemkompromittung).

Vertrauliche Datenanalysen helfen dabei, die höchsten Anforderungen an Sicherheit und Vertraulichkeit zu erfüllen, indem sie nicht vertrauenswürdige Parteien aus der Berechnung entfernen, z. B. Cloudoperator und Dienst- oder Gastadministratoren. Diese Methode trägt dazu bei, die Anforderungen an die Datenkonformität durch hardwarebasierte Garantien zu erfüllen.

Mögliche Anwendungsfälle

Vertrauliches Computing wird in vielen Branchen, besonders Finanzbranchen, wie folgt genutzt, um die eigenen Daten zu schützen:

Überlegungen

Diese Überlegungen setzen die Säulen des Azure Well-Architected Framework um, das eine Reihe von Leitprinzipien enthält, die zur Verbesserung der Qualität eines Workloads verwendet werden können. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Azure Confidential Enclaves, die virtuelle Computer der DCsv3- und DCdsv3-Serie verwenden, bieten große Arbeitsspeichergrößen, um speicherintensive Anwendungen wie Analysen ausführen zu können. In diesem Szenario werden VMs der Intel SGX-fähigen DCsv3-Serie verwendet. In bestimmten Regionen können Sie nur bestimmte Größen bereitstellen. Weitere Informationen finden Sie unter Quickstart: Bereitstellen eines virtuellen Azure Confidential Computing-Computers im Marketplace und Verfügbare Produkte nach Region.

Sicherheit

Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

Zwei Hauptfaktoren für die Sicherheit in diesem Szenario sind Secure Enclaves und der Nachweis.

Enclave-Zusicherungen

Kubernetes-Administratoren oder alle privilegierten Benutzer mit der höchsten Zugriffsebene (z. B. root) können den Inhalt des Arbeitsspeichers oder den Quellcode von Treibern oder Executors nicht überprüfen. Der Enclave-Seitencache (Enclave Page Cache, EPC) ist eine spezialisierte Speicherpartition in Azure Confidential VMs, die von Enclaves oder vertraulichen Containern verwendet werden. VMs der DCsv3- und DCdsv3-Serie enthalten auch regulären, unverschlüsselten Speicher zum Ausführen von Apps, die die Secure Enclave nicht benötigen. Weitere Informationen zur Verwendung von Intel SGX für Enclaves finden Sie unter Erstellen mit SGX-Enclaves.

Nachweis

Der Nachweis ist ein Mechanismus, der einem Client oder einer Partei kryptografische Beweise liefert, dass die Umgebung, in der eine App ausgeführt wird, vertrauenswürdig ist, einschließlich der Hardware und Software, bevor Daten ausgetauscht werden. Der Remote-Nachweis stellt sicher, dass Ihre Workload nicht manipuliert wurde, wenn sie auf einem nicht vertrauenswürdigen Host bereitgestellt wird, z. B. einer VM-Instanz oder einem Kubernetes-Knoten, der in der Cloud ausgeführt wird. In diesem Prozess werden von Intel SGX-Hardware bereitgestellte Nachweisbeweis von einem Nachweisanbieter analysiert.

Für den Remote-Nachweis für eine SCONE-Anwendung (z. B. Spark-Treiber und Executor-Pods) sind zwei Dienste erforderlich:

  • Lokaler Nachweisdienst (LOCAL Attestation Service, LAS): Ein lokaler Dienst, der auf dem nicht vertrauenswürdigen Host (AKS-Knotenpool-VM) ausgeführt wird und den Nachweisbeweis sammelt, der von Intel SGX zur nachgewiesenen Anwendung bereitgestellt wird. Aufgrund der SCONE-Methode für die App-Bereitstellung wird dieser Beweis signiert und an den Konfigurations- und Nachweisdienst (CONFIGURATION and Attestation Service, CAS) weitergeleitet.

  • CAS: Ein zentraler Dienst, der Sicherheitsrichtlinien (sogenannte SCONE-Sitzungen), Konfiguration und Geheimnisse verwaltet. CAS vergleicht den Nachweisbeweis, der von LAS gesammelt wird, mit den Sicherheitsrichtlinien der Anwendung (die vom Anwendungsbesitzer definiert werden), um zu entscheiden, ob die Enclave vertrauenswürdig ist. Wenn dies der Standard ist, lässt CAS die Ausführung der Enclave zu, und SCONE fügt Konfiguration und Geheimnisse sicher in die Enclave ein. Weitere Informationen zu CAS und seinen Features, z. B. zur Generierung von Geheimnissen und zur Zugriffssteuerung, finden Sie unter SCONE-Konfigurations- und Nachweisdienst.

In diesem Szenario wird der Demonstration und Einfachheit halber ein öffentlicher CAS von SCONE verwendet, und das LAS wird für die Ausführung als DaemonSet auf jedem AKS-Knoten bereitgestellt.

Kostenoptimierung

Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Säule „Kostenoptimierung“.

Verwenden Sie den Azure-Preisrechner, um die Kosten für eine Umsetzung dieses Szenarios zu ermitteln. Dabei werden alle Azure-Dienste vorkonfiguriert. Beachten Sie die zusätzlichen Lizenzen, die der Partner zum Ausführen von Produktionsworkloads benötigt.

Bereitstellen dieses Szenarios

Die Bereitstellung in diesem Szenario umfasst die folgenden allgemeinen Schritte:

  • Erhalten Sie über die Containerregistrierung von SCONE Zugriff auf das PySpark-Basisimage, das in diesem Szenario verwendet wird. Weitere Informationen finden Sie unter registry.scontain.com:5050 unter SCONE zusammengestellte Images.

  • Klonen Sie das Demoprojekt auf GitHub Confidential Data Analytics with Apache Spark on Intel SGX Confidential Containerss. Dieses Projekt enthält alle erforderlichen Ressourcen, Bereitstellungsschritte und Quellcode, um die Demo zu reproduzieren.

  • Stellen Sie Always Encrypted mit Secure Enclaves in Azure SQL-Datenbank - Demos bereit. Diese Demos verwenden ein vertrauliches Dataset, ContosoHR, das enthalten ist. In diesem Szenario werden vertrauliche Daten in Klartext innerhalb der Spark-Container-Enclave entschlüsselt.

  • Stellen Sie einen Intel AKS-Clusterknotenpool mit SGX-Aktivierung bereit. Anweisungen finden Sie unter Schnellstart: Bereitstellen eines AKS-Clusters mit Confidential Computing-Knoten über die Azure CLI.

  • Stellen Sie den SCONE Local Attestation Service mithilfe des enthaltenen Kubernetes-Manifests für den Cluster zur Verfügung.

  • Erstellen Sie das verschlüsselte Image mit SCONE Confidential Computing-Software, und übertragen Sie es per Push Azure Container Registry. Das Repository verfügt über eine Demoanwendung, die die Anzahl der Linien in den Yellow Taxi Trip-Datensätzen von New York City zählt, ein offenes Dataset mit Zeiten, Orten, Fahrzeiten und anderen Daten im Zusammenhang mit Taxifahrten. Sie können dies an Ihre spezifischen Bedürfnisse anpassen.

  • Stellen Sie die Spark-Anwendung durch Ausführen des Befehls spark-submit aus. Dadurch werden ein Treiberpod und eine konfigurierbare Anzahl von Executor-Pods (die Demo verwendet drei) bereitgestellt, die die Aufgaben ausführen und die Analyseergebnisse an den Treiber melden. Die gesamte Kommunikation wird verschlüsselt.

Alternativ dazu enthält SCONE Confidential PySpark in Kubernetes (ein virtueller Computer) dieselbe Demo, die Sie in einem lokalen Minikube-Cluster reproduzieren können. Weitere Informationen finden Sie in der offiziellen Dokumentation: virtueller SCONE PySpark-Computer.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautor:

Andere Mitwirkende:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte