Analiza danych big data na temat poufnego przetwarzania za pomocą platformy Apache Spark na platformie Kubernetes

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

To rozwiązanie korzysta z poufnego przetwarzania na platformie Kubernetes do uruchamiania analizy danych big data za pomocą platformy Apache Spark wewnątrz poufnych kontenerów z danymi z usługi Azure Data Lake i usługi Azure SQL Database. Poufne przetwarzanie jest dostarczane przez rozszerzenia Intel Software Guard i procesoryTM AMD EPYC z funkcją Secure Encrypted Virtualization-Secure zagnieżdżone stronicowanie. Aby uzyskać więcej informacji na temat aprowizowania klastra usługi AKS przy użyciu poufnych maszyn wirtualnych AMD SEV-SNP, zobacz Poufne obsługa puli węzłów maszyn wirtualnych w usłudze AKS z poufnymi maszynami wirtualnymi AMD SEV-SNP. Aby uzyskać więcej informacji na temat wdrażania klastra usługi AKS z węzłami agenta Intel SGX poufnego przetwarzania, zobacz Wdrażanie klastra AKS z poufnym przetwarzaniem węzłów agenta Intel SGX przy użyciu interfejsu wiersza polecenia platformy Azure.

Apache®, Apache Ignite, Ignite i logo flame są zastrzeżonymi znakami towarowymi lub znakami towarowymi fundacji Apache Software Foundation w Stany Zjednoczone i/lub innych krajach. Użycie tych znaków nie jest dorozumiane przez fundację Apache Software Foundation.

Architektura

Diagram analizy poufnych danych big data przy użyciu platformy Apache Spark, Azure SQL Always Encrypted, usługi AKS i bezpiecznego środowiska kontenera.

Pobierz plik programu PowerPoint tej architektury.

Na powyższym diagramie przedstawiono architekturę: skalowalny wzorzec przetwarzania większych zestawów danych w sposób rozproszony. Prezentuje również poufne analizy dotyczące aparatów relacyjnych baz danych i przechowywanie poufnych danych. W szczególności konteneryzowana aplikacja Spark może przetwarzać zestawy danych z dwóch źródeł danych, jak pokazano poniżej:

  1. Azure Data Lake Storage — pliki Parquet/Delta Lake: Jak pokazano w przykładzie, wdrożenie platformy Spark z czterema zasobnikami — jeden sterownik, trzy funkcje wykonawcze w środowisku uruchomieniowym Secure Container Environment (SCONE) — może przetwarzać 1,5 miliarda wierszy plików Parquet/Delta Lake przechowywanych w usłudze Azure Data Lake Storage w ciągu dwóch minut lub około 131 sekund.

  2. Azure SQL DB — Always Encrypted z bezpiecznymi enklawami: w tym przykładzie platforma Spark uzyskuje dostęp do danych Always Encrypted jako zwykły tekst przy użyciu sterownika JDBC Azure SQL wewnątrz enklawy kontenera Spark w celu uruchamiania analiz i potoków uczenia maszynowego.

Ten wzorzec można łatwo rozszerzyć, aby uwzględnić wszystkie źródła danych obsługiwane przez duży ekosystem platformy Spark.

Przepływ pracy

  1. Persona operatora: inżynier DevOps aprowizuje klastry Kubernetes, przestrzenie nazw, konta usług i pule węzłów poufnej maszyny wirtualnej (na przykład DC4s_v3).

  2. Osoba dewelopera: inżynier danych używa narzędzia PySpark do pisania aplikacji analitycznej przeznaczonej do analizowania dużych ilości danych.

  3. Osoba opiekuna danych: inżynier ds. danych lub zabezpieczeń tworzy zasady zabezpieczeń dla aplikacji PySpark z udostępnionego repozytorium w organizacji (jednorazowe działanie). Te zasady określają oczekiwany stan danych i kodu aplikacji, minimalne wymagania dotyczące zabezpieczeń platformy oraz wszelkie zmienne środowiskowe, argumenty wiersza polecenia lub wpisy tajne (takie jak ciąg JDBC, identyfikator URI wejściowego obiektu blob i token SAS na potrzeby dostępu). Tę konfigurację można również udostępnić środowisku uruchomieniowemu platformy Spark przy użyciu wpisów tajnych platformy Kubernetes lub przy użyciu usługi Azure Key Vault. (Aby uzyskać więcej informacji, zobacz Use the Azure Key Vault Provider for Secrets Store CSI Driver in an AKS cluster (Używanie dostawcy usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych w klastrze AKS). Konfiguracja jest wstrzykiwana do enklawy tylko wtedy, gdy dowody, które podaje, są weryfikowane przez dostawcę zaświadczania. Dostawca zaświadczania (na przykład usługa Azure Attestation) jest również zdefiniowany w zasadach zabezpieczeń.

  4. Za pomocą oprogramowania SCONE poufnego przetwarzania inżynier danych tworzy poufny obraz platformy Docker zawierający zaszyfrowany kod analityczny i bezpieczną wersję rozwiązania PySpark. Funkcja SCONE działa w klastrze usługi AKS z włączoną funkcją Intel SGX (zobacz Tworzenie klastra AKS z pulą węzłów systemu), co umożliwia uruchamianie kontenera wewnątrz enklawy. Narzędzie PySpark zawiera dowody na to, że poufne dane i kod aplikacji są szyfrowane i izolowane w zaufanym środowisku wykonywania (TEE), co oznacza, że żaden człowiek, żaden proces i żadne dzienniki nie mają dostępu do danych w postaci zwykłego tekstu lub kodu aplikacji.

  5. Aplikacja PySpark jest wdrażana w zdalnym klastrze usługi AKS. Rozpoczyna się i wysyła swoje dowody zaświadczania do dostawcy zaświadczania. Jeśli dowód jest prawidłowy, zwracany jest token zaświadczania . Infrastruktura zdalna akceptuje token zaświadczania i weryfikuje go przy użyciu certyfikatu publicznego znalezionego w usłudze Azure Attestation. Jeśli token zostanie zweryfikowany, istnieje niemal pewność, że enklawa jest bezpieczna i że ani dane, ani kod aplikacji nie zostały otwarte poza enklawą. Konfiguracja w zasadach zabezpieczeń (zmienne środowiskowe, argumenty wiersza polecenia i wpisy tajne) jest następnie wprowadzana do enklaw PySpark.

  6. Wykonywanie PySpark można skalować w poziomie w kilku węzłach Kubernetes. Wszystkie wystąpienia PySpark komunikują się za pośrednictwem zaszyfrowanego kanału, a wszystkie pliki są szyfrowane, które muszą zostać zapisane w lokalnych systemach plików (na przykład w plikach mieszania).

  7. Wyniki analizy są szyfrowane i przekazywane do bazy danych Azure SQL przy użyciu Always Encrypted (która korzysta z szyfrowania na poziomie kolumny). Dostęp do danych wyjściowych i kluczy szyfrowania można bezpiecznie udzielić innym aplikacjom poufnym (na przykład w potoku) przy użyciu tego samego rodzaju zasad zabezpieczeń i dowodów zaświadczania opartych na sprzęcie opisanych w tym artykule.

Składniki

  • Azure Attestation to ujednolicone rozwiązanie, które zdalnie weryfikuje wiarygodność platformy. Azure Attestation również zdalnie weryfikuje integralność plików binarnych uruchamianych na platformie. Użyj Azure Attestation, aby ustanowić relację zaufania z poufnej aplikacji.

  • Węzły poufnego przetwarzania platformy Azure są hostowane w określonej serii maszyn wirtualnych, które mogą uruchamiać poufne obciążenia w usłudze AKS w ramach sprzętowego środowiska TEE. W tym środowisku kod na poziomie użytkownika może przydzielić prywatne regiony pamięci, znane jako enklawy. Węzły poufnego przetwarzania mogą obsługiwać kontenery poufne lub kontenery obsługujące enklawy.

  • Azure Kubernetes Service upraszcza proces wdrażania klastra Kubernetes i zarządzania nim.

  • Apache Spark to aparat wielojęzyczny typu open source do wykonywania inżynierii danych, nauki o danych i uczenia maszynowego zarówno na maszynach z jednym węzłem, jak i w klastrach wielowęźleowych, takich jak zasobniki Kubernetes.

  • Azure SQL Database oferuje teraz Always Encrypted z bezpiecznymi enklawami, rozszerzając możliwości poufnego przetwarzania technologii Always Encrypted SQL Server w celu uwzględnienia szyfrowania w miejscu i zaawansowanych zapytań poufnych.

  • SCONE obsługuje wykonywanie poufnych aplikacji w kontenerach uruchamianych wewnątrz klastra Kubernetes.

  • Platforma SCONE to rozwiązanie firmy Scontain, niezależnego dostawcy oprogramowania i partnera platformy Azure.

Alternatywy

Occlum to bezpieczny w pamięci system operacyjny biblioteki wieloprocesowej (LibOS) dla intel SGX. Aplikacja Occlum umożliwia uruchamianie starszych aplikacji na intel SGX bez żadnych modyfikacji kodu źródłowego. Oklum w sposób przezroczysty chroni poufność obciążeń użytkowników, umożliwiając łatwą migrację do istniejących aplikacji platformy Docker. Aplikacja Occlum obsługuje aplikacje Java.

Zespół inżynierów SCONE utrzymuje obraz kontenera platformy Apache Spark , który uruchamia najnowszą wersję platformy Spark. Alternatywą, która nie jest specyficzna dla platformy Apache Spark, jest Fortanix, za pomocą której można wdrożyć poufne kontenery do użycia z konteneryzowaną aplikacją. Fortanix zapewnia elastyczność wymaganą do uruchamiania najszerszego zestawu aplikacji i zarządzania nimi: istniejących aplikacji, nowych aplikacji natywnych enklawy i wstępnie spakowanych aplikacji.

Szczegóły scenariusza

Istnieje wykładniczy wzrost zestawów danych, co spowodowało rosnącą kontrolę nad tym, w jaki sposób dane są widoczne z perspektywy prywatności i zgodności danych konsumentów. W tym kontekście poufne przetwarzanie staje się ważnym narzędziem pomagającym organizacjom spełnić wymagania dotyczące prywatności i bezpieczeństwa danych biznesowych i konsumenckich. Organizacje mogą uzyskiwać nowe szczegółowe informacje na podstawie danych regulowanych, jeśli dane są przetwarzane w zgodny sposób. Poufne przetwarzanie jest szczególnie przydatne w scenariuszach, w których skalowanie zapewniane przez przetwarzanie w chmurze jest potrzebne do poufnego przetwarzania danych.

Technologia poufnego przetwarzania szyfruje dane w pamięci i przetwarza je tylko po zweryfikowaniu lub sprawdzeniu środowiska chmury. Poufne przetwarzanie uniemożliwia dostęp do danych przez operatorów chmury, złośliwych administratorów i uprzywilejowane oprogramowanie, takie jak funkcja hypervisor. Pomaga również chronić dane w całym cyklu życia — podczas gdy dane są magazynowane, przesyłane, a także teraz, gdy są używane.

Poufne kontenery w usłudze Azure Kubernetes Service (AKS) zapewniają klientom niezbędną infrastrukturę do korzystania z popularnych aplikacji, takich jak Apache Spark, do przeprowadzania czyszczenia danych i trenowania uczenia maszynowego. W tym artykule przedstawiono rozwiązanie, które oferuje poufne przetwarzanie na platformie Azure na potrzeby uruchamiania aplikacji Apache Spark w klastrze usługi AKS przy użyciu pul węzłów z rozszerzeniami Intel Software Guard (Intel SGX). Dane z tego przetwarzania są bezpiecznie przechowywane w usłudze Azure SQL Database przy użyciu Always Encrypted z bezpiecznymi enklawami.

Uwaga

Analiza poufnych danych w tym kontekście ma oznaczać uruchamianie analizy poufnych danych z spokojem w stosunku do eksfiltracji danych. Obejmuje to potencjalne naruszenie dostępu do kontenera na poziomie głównym, zarówno wewnętrznie (na przykład przez nieautoryzowany administrator) lub zewnętrznie (przez naruszenie zabezpieczeń systemu).

Analiza poufnych danych pomaga sprostać najwyższym potrzebom w zakresie zabezpieczeń i poufności przez usunięcie z obliczeń niezaufanych stron, takich jak operator chmury i usługa lub administratorzy gości. Ta metoda pomaga spełnić wymagania dotyczące zgodności danych za pomocą gwarancji opartych na sprzęcie.

Potencjalne przypadki użycia

Wiele branż, zwłaszcza usług finansowych, chroni swoje dane przy użyciu poufnego przetwarzania w następujących celach:

Zagadnienia do rozważenia

Te zagadnienia implementują filary platformy Azure Well-Architected Framework, która jest zestawem wytycznych, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.

Poufne enklawy platformy Azure korzystające z maszyn wirtualnych serii DCsv3 i DCdsv3 oferują duże rozmiary pamięci, aby ułatwić uruchamianie aplikacji intensywnie korzystających z pamięci, takich jak analiza. W tym scenariuszu są używane maszyny wirtualne z serii DCsv3 z obsługą technologii Intel SGX. W niektórych regionach można wdrażać tylko niektóre rozmiary. Aby uzyskać więcej informacji, zobacz Szybki start: wdrażanie maszyny wirtualnej poufnego przetwarzania platformy Azure w witrynie Marketplace i produktach dostępnych według regionów.

Zabezpieczenia

Zabezpieczenia zapewniają ochronę przed celowymi atakami i nadużyciami cennych danych i systemów. Aby uzyskać więcej informacji, zobacz Omówienie filaru zabezpieczeń.

Dwa główne czynniki bezpieczeństwa dla tego scenariusza to bezpieczne enklawy i zaświadczenie.

Zapewnienia enklawy

Administratorzy platformy Kubernetes lub dowolny uprzywilejowany użytkownik z najwyższym poziomem dostępu (na przykład root) nie mogą sprawdzać zawartości w pamięci ani kodu źródłowego sterowników lub funkcji wykonawczych. Pamięć podręczna strony enklawy (EPC) to wyspecjalizowana partycja pamięci na poufnych maszynach wirtualnych platformy Azure, które korzystają z enklaw lub poufnych kontenerów. Maszyny wirtualne serii DCsv3 i DCdsv3 również mają zwykłą, niezaszyfrowaną pamięć do uruchamiania aplikacji, które nie wymagają bezpiecznej enklawy. Aby uzyskać więcej informacji na temat używania intel SGX dla enklaw, zobacz Build with SGX enclaves (Tworzenie z enklawami SGX).

Zaświadczanie

Zaświadczanie to mechanizm zapewniający klientowi lub stronie dowody kryptograficzne, że środowisko, w którym działa aplikacja, jest godne zaufania, w tym sprzęt i oprogramowanie, przed wymianą danych. Zdalne zaświadczanie zapewnia, że obciążenie nie zostało naruszone podczas wdrażania na niezaufanym hoście, takim jak wystąpienie maszyny wirtualnej lub węzeł Kubernetes, który działa w chmurze. W tym procesie dowody zaświadczania dostarczone przez sprzęt Intel SGX są analizowane przez dostawcę zaświadczania.

Aby wykonać zdalne zaświadczanie w aplikacji SCONE (np. sterownik platformy Spark i zasobniki funkcji wykonawczej), wymagane są dwie usługi:

  • Lokalna usługa zaświadczania (LAS): usługa lokalna działająca na niezaufanym hoście (maszynie wirtualnej puli węzłów usługi AKS) i zbiera dowody zaświadczania dostarczone przez intel SGX dotyczące testowanej aplikacji. Ze względu na metodę wdrażania aplikacji SCONE ten dowód jest podpisany i przekazywany do usługi konfiguracji i zaświadczania (CAS).

  • CAS: centralna usługa, która zarządza zasadami zabezpieczeń (nazywanymi sesjami SCONE), konfiguracją i wpisami tajnymi. Cas porównuje dowody zaświadczania zebrane przez las względem zasad zabezpieczeń aplikacji (które są zdefiniowane przez właściciela aplikacji), aby zdecydować, czy enklawa jest godna zaufania. Jeśli tak jest, system CAS umożliwia uruchomienie enklawy, a SCONE bezpiecznie wprowadza do niej konfigurację i wpisy tajne. Aby dowiedzieć się więcej o systemie CAS i jego funkcjach, takich jak generowanie wpisów tajnych i kontrola dostępu, zobacz SCONE Configuration and Attestation Service (Konfiguracja i usługa zaświadczania SCONE).

W tym scenariuszu użyto publicznego serwera CAS udostępnionego przez usługę SCONE w celu zademonstrowania i uproszczenia, a usługa LAS jest wdrażana w taki sposób, aby była uruchamiana jako element DaemonSet w każdym węźle usługi AKS.

Optymalizacja kosztów

Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.

Aby poznać koszt działania tego scenariusza, użyj kalkulatora cen platformy Azure, który wstępnie konfiguruje wszystkie usługi platformy Azure. Zwróć uwagę na dodatkowe licencje wymagane przez partnera do uruchamiania obciążeń produkcyjnych.

Wdrażanie tego scenariusza

Wdrożenie tego scenariusza obejmuje następujące ogólne kroki:

Alternatywnie poufne rozwiązanie SCONE PySpark na platformie Kubernetes , maszyny wirtualnej, zawiera ten sam pokaz, który można odtworzyć w lokalnym klastrze minikube . Aby uzyskać więcej informacji, zobacz oficjalną dokumentację maszyny wirtualnej SCONE PySpark.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Został pierwotnie napisany przez następujących współautorów.

Główny autor:

Inny współautor:

Aby wyświetlić niepublice profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki