Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na tej stronie wyjaśniono, jak usługa Azure Databricks używa usługi Lakeguard do wymuszania izolacji użytkowników w udostępnionych środowiskach obliczeniowych i szczegółowej kontroli dostępu w dedykowanych obliczeniach.
Co to jest Lakeguard?
Lakeguard to zestaw technologii usługi Databricks, które wymuszają izolację kodu i filtrowanie danych, dzięki czemu wielu użytkowników może bezpiecznie i efektywnie korzystać z tych samych zasobów obliczeniowych, a także uzyskiwać dostęp do danych z precyzyjnymi mechanizmami kontroli dostępu do zasobów obliczeniowych oferujących uprzywilejowany dostęp do maszyn.
Jak działa lakeguard?
We współdzielonych środowiskach obliczeniowych, takich jak standardowe środowiska classic compute, środowiska serverless compute i hurtownie SQL, usługa Lakeguard izoluje kod użytkownika od silnika Spark oraz od innych użytkowników. Ten projekt umożliwia wielu użytkownikom współdzielenie tych samych zasobów obliczeniowych przy zachowaniu ścisłych granic między użytkownikami, sterownikiem platformy Spark i funkcjami wykonawczych. Ponieważ ta izolacja została wdrożona, standardowe zasoby obliczeniowe mogą natywnie egzekwować precyzyjne mechanizmy kontroli dostępu, takie jak filtry wierszy i maski kolumn.
Obliczenia dedykowane korzystają z klasycznej architektury Spark, w której kod użytkownika nie jest odizolowany od silnika, więc nie można egzekwować już wdrożonych szczegółowych mechanizmów kontroli dostępu bez ryzyka pobrania zbyt dużej ilości danych. Zamiast tego dedykowane zasoby obliczeniowe delegują filtrowanie danych do bezserwerowych zasobów obliczeniowych Twojego obszaru roboczego, które są izolowane przez Lakeguard i wykonują to filtrowanie w ich imieniu. Dlatego szczegółowa kontrola dostępu do dedykowanych zasobów obliczeniowych wymaga włączenia obszaru roboczego na potrzeby przetwarzania bezserwerowego. Zobacz Szczegółową kontrolę dostępu na dedykowanej jednostce obliczeniowej.
Klasyczna architektura platformy Spark
Na poniższej ilustracji pokazano, jak w tradycyjnej architekturze Spark aplikacje użytkowników współdzielą maszynę wirtualną JVM z uprzywilejowanym dostępem do podstawowej maszyny.
Architektura Lakeguard
Usługa Lakeguard izoluje cały kod użytkownika przy użyciu bezpiecznych kontenerów. Umożliwia to uruchamianie wielu obciążeń na tym samym zasobie obliczeniowym przy zachowaniu ścisłej izolacji między użytkownikami.
Izolacja klienta platformy Spark
Usługa Lakeguard izoluje aplikacje klienckie od sterownika Spark i od siebie przy użyciu dwóch kluczowych składników:
Spark Connect: usługa Lakeguard używa programu Spark Connect (wprowadzonego z platformą Apache Spark 3.4) w celu oddzielenia aplikacji klienckich od sterownika. Aplikacje klienckie i sterowniki nie korzystają już z tej samej maszyny JVM ani tej samej ścieżki klas. Ta separacja uniemożliwia nieautoryzowany dostęp do danych. Ten projekt uniemożliwia również użytkownikom uzyskiwanie dostępu do danych wynikających z nadmiernego pobierania, gdy zapytania obejmują filtry na poziomie wiersza lub kolumny.
Uwaga / Notatka
Spark Connect odracza analizę i rozpoznawanie nazw do czasu kompilacji, co może wpłynąć na sposób działania twojego kodu. Zobacz Porównanie programu Spark Connect z modelem klasycznym platformy Spark.
Izolacja kontenerów: Każda aplikacja kliencka działa we własnym izolowanym środowisku kontenerowym. Zapobiega to dostępowi kodu użytkownika do danych innych użytkowników lub maszyny źródłowej. Piaskownica używa technik izolacji opartej na kontenerach do tworzenia bezpiecznych granic między użytkownikami.
Izolacja UDF
Domyślnie executory Spark nie izolują funkcji UDF. Brak izolacji może umożliwiać funkcjom UDF zapisywanie plików lub uzyskiwanie dostępu do maszyny bazowej.
Lakeguard izoluje kod zdefiniowany przez użytkownika, w tym funkcje UDF, w egzekutorach Spark przez:
- Izolowanie środowiska wykonawczego na egzekutorach Spark.
- Izolowanie wychodzącego ruchu sieciowego z funkcji definiowanych przez użytkownika, aby zapobiec nieautoryzowanemu dostępowi z zewnątrz.
- Odwzorowanie środowiska klienta w piaskownicy UDF, aby użytkownicy mogli mieć dostęp do wymaganych bibliotek.
Ta izolacja ma zastosowanie do funkcji UDF w standardowych zasobach obliczeniowych oraz do funkcji UDF języka Python w bezserwerowych zasobach obliczeniowych i hurtowniach SQL.