Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Fabric Spark integroituu OneLake-tietoturvaan joten OneLakessa kerran määriteltyjen rivitason turvallisuus- (RLS) ja sarakketason turvallisuuskäytäntöjen (CLS) toimeenpano on johdonmukaisesti käytössä, kun käyttäjät lukevat Spark-muistikirjojen Delta-taulukoita ja Spark-työtehtävien määrittelyjä. Käyttäjät jatkavat standardien Spark SQL- tai DataFrame-kyselyiden kirjoittamista; Spark suodattaa tuloksen läpinäkyvästi niin, että jokainen käyttäjä näkee vain ne rivit ja sarakkeet, joihin hänellä on oikeus käyttää.
Tässä artikkelissa selitetään, miten Spark toimii OneLake-tietoturvan kanssa, mukaan lukien valvontaarkkitehtuuri, tietojen valmisteluprosessi, käyttäjäkokemus sekä tuetut skenaariot ja rajat.
Note
Politiikan laatimisesta ja moottorien välisestä mallista katso Rivitason turvallisuus OneLakessa ja Sarakkeen turvallisuus OneLakessa.
Käsitteet yhdellä katsauksella
- Ainoa totuuden lähde. RLS-säännöt ja CLS-sarakkeelistat määritellään kerran järven talossa OneLake-turvallisuusroolien kautta. Spark ei tallenna tai kopioi vakuutusta.
- Moottoririippumaton tehokas pääsy. OneLake palauttaa pyytävälle käyttäjälle ennalta lasketun tehokkaan pääsyn , mukaan lukien sallitut sarakkeet ja RLS-rivisuodattimen metatiedot. Spark käyttää tämän tehokkaan pääsyn kyselyhetkellä.
- Pelkkä delta-suodatus. OneLake- ja Fabric-alustakerros soveltaa RLS:ää ja CLS:ää vain Delta-parkettipöydiin. Ei-Delta-objektit, joihin sovelletaan sääntöjä, estetään alustan toimesta eikä Sparkin suodattamia.
- Etuoikeutetut roolit kiertävät. Koska OneLake- ja Fabric-alustan käyttäytymisen osalta workspace Admin, Member ja Contributor roolit eivät ole rajoitettuja RLS:llä tai CLS:llä. Suodatus koskee Vieweria ja käyttäjiä, joille on myönnetty pääsy OneLake-turvallisuusroolien kautta.
Miten Spark valvoo OneLake-turvallisuutta
Kun käyttäjä lähettää kyselyn, joka koskettaa suojattua lakehouse-taulukkoa, Spark laatii suoritussuunnitelman, joka yhdistää käyttäjän kyselyn OneLake-tietoturvan tehokkaaseen pääsyyn kyseiselle käyttäjälle. Täytäntöönpano tapahtuu suorituksen aikana, ei suodattimen jälkeisenä vaiheena käyttäjäkoodissa, joten sitä ei voi ohittaa vaihtoehtoisilla rajapinnoilla tai polkupohjaisilla lukemisilla.
Kahden kontekstin suoritusmalli
Fabric Spark käyttää kahta suorituskontekstia pitääkseen politiikan arvioinnin erillään käyttäjäkoodista:
- Käyttäjäkonteksti. Ajaa käyttäjän muistikirjan tai Spark-työn määrittelyn käyttäjän identiteetillä. Tämä konteksti suunnittelee kyselyn ja kuluttaa suodatetun tuloksen, mutta sillä ei koskaan ole suoraa, suodattamatonta pääsyä suojattuihin tauluihin.
- Järjestelmän (turvallisuus) konteksti. Etuoikeutettu, Microsoft:n hallinnoima konteksti, joka ratkaisee käyttäjän tehokkaan pääsyn OneLakea vastaan, lukee taustalla olevat Delta-tiedostot, soveltaa RLS-rivisuodatusta ja CLS-projektioita sekä palauttaa vain ne rivit ja sarakkeet, jotka käyttäjä saa nähdä.
Järjestelmäkonteksti näkyy Monitoring Hubissa töinä SparkSecurityControl , jotka suoritetaan käyttäjän muistikirjan istunnon rinnalla. Työn nimi ja valvontakokemus ovat Fabric-alustan käyttäytymistä. Nämä työpaikat ovat odotettuja ja osoittavat, että OneLaken turvallisuusvalvonta on aktiivinen.
Kyselyvirta suojatulle taululle
- Käyttäjä suorittaa kyselyn Spark-muistikirjassa, esimerkiksi
SELECT * FROM lakehouse.sales. - Spark ratkaisee taulukon lakehouse-katalogin kautta ja havaitsee, että OneLake-turvallisuus on käytössä.
- Spark pyytää nykyiselle käyttäjälle tehokasta pääsyä OneLakelta. Vastaus sisältää sallitun sarakelistan (CLS) ja RLS-rivisuodattimen metatiedot.
- Järjestelmän tietoturvakonteksti lukee Delta-tiedostot, projisoi vain sallitut sarakkeet ja soveltaa RLS:ää käyttämällä bittikartta- tai poistovektorityylistä rivisuodatusta suorituksen aikana.
- Suodatettu tulos palautetaan käyttäjäkontekstiin, joka suorittaa loput käyttäjän kyselystä (liittymiset, aggregaatiot, kirjoitukset ei-suojattuihin kohteisiin jne.) jo suodatetun datan yli.
Mitä tapahtuu kullekin vakuutustyypille
| Käytäntö | Mitä Spark palaa | Huomautuksia |
|---|---|---|
| Vain RLS | Kaikki sarakkeet, mutta vain RLS-säännön sallimat rivit. | Rivisuodatus toteutetaan turvallisuuskontekstissa bittikartta- tai poistovektorityylisellä suodatuksella; Käyttäjät eivät voi havaita suodatinlogiikkaa. |
| Vain CLS | Vain sallitut sarakkeet; Kaikki rivit. |
SELECT * onnistuu ja palauttaa sallitut sarakkeet, kun vähintään yksi sarake on sallittu. Jos sarakkeita ei sallita, Spark epäonnistuu kyselyssä. |
| RLS + CLS samassa roolissa | Sallittiin rivien projisointi sallittuihin sarakkeisiin. | Tuettu, kunhan molemmat säännöt kuuluvat samaan rooliin. |
| RLS roolissa A, CLS roolissa B (sama käyttäjä) | Kysely epäonnistuu. | OneLake- ja Fabric-alustakerros ei tue käyttäjän jäsenyyttä kahteen rooliin, joissa toinen määrittelee RLS:n ja toinen CLS:n. Katso Rivitason turvallisuus ja Sarakketason turvallisuus. |
| Ei-Delta-objekti | Pääsy estetty. | OneLake- ja Fabric-alustakerros soveltaa RLS:ää ja CLS:ää vain Delta-parkettitauluihin; muut suojatussa roolissa olevat objektit ovat estettyjä. |
Kanonisia luontisääntöjä ja RLS-lausekesyntaksia varten katso rivitason turvallisuus - ja sarakketason turvallisuusartikkelit .
Miten Spark valmistaa dataa käyttäjille
OneLake-turvallisuus on suunniteltu olemaan läpinäkyvää datan kuluttajalle. Käyttäjät käyttävät edelleen jo tuntemiaan API-rajapintoja, ja Spark hoitaa politiikkojen ratkaisun ja suodatuksen heidän puolestaan.
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()
Molemmissa esimerkeissä DataFrameen transactions ladattu taulukkodata on jo suodatettu OneLake-turvallisuuden toimesta. Myöhemmät muunnokset toimivat vain suodatetun datan päällä.
Suora tiedostojen käyttö on estetty
Suora reittiyhteys ohittaa Lakehousen katalogipolitiikan ratkaisun. Kun OneLake-turvallisuus otetaan käyttöön pöydällä, OneLake- ja Fabric-alustakerros estää seuraavat mallit ei-privilegioiduille käyttäjille:
spark.read.format("delta").load("abfss://...")DeltaTable.forPath(spark, "abfss://...")- OneLake REST/SDK lukee suojatun
Tables/<table>taulukon kansiota vastaan.
Käyttäjien on päästävä suojattuihin tauluihin lakehouse-taulun nimen kautta (esimerkiksi spark.read.table("lakehouse.table") Spark SQL), jotta Spark voi ratkaista ja soveltaa tehokkaan pääsyn.
Käyttökokemus
- Läpinäkyvä suodatus. Kyselyiden uudelleenkirjoittamista tai erityistä syntaksia ei tarvita. Sama muistikirja toimii eri rooleissa toimiville käyttäjille ja palauttaa roolikohtaisia tietoja.
- Johdonmukaiset tulokset moottoreiden välillä. Sama RLS-sääntö ja CLS-projektio, joita sovelletaan Sparkissa, sovelletaan myös SQL-analytiikan päätepisteessä, Direct Lakeen rakennetuissa semanttisissa malleissa sekä valtuutetuissa kolmannen osapuolen moottoreissa. Katso OneLake-tietoturvaintegraatioiden yleiskatsaus.
- Etuoikeutetut roolit näkevät kaiken. Kun OneLake ja Fabric -alustan käyttäytymisen myötä workspace Admin, Member ja Contributor käyttäjät näkevät edelleen suodattamatonta dataa, mikä on hyödyllistä putkiston kehityksessä, taulujen ylläpidossa (
OPTIMIZE,VACUUM) ja vianetsinnässä. - Seuranta. Valvontakeskuksessa näkyvät
SparkSecurityControltehtävät vastaavat järjestelmäkontekstia, joka toteuttaa politiikan valvontaa. Työn nimi ja valvontakeskuksen merkintä ovat osa Fabric-alustan toimintaa.
Suorituskykyyn liittyviä huomioita
- RLS-rivisuodatus. RLS sovelletaan lähellä Delta-skannausta bittikartta- tai poistovektorityylisellä suodatuksella ja tarvittaessa Native Execution Enginellä. Tämä suunnittelu minimoi käyttäjän kontekstissa toteutuvat rivit.
- Pylväiden leikkaaminen. CLS-sarakkeellistat yhdistetään käyttäjän projektioon. Vain risteys luetaan Delta-varastosta.
- Tehokas pääsyvälimuisti. Spark välimuistittaa politiikka- ja tehokkaan pääsyn metatiedot per kysely ja puhdistaa ne, kun kyselyn suoritus pysähtyy.
- Osio- ja tilastojen käyttö. Tavallinen Delta-osioiden karsinta ja datan ohittaminen pätevät edelleen RLS-rivisuodatuksessa, joten osioitujen taulukoiden kyselyt pysyvät tehokkaina.
Tuetut skenaariot
- Lakehouse Delta -taulukoiden lukeminen Spark-muistikirjoista ja Spark-tehtävämääritelmien lukeminen Lakehouse-katalogin kautta (
<lakehouse>.<table>). - Spark SQL ja PySpark/Scala DataFrame API:t suojattuja tauluja vastaan.
- Liitokset, aggregaatiot ja alavirran muunnokset suojatuilla tauluilla.
- Kirjoittaa suojatuista lähteistä suojaamattomiin ulostuloksiin. Ulostulotaulukot, jotka on kirjoitettu suojatun järvenrakennuksen ulkopuolella, sisältävät vain jo suodatetun datan, jonka kirjoittaja sai lukea.
- Työtilan välinen lakehouse-pääsy pikanäppäinten kautta, joissa lähdejärvitalossa OneLake-suojaus on käytössä.
OneLake Spark -katalogin käyttöönotto
Jotta RLS ja CLS voidaan valvoa Sparkissa, OneLake Spark Catalog täytyy olla käytössä Spark-istuntoa varten. Tämä tehdään työpalvelun avulla, joka perustuu oletusjärvitaloon Spark-istunnolle. OneLake Spark Catalog otetaan käyttöön, jos:
- Spark-istunnon oletusjärvitalo on skeema päällä, tai
- Spark-istuntoa varten ei ole oletusjärvimajan settiä.
Näissä tapauksissa, kun oletusjärvitalon täytyy olla ei-skeema-käytössä, OneLake Spark Catalog voidaan ottaa käyttöön Spark-ominaisuuden kautta Ympäristössä. Aseta Spark-ominaisuus spark.sql.fabric.catalog.enable-schemaless-lakehousestrue ja valitse kyseinen ympäristö, kun suoritat Spark-tehtävän tai muistikirjan.
Rajoitukset
OneLake-turvallisuus RLS ja CLS Sparkissa perivät OneLake-turvallisuusrajoitukset. Merkittäviä käyttäytymismalleja ja rajoituksia ovat:
- OneLake- ja Fabric-alustakerros soveltaa RLS:ää ja CLS:ää vain Delta parquet-taulukoihin. Ei-Delta-objektit suojatussa roolissa ovat estettyjä.
- OneLake- ja Fabric-alustakerrokset estävät suorat polunlukut (
abfss://,DeltaTable.forPath) suojattuja tauluja vastaan ei-privilegioiduille käyttäjille. - OneLake- ja Fabric-alustakerros ei tue käyttäjän jäsenyyttä kahteen rooliin, joissa toinen määrittelee RLS:n ja toinen CLS:n kyseisille tauluille.
- Kun OneLake ja Fabric toimivat alustalla, workspace Admin, Member ja Contributor ohittavat RLS:n ja CLS:n.
- Kirjoitukset suojatuista lähteistä ei-suojattuihin ulostuloihin ovat tuettuja ja toimivat jo suodatetulla datalla. Kirjoitukset (INSERT/UPDATE/DELETE/MERGE) suojattuun kohteeseen saattavat olla tuettomia käyttäjille, jotka ovat RLS- tai CLS-alaisten alaisia; käyttää etuoikeutettua identiteettiä ETL-kirjoituksille suojattuihin tauluihin.