Analisi dei Big Data sul confidential computing con Apache Spark in Kubernetes

Servizio Azure Kubernetes
database SQL di Azure
Azure Data Lake

Questa soluzione usa confidential computing in Kubernetes per eseguire analisi dei Big Data con Apache Spark all'interno di contenitori riservati con dati di Azure Data Lake e database SQL di Azure. Il confidential computing viene fornito dai processori Intel Software Guard Extensions e AMD EPYCTM con paging annidato Secure Encrypted Virtualization-Secure. Per altre informazioni sul provisioning di un cluster del servizio Azure Kubernetes con MACCHINE virtuali riservate AMD SEV-SNP, vedere Supporto del pool di nodi di macchine virtuali riservate nel servizio Azure Kubernetes con VM riservate AMD SEV-SNP. Per altre informazioni sulla distribuzione di un cluster del servizio Azure Kubernetes con nodi dell'agente Intel SGX di confidential computing, vedere Distribuire un cluster del servizio Azure Kubernetes con nodi agente Intel SGX con l'interfaccia della riga di comando di Azure.

Apache®, Apache Ignite, Ignite e il logo con fiamma sono marchi o marchi registrati di Apache Software Foundation negli Stati Uniti e/o in altri paesi. L'uso di questi marchi non implica alcuna approvazione da parte di Apache Software Foundation.

Architettura

Diagramma dell'analisi dei Big Data riservati con Apache Spark, Azure SQL Always Encrypted, servizio Azure Kubernetes e Ambiente contenitore sicuro.

Scaricare un file PowerPoint di questa architettura.

Il diagramma precedente descrive l'architettura: un modello scalabile per l'elaborazione di set di dati di dimensioni maggiori in modo distribuito. Illustra anche l'analisi riservata sui motori di database relazionali e l'archiviazione di dati riservati. In particolare, l'app Spark in contenitori può elaborare i set di dati da due origini dati, come illustrato di seguito:

  1. Azure Data Lake Storage - File Parquet/Delta Lake: come illustrato nella dimostrazione di esempio, una distribuzione spark a quattro pod, un driver, tre executor nel runtime SCONE (Secure Container Environment), è in grado di elaborare 1,5 miliardi di righe di file Parquet/Delta Lake archiviati in Azure Data Lake Storage entro due minuti o circa 131 secondi.

  2. Database SQL di Azure - Always Encrypted con enclave sicuri: questo esempio usa Spark per accedere ai dati Always Encrypted come testo non crittografato usando il driver JDBC SQL di Azure all'interno dell'enclave del contenitore Spark per eseguire pipeline di analisi e machine learning.

È possibile estendere facilmente questo modello per includere tutte le origini dati supportate dall'ecosistema di Grandi dimensioni di Spark.

