Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Fabric Spark sa integruje s OneLake security takže bezpečnostné politiky na úrovni riadkov (RLS) a stĺpce (CLS) definované raz v OneLake sú konzistentne vynucované pri čítaní lakehouse Delta tabuliek zo Spark notebookov a definícií úloh v Spark. Používatelia naďalej píšu štandardné Spark SQL alebo DataFrame dotazy; Spark transparentne filtruje výsledok tak, aby každý používateľ videl len riadky a stĺpce, ku ktorým má oprávnenie pristupovať.
Tento článok vysvetľuje , ako Spark spolupracuje so zabezpečením OneLake, vrátane architektúry vynucovania, procesu prípravy dát, používateľského zážitku a podporovaných scenárov a limitov.
Poznámka
Pre tvorbu politík a cross-engine model pozri Bezpečnosť na úrovni riadkov v OneLake a bezpečnosť na úrovni stĺpcov v OneLake.
Koncepty na prvý pohľad
- Jediný zdroj pravdy. RLS pravidlá a zoznamy CLS stĺpcov sú definované raz na jazernom dome prostredníctvom bezpečnostných rolí OneLake. Spark túto politiku neukladá ani neduplikuje.
- Efektívny prístup nezávislý od motora. OneLake vracia predpočítaný efektívny prístup pre žiadajúceho používateľa, vrátane povolených stĺpcov a metadát RLS riadkového filtra. Spark využíva tento efektívny prístup v čase dotazovania.
- Filtrovanie iba Delta. Platformová vrstva OneLake a Fabric aplikuje RLS a CLS iba na parketové stoly Delta. Objekty, ktoré nie sú Delta s aplikovanými pravidlami, sú platformou blokované namiesto toho, aby ich Spark filtroval.
- Privilegované role obchádzajú. Ako OneLake a Fabric správanie platforiem, pracovné priestory Admin, Member a Contributor nie sú obmedzené RLS alebo CLS. Filtrovanie sa vzťahuje na Viewer a na používateľov, ktorým bol udelený prístup prostredníctvom bezpečnostných rolí OneLake.
Ako Spark zabezpečuje bezpečnosť OneLake
Keď používateľ odošle dotaz, ktorý sa dotýka zabezpečeného lakehouse stola, Spark pripraví plán vykonávania, ktorý kombinuje dotaz používateľa s efektívnym prístupom OneLake pre bezpečnost. Vynucovanie prebieha počas vykonávania, nie ako krok po filtrovaní v používateľskom kóde, takže ho nemožno obísť alternatívnymi API alebo čítaniami založenými na cestách.
Model vykonávania v dvoch kontextoch
Fabric Spark používa dva kontexty vykonávania, aby bolo hodnotenie politík oddelené od používateľského kódu:
- Používateľský kontext. Spúšťa používateľský notebook alebo definíciu úlohy v Sparku s identitou používateľa. Tento kontext plánuje dotaz a spotrebuje filtrovaný výstup, ale nikdy nemá priamy, nefiltrovaný prístup k zabezpečeným tabuľkám.
- Systémový (bezpečnostný) kontext. Privilegovaný kontext spravovaný Microsoft, ktorý rieši efektívny prístup používateľa voči OneLake, číta podkladové Delta súbory, aplikuje RLS filtrovanie riadkov a projekcie CLS a vracia iba riadky a stĺpce, ktoré používateľ môže vidieť.
Kontext systému sa zobrazuje v monitorovacom hube ako SparkSecurityControl úlohy, ktoré bežia paralelne s reláciou používateľského zápisníka. Názov práce a skúsenosti s monitorovaním sú správanie Fabric platformy. Tieto práce sú očakávané a naznačujú, že bezpečnostné opatrenia OneLake sú aktívne.
Dotazovací tok pre zabezpečenú tabuľku
- Používateľ vykoná dotaz v Spark notebooku, napríklad
SELECT * FROM lakehouse.sales. - Spark vyrieši tabuľku cez katalóg lakehouse a zistí, že OneLake zabezpečenie je zapnuté.
- Spark žiada o efektívny prístup pre aktuálneho používateľa od OneLake. Odpoveď obsahuje povolený zoznam stĺpcov (CLS) a metadáta RLS riadkového filtra.
- Systémový bezpečnostný kontext číta súbory Delta, premieta iba povolené stĺpce a aplikuje RLS pomocou bitmapového alebo deletion-vectorového filtrovania riadkov počas vykonávania.
- Filtrovaný výsledok sa vráti späť do používateľského kontextu, ktorý dokončí zvyšok dotazu používateľa (spojenia, agregácie, zápisy na nezabezpečené ciele a podobne) nad už filtrovanými dátami.
Čo sa deje pri každom type poistky
| Politika | Čo sa vracia Spark | Poznámky |
|---|---|---|
| Iba RLS | Všetky stĺpce, ale len riadky povolené pravidlom RLS. | Filtrovanie riadkov sa v bezpečnostnom kontexte vynucuje pomocou filtrovania v štýle bitmap alebo deletion vector; Používatelia nemôžu sledovať logiku filtra. |
| Iba CLS | Iba povolené stĺpce; Všetky rady. |
SELECT * uspeje a vráti povolené stĺpce, keď je povolený aspoň jeden stĺpec. Ak nie sú povolené žiadne stĺpce, Spark dotaz neprejde. |
| RLS + CLS v rovnakej úlohe | Povolené riadky premietnuté do povolených stĺpcov. | Podporované, pokiaľ obe pravidlá patria do rovnakej úlohy. |
| RLS na pozícii A, CLS na pozícii B (ten istý používateľ) | Dotaz zlyhá. | Platformová vrstva OneLake a Fabric nepodporuje, aby bol používateľ členom dvoch rolí, kde jedna definuje RLS a druhá CLS. Pozri bezpečnosť na úrovni riadkov a bezpečnosť na úrovni stĺpcov. |
| Ne-Delta objekt | Prístup zablokovaný. | Platformová vrstva OneLake a Fabric aplikuje RLS a CLS iba na parketové stoly Delta; iné objekty v zabezpečenej úlohe sú blokované. |
Pre kanonické pravidlá autorstva a syntax RLS výrazov pozri články o bezpečnosti na úrovni riadkov a bezpečnosti na úrovni stĺpcov .
Ako Spark pripravuje dáta pre používateľov
Bezpečnosť OneLake je navrhnutá tak, aby bola transparentná pre spotrebiteľa dát. Používatelia naďalej používajú API, ktoré už poznajú, a Spark rieši riešenie a filtrovanie politík za nich.
Spark SQL
-- Returns only rows and columns the current user is authorized to see.
SELECT product_category, SUM(amount) AS total
FROM sales.transactions
GROUP BY product_category;
PySpark DataFrame
df = spark.read.table("sales.transactions")
df.filter("region = 'EMEA'").groupBy("product_category").sum("amount").show()
V oboch prípadoch transactions sú tabuľkové dáta načítané do DataFrame už filtrované zabezpečením OneLake. Následné transformácie fungujú iba nad filtrovanými dátami.
Priamy prístup k súborom je blokovaný
Priamy prístup k chodníku obchádza rezolúciu katalógu Lakehouse. Keď je bezpečnosť OneLake povolená na tabuľke, vrstva platformy OneLake a Fabric blokuje nasledujúce vzory pre používateľov bez privilegií:
spark.read.format("delta").load("abfss://...")DeltaTable.forPath(spark, "abfss://...")- OneLake REST/SDK číta do priečinka
Tables/<table>zabezpečenej tabuľky.
Používatelia musia pristupovať k zabezpečeným tabuľkám cez názov lakehouse tabuľky (napríklad spark.read.table("lakehouse.table") Spark SQL), aby Spark mohol vyriešiť a aplikovať efektívny prístup.
Používateľská skúsenosť
- Transparentné filtrovanie. Nie je potrebné žiadne prepisovanie dotazov ani špeciálna syntax. Ten istý zápisník funguje pre používateľov s rôznymi rolami a vracia dáta špecifické pre danú rolu.
- Konzistentné výsledky naprieč motormi. Rovnaké RLS pravidlo a projekcia CLS, ktoré sa používajú v Sparku, sa aplikujú aj na SQL analytics endpoint, sémantické modely postavené na Direct Lake a autorizované enginy tretích strán. Pozrite si prehľad bezpečnostných integrácií OneLake.
- Privilegované úlohy vidia všetko. Ako OneLake a Fabric správanie platforiem, používatelia pracovného priestoru Admin, Member a Contributor používatelia naďalej vidia nefiltrované dáta, čo je užitočné pri vývoji pipeline, údržbe tabuliek (
OPTIMIZE,VACUUM) a riešení problémov. - Monitorovanie. Úlohy
SparkSecurityControl, ktoré sa zobrazujú v monitorovacom centre, zodpovedajú systémovému kontextu, ktorý vykonáva presadzovanie politík. Názov práce a záznam v monitorovacom centre sú súčasťou prevádzky platformy Fabric.
Dôležité informácie týkajúce sa výkonu
- RLS filtrovanie riadkov. RLS sa aplikuje blízko Delta scan pomocou filtrovania v štýle bitmap alebo deletion vector filtrovania a, kde je to podporované, Native Execution Engine. Tento dizajn minimalizuje riadky, ktoré sa zhmotňujú v používateľskom kontexte.
- Strihanie stĺpcov. Zoznamy stĺpcov CLS sa kombinujú s projekciou používateľa. Iba prienik sa číta z Delta úložiska.
- Efektívne cachovanie prístupu. Spark ukladá do vyrovnávacej pamäte metadáta politiky a efektívneho prístupu na každý dotaz a vyčistí ich, keď sa ukončenie vykonávania dotazu zastaví.
- Použitie rozdelenia a štatistiky. Štandardné Delta prerezávanie partícií a preskakovanie dát sa naďalej uplatňujú pri RLS filtrovaní riadkov, takže dotazy na rozdelené tabuľky zostávajú efektívne.
Podporované scenáre
- Čítanie tabuliek Lakehouse Delta v Spark notebookoch a definícií pracovných pozícií v Spark cez katalóg lakehouse (
<lakehouse>.<table>). - Spark SQL a PySpark/Scala DataFrame API proti zabezpečeným tabuľkám.
- Spojenia, agregácie a následné transformácie na zabezpečených tabuľkách.
- Zapisuje z zabezpečených zdrojov na nezabezpečené výstupy. Výstupné tabuľky, ktoré sa zapisujú mimo zabezpečeného jazerného domu, obsahujú iba už filtrované dáta, ktoré mohol zapisujúci používateľ čítať.
- Prístup k jazernému domu naprieč pracovným priestorom cez skratky, kde zdrojový jazerný dom má zapnuté OneLake zabezpečenie.
Povolenie katalógu OneLake Spark
Aby bolo možné RLS a CLS vynucovať so Sparkom, musí byť katalóg OneLake Spark povolený pre reláciu Spark. Toto sa vykonáva pomocou služby práce založenej na predvolenom nastavení lakehouse pre reláciu Spark. Katalóg OneLake Spark bude povolený, ak:
- Predvolený lakehouse pre reláciu Spark je povolený na schému, alebo
- Pre Spark session nie je nastavený žiadny predvolený lakehouse.
V týchto prípadoch, keď musí byť predvolený lakehouse bez schémy, je možné OneLake Spark Catalog povoliť cez vlastnosť Spark v Environment. Nastavte vlastnosť spark.sql.fabric.catalog.enable-schemaless-lakehouses Spark na a true vyberte toto prostredie pri spustení úlohy alebo zápisníka Spark.
Obmedzenia
OneLake bezpečnostné RLS a CLS v Sparku preberajú celkové bezpečnostné obmedzenia OneLake. Medzi významné správanie a obmedzenia patria:
- Platformová vrstva OneLake a Fabric aplikuje RLS a CLS iba na Delta parketové stoly. Objekty, ktoré nie sú Delta v zabezpečenej úlohe, sú blokované.
- Platformová vrstva OneLake a Fabric blokuje priame čítanie ciest (
abfss://,DeltaTable.forPath) proti zabezpečeným tabuľkám pre neprivilegovaných používateľov. - Platformová vrstva OneLake a Fabric nepodporuje, aby bol používateľ členom dvoch rolí, kde jedna definuje RLS a druhá CLS pre dotknuté tabuľky.
- Ako OneLake a Fabric správanie platforiem, pracovné Admin, Member a Contributor obchádzajú RLS a CLS.
- Zápisy do nezabezpečených výstupov zo zabezpečených zdrojov sú podporované a pracujú na už filtrovaných dátach. Zápisy (INSERT/UPDATE/DELETE/MERGE) do zabezpečeného cieľa môžu byť nepodporované pre používateľov podliehajúcich RLS alebo CLS; pre ETL zápisy do zabezpečených tabuliek použite privilegovanú identitu.