Spark-támogatás a OneLake-biztonsághoz (RLS és CLS)

A Fabric Spark integrálva van a OneLake security rendszerrel, a Lakehouse Delta-táblák olvasásakor a Spark jegyzetfüzetekből és Spark feladatdefiníciókból a OneLake-ben egyszer megadott sorszintű biztonsági (RLS) és oszlopszintű biztonsági (CLS) szabályzatok következetesen érvényesülnek. A felhasználók továbbra is szabványos Spark SQL- vagy DataFrame-lekérdezéseket írnak; A Spark transzparensen szűri az eredményt, így minden felhasználó csak a hozzáférésre jogosult sorokat és oszlopokat látja.

Ez a cikk bemutatja , hogyan működik a Spark a OneLake biztonságával, beleértve a kényszerítési architektúrát, az adat-előkészítési folyamatot, a felhasználói élményt, valamint a támogatott forgatókönyveket és korlátokat.

Note

A szabályzatkészítésről és a motorközi modellről a OneLake sorszintű biztonsága és a OneLake oszlopszintű biztonsága című témakörben olvashat.

Fogalmak egy pillantással

  • Az igazság egyetlen forrása. Az RLS-szabályok és a CLS-oszloplisták egyszer kerülnek definiálásra a lakehouse-on a OneLake biztonsági szerepkörök által. A Spark nem tárolja vagy duplikálja a szabályzatot.
  • Motorfüggetlen hatékony hozzáférés. A OneLake visszaadja a kérelmező felhasználó előre összeállított hatékony hozzáférését , beleértve az engedélyezett oszlopokat és az RLS sorszűrő metaadatait. A Spark ezt a hatékony hozzáférést használja a lekérdezési időpontban.
  • Csak Delta szűrés. A OneLake és Fabric platformréteg csak a Delta parquet-táblákra alkalmazza az RLS-t és a CLS-t. Az alkalmazott szabályokkal rendelkező nem Delta-objektumokat a platform blokkolja, és nem szűri a Spark.
  • A kiemelt szerepkörök megkerülése. A OneLake és Fabric platform viselkedéseként a munkaterület Admin, Member és Contributor szerepköröket az RLS vagy a CLS nem korlátozza. A szűrés a Megtekintőre és a OneLake biztonsági szerepkörökön keresztül hozzáférést kapó felhasználókra vonatkozik.

Hogyan biztosítja a Spark a OneLake biztonságát?

Amikor egy felhasználó olyan lekérdezést küld, amely egy védett tóháztáblát érint, a Spark elkészít egy végrehajtási tervet, amely egyesíti a felhasználó lekérdezését a OneLake biztonsági hatékony hozzáféréssel az adott felhasználó számára. A végrehajtás alatt történik, nem pedig a felhasználói kód szűrés utáni lépéseként, így nem lehet megkerülni alternatív API-k vagy elérési út alapú olvasások révén.

Kétkörnyezetes végrehajtási modell

Fabric Spark két végrehajtási környezetet használ a szabályzatok kiértékelése elkülönítésére a felhasználói kódtól:

  • Felhasználói környezet. Futtatja a felhasználó jegyzetfüzetét vagy Spark-feladatdefinícióját a felhasználó identitásával. Ez a környezet tervezi a lekérdezést, és a szűrt kimenetet használja, de soha nem rendelkezik közvetlen, szűretlen hozzáféréssel a védett táblákhoz.
  • A rendszer (biztonsági) környezete. Egy emelt szintű, Microsoft által felügyelt környezet, amely feloldja a felhasználó oneLake-hez való hatékony hozzáférését, beolvassa a mögöttes Delta-fájlokat, alkalmazza az RLS-sorszűrést és a CLS-előrejelzéseket, és csak azokat a sorokat és oszlopokat adja vissza, amelyeket a felhasználó láthat.

A rendszerkörnyezet a monitorozási központban a felhasználó jegyzetfüzet-munkamenete mellett futó feladatokként SparkSecurityControl jelenik meg. A feladatnév és a figyelési tapasztalat a Fabric platform viselkedése. Ezek a munkák várhatóak, és jelzik, hogy a OneLake biztonsági ellenőrzése aktív.

Biztonságos tábla lekérdezési folyamata

  1. A felhasználó például SELECT * FROM lakehouse.salesegy Spark-jegyzetfüzetben futtat egy lekérdezést.
  2. A Spark feldolgozza a táblát a lakehouse katalógus segítségével, és észleli, hogy a OneLake biztonsági funkciója engedélyezve van.
  3. A Spark az aktuális felhasználó tényleges hozzáférését kéri a OneLake-től. A válasz tartalmazza az engedélyezett oszloplistát (CLS) és az RLS sorszűrő metaadatait.
  4. A rendszerbiztonsági környezet beolvassa a Delta-fájlokat, csak az engedélyezett oszlopokat projekteli, és bitképstílussal vagy törlési vektorstílusú sorszűréssel alkalmazza az RLS-t a végrehajtás során.
  5. A szűrt eredmény vissza lesz adva a felhasználói környezetnek, amely befejezi a felhasználó többi lekérdezését (illesztéseket, összesítéseket, írásokat nem biztonságos célokra stb.) a már szűrt adatokon keresztül.

Mi történik az egyes szabályzattípusok esetében?

Policy Mit ad vissza a Spark? Notes
Csak RLS Minden oszlop, de csak az RLS-szabály által engedélyezett sorok. A sorszűrés a biztonsági környezetben bitkép alapú vagy törlési vektor alapú szűréssel van kényszerítve; a felhasználók nem tudják megfigyelni a szűrő logikáját.
Csak CLS Csak az engedélyezett oszlopok; az összes sort. SELECT * sikeres lesz, és visszaadja az engedélyezett oszlopokat, ha legalább egy oszlop engedélyezett. Ha nem engedélyezett oszlopok használata, a Spark meghiúsul a lekérdezésben.
RLS + CLS ugyanabban a szerepkörben Engedélyezett sorok vetítése az engedélyezett oszlopokra. Mindaddig támogatott, amíg mindkét szabály ugyanahhoz a szerepkörhöz tartozik.
RLS az A szerepkörben, CLS a B szerepkörben (ugyanaz a felhasználó) A lekérdezés sikertelen. A OneLake és Fabric platformréteg nem támogatja, hogy egy felhasználó két szerepkör tagja legyen, ahol az egyik az RLS-t, a másik pedig a CLS-t határozza meg. Lásd: Sorszintű biztonság és oszlopszintű biztonság.
Nem delta objektum A hozzáférés letiltva. A OneLake és a Fabric platform réteg csak a Delta Parquet táblákra alkalmazza az RLS-t és a CLS-t; a védett szerepkörbe tartozó többi objektum le van tiltva.

A kanonikus szerkesztési szabályok és az RLS kifejezésszintaxis megtekintéséhez lásd a sorszintű biztonsági és a oszlopszintű biztonsági cikkeket.

Hogyan készíti elő a Spark az adatokat a felhasználók számára?

A OneLake-biztonság úgy lett kialakítva, hogy átlátható legyen az adatfelhasználó számára. A felhasználók továbbra is használják a már ismert API-kat, és a Spark kezeli a szabályzatfeloldást és a szűrést a nevükben.

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()

Mindkét példában a transactions DataFrame-be betöltött táblaadatokat a OneLake-biztonság már szűri. A későbbi átalakítások csak a szűrt adatokon keresztül működnek.

A közvetlen fájlhozzáférés le van tiltva

A közvetlen útvonal-hozzáférés megkerüli a Lakehouse-katalógus szabályzatainak feloldását. Ha a OneLake-biztonság engedélyezve van egy táblán, a OneLake és Fabric platformréteg a következő mintákat blokkolja a nem kiemelt felhasználók számára:

  • spark.read.format("delta").load("abfss://...")
  • DeltaTable.forPath(spark, "abfss://...")
  • A OneLake REST/SDK lekéri a Tables/<table> védett tábla könyvtárát.

A felhasználóknak a védett táblákat a lakehouse táblanevének használatával (például spark.read.table("lakehouse.table") vagy Spark SQL) kell elérniük, hogy a Spark feloldhassa és alkalmazza a hatékony hozzáférést.

Felhasználói élmény

  • Transzparens szűrés. Nincs szükség lekérdezés-újraírásra vagy speciális szintaxisra. Ugyanez a jegyzetfüzet különböző szerepkörökkel rendelkező felhasználók számára működik, és szerepkörspecifikus adatokat ad vissza.
  • Konzisztens eredmények a keresőmotorok között. A Sparkban alkalmazott RLS-szabályt és CLS-előrejelzést az SQL Analytics-végponton, a Direct Lake-re épülő szemantikai modellekben és az engedélyezett külső motorokban is alkalmazza a rendszer. Tekintse meg a OneLake biztonsági integrációinak áttekintését.
  • A kiemelt szerepkörök mindent látnak. A OneLake és Fabric platform viselkedéseként a munkaterület Admin, Member és Contributor felhasználók továbbra is szűretlen adatokat láthatnak, ami a folyamatfejlesztéshez, a táblakarbantartáshoz (OPTIMIZE, VACUUM) és a hibaelhárításhoz hasznos.
  • Felügyelet A SparkSecurityControl Monitorozási központban megjelenő feladatok megfelelnek a szabályzatkényszerítést végző rendszerkörnyezetnek. A feladat neve és a felügyeleti központ bejegyzése a Fabric platform műveletének része.

Képernyőkép helyőrzője: Monitorozási központ, amelyen egy SparkSecurityControl-feladat látható a felhasználó jegyzetfüzet-munkamenete mellett.

Teljesítménnyel kapcsolatos szempontok

  • RLS sor szűrés. Az RLS-t a Delta-vizsgálat közelében alkalmazzák bitkép-stílusú vagy törlési vektor-stílusú szűréssel, és ahol támogatott, a natív végrehajtási motorral. Ez a kialakítás minimálisra csökkenti a felhasználói környezetben előforduló sorokat.
  • Oszlopmetszés. A CLS-oszloplisták a felhasználó vetületével kombinálódnak. Csak a metszet kerül beolvasásra a Delta tárhelyről.
  • Hatékony hozzáférés-gyorsítótárazás. A Spark minden lekérdezés során gyorsítótárazza a szabályzatra és a tényleges hozzáférésre vonatkozó metaadatokat, és törli őket, amikor a lekérdezés végrehajtása leáll.
  • Partíció és statisztika használata. A standard Delta partíciómetszet és az adatok kihagyása továbbra is érvényes az RLS-sorok szűrésével, így a particionált táblák lekérdezései továbbra is hatékonyak maradnak.

Támogatott forgatókönyvek

  • A Lakehouse Delta táblák olvasása Spark jegyzetfüzetekben és Spark feladatdefiníciókban a Lakehouse katalóguson keresztül (<lakehouse>.<table>).
  • Spark SQL és PySpark/Scala DataFrame API-k biztonságos táblák kezelésére.
  • Összekapcsolások, összesítések és alsóbb rétegbeli átalakítások biztonságos táblákon.
  • Írás védett forrásokból nem biztonságos kimenetekbe. A védett környezeten kívül írt kimeneti táblák csak azokat a már szűrt adatokat tartalmazzák, amelyeket a felhasználó elolvashatott.
  • A munkaterületek közötti lakehouse-hozzáférés parancsikonokkal valósul meg, ahol a forrás lakehouse-hoz OneLake biztonság van engedélyezve.

A OneLake Spark-katalógus engedélyezése

Ahhoz, hogy az RLS és a CLS a Sparkkal kényszeríthető legyen, a OneLake Spark-katalógust engedélyezni kell a Spark-munkamenethez. Ezt a feladatszolgáltatás végzi a Spark-munkamenet alapértelmezett lakehouse-készlete alapján. A OneLake Spark-katalógus akkor lesz engedélyezve, ha:

  • A Spark-munkamenet alapértelmezett lakehouse-a sémaengedélyezett, vagy
  • Nincs alapértelmezett lakehouse beállítva a Spark-munkamenethez.

Ezekben az esetekben, ha az alapértelmezett lakehouse-nak nem sémaalapúnak kell lennie, a OneLake Spark-katalógus a Környezet Spark tulajdonságán keresztül engedélyezhető. Állítsa a Spark-tulajdonságot spark.sql.fabric.catalog.enable-schemaless-lakehouses értékére true, és a Spark-feladat vagy jegyzetfüzet futtatásakor válassza ki azt a környezetet.

Limitations

A OneLake biztonsági RLS és CLS a Sparkban örökli a OneLake általános biztonsági korlátozásait. A figyelemre méltó viselkedések és korlátok a következők:

  • A OneLake és Fabric platformréteg csak Delta parquet táblákra alkalmazza az RLS-t és a CLS-t. A védett szerepkörben lévő nem delta objektumok le vannak tiltva.
  • A OneLake és a Fabric platformréteg blokkolja a közvetlen elérési utak beolvasását (abfss://, DeltaTable.forPath) a nem jogosultsággal rendelkező felhasználók számára.
  • A OneLake és Fabric platformréteg nem támogatja, hogy egy felhasználó két szerepkör tagja legyen, ahol az egyik az RLS-t, a másik pedig a CLS-t határozza meg az érintett táblákhoz.
  • A OneLake és a Fabric platform viselkedése szerint a munkaterület Admin, Member és Contributor szerepkörök megkerülik az RLS-t és a CLS-t.
  • A védett forrásokból származó nem biztonságos kimenetekre történő írás támogatott, és a már szűrt adatokon működik. A biztonságos célhelyre történő írás (INSERT/UPDATE/DELETE/MERGE) nem támogatott lehet az RLS vagy a CLS hatálya alá tartozó felhasználók számára; emelt szintű identitás használata az ETL biztonságos táblákba való írásához.