Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka vysvětluje, jak Azure Databricks používá Lakeguard k vynucení izolace uživatelů ve sdílených výpočetních prostředích a jemně odstupňované řízení přístupu ve vyhrazených výpočetních prostředcích.
Co je Lakeguard?
Lakeguard je sada technologií v Databricks, která vynucuje izolaci kódu a filtrování dat, aby více uživatelů mohli bezpečně a nákladově sdílet stejný výpočetní prostředek a přistupovat k datům s jemně odstupňovanými řízeními přístupu na výpočetních prostředcích nabízejících privilegovaný přístup k počítačům.
Jak lakeguard funguje?
Ve sdílených výpočetních prostředích, jako jsou standardní klasická výpočetní prostředí, bezserverová výpočetní prostředí a datové sklady SQL, Lakeguard izoluje uživatelský kód od enginu Spark a od ostatních uživatelů. Tento návrh umožňuje mnoha uživatelům sdílet stejné výpočetní prostředky a zároveň udržovat přísné hranice mezi uživateli, ovladačem Sparku a exekutory. Vzhledem k tomu, že je tato izolace zavedená, může standardní výpočetní prostředí nativně vynutit jemně odstupňované řízení přístupu, jako jsou filtry řádků a masky sloupců.
Vyhrazené výpočty používají klasickou architekturu Sparku, v níž uživatelský kód není izolovaný od výpočetního enginu, takže bez rizika načítání nadměrného množství dat nelze vynucovat jemně granulované řízení přístupu. Místo toho vyhrazené výpočetní prostředí deleguje filtrování dat na bezserverové výpočetní prostředí vašeho pracovního prostoru, které je izolované pomocí Lakeguardu a provádí filtrování jeho jménem. To je důvod, proč jemně odstupňované řízení přístupu na vyhrazených výpočetních prostředcích vyžaduje, aby byl váš pracovní prostor povolený pro bezserverové výpočetní prostředky. Podívejte se na jemně odstupňované řízení přístupu u vyhrazených výpočetních prostředků.
Klasická architektura Sparku
Následující obrázek ukazuje, jak v tradiční architektuře Sparku sdílejí uživatelské aplikace prostředí JVM s privilegovaným přístupem k základnímu počítači.
Architektura Lakeguard
Lakeguard izoluje veškerý uživatelský kód pomocí zabezpečených kontejnerů. To umožňuje spouštění více úloh na stejném výpočetním prostředku a zachování přísné izolace mezi uživateli.
Izolace klienta Sparku
Lakeguard izoluje klientské aplikace od ovladače Sparku a od sebe navzájem pomocí dvou klíčových komponent:
Spark Connect: Lakeguard používá Spark Connect (zavedený v Apache Sparku 3.4) k oddělení klientských aplikací od ovladače. Klientské aplikace a ovladače již nesdílejí stejný JVM ani classpath. Toto oddělení brání neoprávněnému přístupu k datům. Tento návrh také zabrání uživatelům v přístupu k datům, která jsou výsledkem nadměrného načítání, když dotazy obsahují filtry na úrovni řádků nebo sloupců.
Poznámka:
Spark Connect odkládá analýzu a řešení názvů na dobu provádění, což může změnit chování vašeho kódu. Viz Porovnání Spark Connect s Klasickým Sparkem.
Izolace kontejnerů: Každá klientská aplikace běží ve vlastním izolovaném prostředí kontejneru. Tím zabráníte, aby uživatelský kód přistupoval k datům jiných uživatelů nebo k podkladovému počítači. Sandboxing používá techniky izolace založené na kontejnerech k vytvoření zabezpečených hranic mezi uživateli.
Izolace UDF
Ve výchozím nastavení exekutory Sparku neizolují funkce definované uživatelem. Tato nedostatečná izolace může umožnit funkcím UDF zapisovat soubory nebo přistupovat k hostitelskému systému.
Lakeguard izoluje uživatelem definovaný kód, včetně UDF, na exekutorech Sparku:
- Sandboxování spouštěcího prostředí v exekutorech Sparku
- Izolace odchozího síťového provozu z UDF (uživatelsky definovaných funkcí) s cílem zabránit neoprávněnému externímu přístupu.
- Replikace klientského prostředí do sandboxu UDF, aby uživatelé měli přístup k potřebným knihovnám.
Tato izolace se vztahuje na funkce definované uživatelem ve standardním výpočetním prostředí a na funkce definované uživatelem v Pythonu v bezserverovém výpočetním prostředí a v datových skladech SQL.