Workflow

  1. Utente operatore: un tecnico DevOps effettua il provisioning di cluster Kubernetes, spazi dei nomi, account di servizio e pool di nodi di macchine virtuali riservate (ad esempio, DC4s_v3).

  2. Developer persona: un data engineer usa PySpark per scrivere un'applicazione di analisi progettata per analizzare grandi volumi di dati.

  3. Persona responsabile dei dati: il data o il tecnico della sicurezza crea un criterio di sicurezza per l'applicazione PySpark da un repository condiviso nell'organizzazione (un'attività monouso). Questo criterio specifica lo stato previsto dei dati e del codice dell'app, i requisiti minimi di sicurezza per la piattaforma e le variabili di ambiente, gli argomenti della riga di comando o i segreti , ad esempio la stringa JDBC, l'URI del BLOB di input e un token di firma di accesso condiviso per l'accesso. È anche possibile rendere disponibile questa configurazione per il runtime di Spark usando i segreti Kubernetes o Azure Key Vault. (Per ulteriori informazioni, vedere Usare il provider di Azure Key Vault per il driver CSI dell'archivio segreti in un cluster del servizio Azure Kubernetes). La configurazione viene inserita nell'enclave solo se l'evidenza fornita viene convalidata da un provider di attestazioni. Il provider di attestazioni (per esempio, Servizio di attestazione Azure), viene definito anche nei criteri di sicurezza.

  4. Con l'aiuto del software di confidential computing SCONE, il data engineer crea un'immagine Docker riservata che contiene il codice di analisi crittografato e una versione sicura di PySpark. SCONE funziona all'interno di un cluster del servizio Azure Kubernetes con Intel SGX abilitato (vedere Creare un cluster del servizio Azure Kubernetes con un pool di nodi di sistema), che consente l'esecuzione del contenitore all'interno di un enclave. PySpark fornisce prove che i dati sensibili e il codice dell'app vengono crittografati e isolati in un ambiente di esecuzione attendibile (TEE), il che significa che nessun utente, nessun processo e nessun log ha accesso ai dati di testo non crittografato o al codice dell'applicazione.

  5. L'applicazione PySpark viene distribuita nel cluster del servizio Azure Kubernetes remoto. Avvia e invia l'evidenza di attestazione al provider di attestazioni. Se l'evidenza è valida, viene restituito un token di attestazione. L'infrastruttura remota accetta il token di attestazione e lo verifica con un certificato pubblico trovato nel servizio di attestazione di Azure. Se il token viene verificato, è quasi certo che l'enclave sia sicuro e che i dati o il codice dell'app non siano stati aperti all'esterno dell'enclave. La configurazione nei criteri di sicurezza (variabili di ambiente, argomenti della riga di comando e segreti) viene quindi inserita in enclave PySpark.

  6. È possibile ridimensionare orizzontalmente l'esecuzione di PySpark in diversi nodi Kubernetes. Tutte le istanze di PySpark comunicano su un canale crittografato e tutti i file vengono crittografati che devono essere scritti nei file system locali, ad esempio file casuali.

  7. I risultati dell'analisi vengono crittografati e caricati in un database SQL di Azure con Always Encrypted (che usa la crittografia a livello di colonna). L'accesso ai dati di output e alle chiavi di crittografia può essere concesso in modo sicuro ad altre applicazioni riservate (ad esempio, in una pipeline) usando lo stesso tipo di criteri di sicurezza e prove di attestazione basate su hardware descritte in questo articolo.

Componenti

  • L’attestazione di Azure è una soluzione unificata che verifica in remoto l'attendibilità di una piattaforma. Attestazione di Azure verifica anche in remoto l'integrità dei file binari eseguiti nella piattaforma. Usare l’attestazione di Azure per stabilire l'attendibilità con l'applicazione riservata.

  • I nodi di confidential computing di Azure sono ospitati in una serie di macchine virtuali specifica in grado di eseguire carichi di lavoro sensibili nel servizio Azure Kubernetes all'interno di un ambiente tee basato su hardware. In questo ambiente, il codice a livello di utente può allocare aree private di memoria, note come enclave. I nodi di confidential computing possono supportare contenitori riservati o contenitori in grado di riconoscere l'enclave.

  • servizio Azure Kubernetes semplifica il processo di distribuzione e gestione di un cluster Kubernetes.

  • Apache Spark è un motore open source multi-language per l'esecuzione di progettazione dei dati, data science e Machine Learning sia in computer a nodo singolo che in cluster multinodo, ad esempio pod Kubernetes.

  • Database SQL di Azure ora offre Always Encrypted con enclave sicure, espandendo le funzionalità di confidential computing della tecnologia Always Encrypted di SQL Server per includere la crittografia sul posto e le query riservate avanzate.

  • Secure Container Environment (SCONE) supporta l'esecuzione di applicazioni riservate in contenitori eseguiti all'interno di un cluster Kubernetes.

  • La piattaforma SCONE è una soluzione di Scontain, fornitore di software indipendente e partner di Azure.

Alternative

Occlum è un sistema operativo libreria (LibOS) multiprocesso con protezione della memoria per Intel SGX. Occlum consente l'esecuzione di applicazioni legacy su Intel SGX con modifiche minime o nulle al codice sorgente. Occlum protegge in modo trasparente la riservatezza dei carichi di lavoro degli utenti, consentendo al contempo una facile migrazione alle applicazioni Docker esistenti. Occlum supporta le app Java.

Il team di progettazione SCONE gestisce un'immagine del contenitore Apache Spark che esegue la versione più recente di Spark. Un'alternativa non specifica di Apache Spark è Fortanix, con cui è possibile distribuire contenitori riservati da usare con l'applicazione in contenitori. Fortanix offre la flessibilità necessaria per eseguire e gestire il set più ampio di applicazioni: applicazioni esistenti, nuove applicazioni native dell'enclave e applicazioni preassemblate.

Dettagli dello scenario

C'è una crescita esponenziale dei set di dati, che ha portato a un esame crescente del modo in cui i dati vengono esposti dalle prospettive di privacy e conformità dei dati degli utenti. In questo contesto, il confidential computing diventa uno strumento importante per aiutare le organizzazioni a soddisfare le esigenze di privacy e sicurezza per i dati aziendali e consumer. Le organizzazioni possono ottenere nuove informazioni dettagliate dai dati regolamentati se i dati vengono elaborati in modo conforme. Il confidential computing è particolarmente utile negli scenari in cui è necessaria la scalabilità fornita dal cloud computing per elaborare i dati in modo riservato.

La tecnologia confidential computing crittografa i dati in memoria e lo elabora solo dopo la verifica o l'attestazione dell'ambiente cloud. Il confidential computing impedisce l'accesso ai dati da parte di operatori cloud, amministratori dannosi e software con privilegi, ad esempio l'hypervisor. Consente anche di proteggere i dati durante tutto il ciclo di vita, mentre i dati sono inattivi, in transito e anche mentre sono in uso.

I contenitori riservati in servizio Azure Kubernetes (servizio Azure Kubernetes) forniscono l'infrastruttura necessaria per consentire ai clienti di usare applicazioni comuni, ad esempio Apache Spark, per eseguire la pulizia dei dati e il training di Machine Learning. Questo articolo presenta una soluzione offerta dal confidential computing di Azure per l'esecuzione di un'applicazione Apache Spark in un cluster servizio Azure Kubernetes usando pool di nodi con Intel Software Guard Extensions (Intel SGX). I dati di tale elaborazione vengono archiviati in modo sicuro in database SQL di Azure usando Always Encrypted con enclave sicuri.

Nota

L'analisi dei dati riservati in questo contesto è destinata a implicare l'esecuzione di analisi sui dati sensibili tenendo conto della tranquillità rispetto all'esfiltrazione dei dati. Ciò include una potenziale violazione dell'accesso al contenitore a livello radice, sia internamente (ad esempio da un amministratore non autorizzato) che esternamente (da compromissione del sistema).

L'analisi dei dati riservati consente di soddisfare le esigenze più elevate di sicurezza e riservatezza rimuovendo dal calcolo le parti non attendibili, ad esempio l'operatore cloud e il servizio o gli amministratori guest. Questo metodo consente di soddisfare le esigenze di conformità dei dati tramite garanzie basate su hardware.

Potenziali casi d'uso

Molti settori, specialmente quello dei servizi finanziari, proteggono i dati usando il confidential computing per questi scopi:

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Microsoft Azure Well-Architected Framework.

Le enclave riservate di Azure che usano macchine virtuali serie DCsv3 e DCdsv3 offrono grandi dimensioni di memoria per consentire l'esecuzione di applicazioni a elevato utilizzo di memoria, come l'analisi. Questo scenario usa macchine virtuali serie DCsv3 abilitate per Intel SGX. È tuttavia possibile distribuire solo determinate dimensioni in determinate aree. Per altre informazioni, vedere Avvio rapido: Distribuire una VM di Azure Confidential Computing nel Marketplace e Prodotti disponibili per area.

Sicurezza

La sicurezza offre garanzie contro attacchi intenzionali e l'abuso di dati e sistemi preziosi. Per altre informazioni, vedere Panoramica del pilastro della sicurezza.

Due fattori principali della sicurezza per questo scenario sono enclave sicuri e attestazioni.

Garanzie dell'enclave

Gli amministratori di Kubernetes o qualsiasi utente con privilegi con il massimo livello di accesso (ad esempio, root) non può esaminare il contenuto in memoria o il codice sorgente dei driver o degli executor. La cache delle pagine dell'enclave (EPC) è una partizione di memoria specializzata nelle macchine virtuali riservate di Azure che usano enclave o contenitori riservati. Anche le macchine virtuali serie DCsv3 e DCdsv3 sono dotate di memoria normale e non crittografata per eseguire app che non richiedono l'enclave sicuro. Per altre informazioni sull'uso di Intel SGX per le enclave, vedere Creare con enclave SGX.

Attestazione

L'attestazione è un meccanismo che fornisce a un client, o a un'entità, prove crittografiche che l'ambiente in cui un'app è in esecuzione è attendibile, inclusi l'hardware e il software, prima di scambiare dati. L'attestazione remota garantisce che il carico di lavoro non sia stato manomesso quando viene distribuito in un host non attendibile, ad esempio un'istanza di macchina virtuale o un nodo Kubernetes in esecuzione nel cloud. In questo processo, le prove di attestazione fornite dall'hardware Intel SGX vengono analizzate da un provider di attestazione.

Per eseguire l'attestazione remota in un'applicazione SCONE (ad esempio i pod Spark Driver e Executor), sono necessari due servizi:

  • Servizio di attestazione locale (LAS): un servizio locale in esecuzione nella macchina virtuale del pool di nodi del servizio Azure Kubernetes (un host non attendibile) e raccoglie le prove di attestazione fornite da Intel SGX sull'applicazione da attestare. A causa del metodo di distribuzione dell'app da parte di SCONE, questa prova viene firmata e inoltrata al servizio di configurazione e attestazione (CAS).

  • CAS: servizio centrale che gestisce i criteri di sicurezza (denominati sessioni SCONE), configurazione e segreti. CAS confronta le prove di attestazione raccolte da LAS con i criteri di sicurezza dell'applicazione (definiti dal proprietario dell'applicazione) per decidere se l'enclave è attendibile. In caso affermativo, CAS consente l'esecuzione dell'enclave e SCONE inserisce in modo sicuro la configurazione e i segreti. Per altre informazioni su CAS e sulle relative funzionalità, ad esempio la generazione di segreti e il controllo di accesso, vedere Configurazione scone e servizio di attestazione.

Questo scenario usa un CAS pubblico fornito da SCONE per dimostrazione e semplicità e distribuisce LAS per l'esecuzione come DaemonSet in ogni nodo del servizio Azure Kubernetes.

Ottimizzazione dei costi

L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Panoramica del pilastro di ottimizzazione dei costi.

Per esplorare il costo di esecuzione di questo scenario, usare il calcolatore prezzi di Azure, che preconfigura tutti i servizi di Azure. Si notino le licenze aggiuntive richieste dal partner per eseguire carichi di lavoro di produzione.

Distribuire lo scenario

La distribuzione di questo scenario comporta i seguenti passaggi globali:

  • Ottenere l'accesso all'immagine di base PySpark usata in questo scenario dal registro contenitori di SCONE: vedere registry.scontain.com:5050 le immagini curate da SCONE.

  • Clonare il progetto demo in GitHub, Confidential Data Analytics con Apache Spark in contenitori riservati Intel SGX. Questo progetto contiene tutte le risorse necessarie, i passaggi di distribuzione e il codice sorgente per riprodurre la demo.

  • Distribuire Always Encrypted con enclave sicure nel database SQL di Azure - Demo. Queste demo usano un set di dati riservato, ContosoHR, incluso. Questo scenario decrittografa i dati riservati in testo non crittografato all'interno dell'enclave dei contenitori Spark.

  • Distribuire un pool di nodi del cluster del servizio Azure Kubernetes abilitato per Intel SGX. Per istruzioni, vedere Guida introduttiva: Distribuire un cluster del servizio Azure Kubernetes con nodi di confidential computing usando l'interfaccia della riga di comando di Azure.

  • Distribuire il servizio di attestazione locale SCONE nel cluster usando il manifesto Kubernetes incluso.

  • Creare l'immagine crittografata con software di confidential computing SCONE ed eseguirne il push nel proprio Registro Azure Container. Il repository ha un'applicazione demo che conta il numero di righe nei record delle corse dei taxi gialli di New York, un set di dati aperto di orari, località, tariffe e altri dati correlati alle corse dei taxi. È possibile adattare l'esempio alle proprie esigenze.

  • Distribuire l'applicazione eseguendo il comando spark-submit. In questo modo viene distribuito un pod driver e un numero configurabile di pod executor (la demo usa tre) che eseguono le attività e segnalano i risultati dell'analisi al driver. Tutte le comunicazioni vengono crittografate.

In alternativa, SCONE Confidential PySpark in Kubernetes, una macchina virtuale, include la stessa demo che è possibile riprodurre in un cluster minikube locale. Per ulteriori informazioni, consultare la documentazione ufficiale: Macchina virtuale SCONE PySpark.

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autore principale:

Altro collaboratore:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi