Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Sikkerhet på radnivå (RLS) er en funksjon i OneLake-sikkerhet (forhåndsvisning) som gjør det mulig å definere databegrensninger på radnivå for tabelldata som er lagret i OneLake. Brukere kan definere roller i OneLake som inneholder regler for filtrering av rader med data for medlemmer av denne rollen. Når et medlem av en RLS-rolle går for å spørre etter disse dataene, evalueres RLS-reglene og bare tillatte rader returneres. RLS-regler definert i OneLake håndheves konsekvent på tvers av Fabric-motorer og autoriserte tredjepartsmotorer via OneLake-API-er, noe som sikrer at en enkelt policydefinisjon anvendes uavhengig av spørringsmotoren.
Forutsetninger
- Et element i OneLake med OneLake-sikkerhet aktivert. Hvis du vil ha mer informasjon, kan du se Komme i gang med OneLake-datatilgangsroller.
- Bytt SQL Analytics-endepunktet på lakehouse til «Brukerens identitet»-modus gjennom Sikkerhet-fanen .
- Hvis du vil opprette semantiske modeller, kan du bruke fremgangsmåten for å opprette en DirectLake-modell.
- Hvis du vil ha en fullstendig liste over begrensninger, kan du se delen kjente begrensninger.
Fremtving sikkerhet på radnivå
OneLake security RLS håndheves på én av to måter:
- Filtrerte tabeller i Stoffmotorer: Spørringer til listen over støttede Stoffmotorer, for eksempel Spark-notatblokker, fører til at brukeren bare ser radene de har lov til å se i henhold til RLS-reglene.
- Blokkert tilgang til tabeller: Tabeller med RLS-regler kan ikke leses utenfor støttede Fabric-motorer eller autoriserte tredjepartsmotorer som håndhever OneLake-sikkerhet. Tilgangen er blokkert for ikke-autoriserte motorer.
For filtrerte tabeller gjelder følgende virkemåte:
- RLS-regler begrenser ikke tilgangen for brukere i rollene Administrator, Medlem og Bidragsyter.
- Hvis RLS-regelen ikke samsvarer med tabellen den er definert for, mislykkes spørringen, og ingen rader returneres. Hvis RLS-regelen for eksempel refererer til en kolonne som ikke er en del av tabellen.
- Spørringer i RLS-tabeller mislykkes med en feil hvis en bruker er en del av to forskjellige roller, og én av rollene har sikkerhet på kolonnenivå (CLS).
- RLS-regler kan bare håndheves for objekter som er Delta-parketttabeller.
- RLS-regler som brukes på ikke-Delta-tabellobjekter, blokkerer i stedet tilgang til hele tabellen for medlemmer av rollen.
- Tilgang til en tabell kan blokkeres hvis RLS-setningen inneholder syntaksfeil som hindrer at den evalueres.
Autorisert motorhåndheving
Autoriserte tredjepartsmotorer kan hente effektive tilgangsdefinisjoner, inkludert RLS-predikater, via autoriserte motor-API-er. OneLake returnerer motoragnostiske, forhåndsberegnet effektiv tilgang for den forespørrende brukeren, og den autoriserte motoren håndhever policyene ved spørringstidspunktet. OneLake er fortsatt den eneste sannhetskilden for sikkerhetspolitikk.
For mer informasjon, se Integrer en tredjepartsmotor med OneLake-sikkerhet.
Definer sikkerhetsregler på radnivå
Du kan definere sikkerhetsregler på radnivå som en del av en hvilken som helst OneLake-sikkerhetsrolle som gir tilgang til tabelldata i Delta-parkettformat. Rader er bare et konsept som er relevant for tabelldata, så RLS-definisjoner er ikke tillatt for mapper som ikke er tabeller eller ustrukturerte data.
RLS-regler bruker SQL-syntaks for å angi radene som en bruker kan se. Denne syntaksen tar form av en SQL SELECT-setning med RLS-reglene som er definert i WHERE-setningsdelen. RLS-regler støtter bare et delsett av SQL-språket som definert i Syntaksregler. Spørringer med ugyldig RLS-syntaks eller RLS-syntaks som ikke samsvarer med den underliggende tabellen, fører til at ingen rader vises for brukere, eller spørringsfeil i endepunktet for SQL-analyse.
Som en anbefalt fremgangsmåte bør du unngå å bruke vage eller altfor komplekse RLS-uttrykk. Sterkt skrevne uttrykk med heltalls- eller strengoppslag med "=" vil være de sikreste og mest enkle å forstå.
Bruk følgende fremgangsmåte for å definere RLS-regler:
Gå til Lakehouse, og velg Administrer OneLake-sikkerhet (forhåndsversjon).
Velg en eksisterende rolle du vil definere tabell- eller mappesikkerhet for, eller velg Ny for å opprette en ny rolle.
Velg flere alternativer på rolledetaljersiden (...) ved siden av tabellen du vil definere RLS for, og velg deretter Radsikkerhet (forhåndsversjon).
Skriv inn SQL-setningen for å definere hvilke rader du vil at brukerne skal se i koderedigeringsprogrammet. Bruk syntaksregler inndelingen for veiledning.
Velg Lagre for å bekrefte radsikkerhetsreglene.
Aktiver OneLake-sikkerhet for SQL Analytics-endepunkt
Før du kan bruke OneLake-sikkerhet med SQL Analytics-endepunkt, må du aktivere brukerens identitetsmodus. Nyopprettede SQL-analyseendepunkter vil som standard bruke brukerens identitetsmodus, så disse trinnene må følges for eksisterende SQL-analyseendepunkter.
Notat
Bytte til brukerens identitetsmodus trenger bare å gjøres én gang per SQL Analytics-endepunkt. Endepunkter som ikke byttes til brukerens identitetsmodus, fortsetter å bruke en delegert identitet til å evaluere tillatelser.
Gå til endepunktet for SQL-analyse.
Velg Sikkerhet-fanen på det øverste båndet i SQL Analytics-endepunktopplevelsen.
Velg brukerens identitet under OneLake-tilgangsmodus.
Velg Ja i ledeteksten, bruk brukerens identitet.
Nå er SQL Analytics-endepunktet klart til bruk med OneLake-sikkerhet.
Syntaksregler
Alle sikkerhetsregler på radnivå tar følgende skjema:
SELECT * FROM {schema_name}.{table_name} WHERE {column_level_boolean_1}{column_level_boolean_2}...{column_level_boolean_N}
Eksempel:
SELECT * FROM Sales WHERE Amount>'50000' AND State='CA'
Maksimalt antall tegn i en sikkerhetsregel på radnivå er 1000.
| Plassholder | Beskrivelse |
|---|---|
| {schema_name} | Navnet på skjemaet der {table_name} er plassert. Hvis artefakten støtter skjemaer, kreves {schema_name}. |
| {table_name} | Navnet på tabellen som RLS-predikatet brukes på. Denne verdien må være et nøyaktig samsvar med navnet på tabellen, ellers vil RLS resultere i at ingen rader vises. |
| {column_level_boolean} | En boolsk setning som inneholder følgende komponenter: * Kolonnenavn: Navnet på en kolonne i {table_name} som angitt i Delta-loggskjemaet. Kolonnenavn kan formateres enten som {column_name} eller {table_name}. {column_name}. * Operator: Én av de støttede operatorene som evaluerer kolonnenavnet og verdien til en boolsk verdi. * Verdi: En statisk verdi eller et sett med verdier som skal evalueres mot. Du kan ha én eller flere boolske setninger atskilt med AND eller OR. |
Støttede operatorer
Sikkerhetsregler på radnivå støtter følgende liste over operatorer og nøkkelord:
| Operatør | Beskrivelse |
|---|---|
| = (er lik) | Evaluerer til sann hvis de to verdiene er samme datatype og nøyaktige treff. |
| <> (er ikke lik) | Evalueres til sann hvis de to verdiene ikke er samme datatype og ikke samsvarer nøyaktig. |
| > (større enn) | Evalueres til sann hvis kolonneverdien er større enn evalueringsverdien. For strengverdier bruker denne operatoren bitvis sammenligning for å avgjøre om én streng er større enn den andre. |
| >= (større enn eller lik) | Evalueres til sann hvis kolonneverdien er større enn eller lik evalueringsverdien. For strengverdier bruker denne operatoren bitvis sammenligning for å avgjøre om én streng er større enn eller lik den andre. |
| < (mindre enn) | Evaluerer til sann hvis kolonneverdien er mindre enn evalueringsverdien. For strengverdier bruker denne operatoren bitvis sammenligning for å avgjøre om én streng er mindre enn den andre. |
| <= (mindre enn eller lik) | Evalueres til sann hvis kolonneverdien er mindre enn eller lik evalueringsverdien. For strengverdier bruker denne operatoren bitvis sammenligning for å avgjøre om én streng er mindre enn eller lik den andre. |
| INN | Evalueres til sann hvis noen av evalueringsverdiene er den samme datatypen og samsvarer nøyaktig med kolonneverdien. |
| IKKE | Evalueres til sann hvis noen av evalueringsverdiene ikke er samme datatype eller ikke et nøyaktig samsvar med kolonneverdien. |
| OG | Kombinerer det forrige uttrykket og det etterfølgende uttrykket ved hjelp av en boolsk OG-operasjon. Begge setningene må være sanne for at hele predikatet skal være sant. |
| ELLER | Kombinerer det forrige uttrykket og det etterfølgende uttrykket ved hjelp av en boolsk ELLER-operasjon. En av uttrykkene må være sann for at hele predikatet skal være sant. |
| SANN | Det boolske uttrykket for sann. |
| FALSK | Boolsk uttrykk for usann. |
| TOM | Den tomme datatypen, som kan brukes med IS-operatoren. For eksempel row IS BLANK. |
| NULL | Nulldatatypen, som kan brukes med IS-operatoren. For eksempel row IS NULL. |
Kombinere sikkerhet på radnivå og kolonnenivå
Sikkerhet på radnivå og kolonnenivå kan brukes sammen for å begrense brukertilgang til en tabell. De to policyene må imidlertid brukes ved hjelp av én enkelt OneLake-sikkerhetsrolle. I dette scenarioet begrenses tilgangen til data i henhold til reglene som er angitt i én rolle.
OneLake-sikkerhet støtter ikke kombinasjonen av to eller flere roller der én inneholder RLS-regler, og en annen inneholder CLS-regler. Brukere som prøver å få tilgang til tabeller som er en del av en rollekombinasjon som ikke støttes, mottar spørringsfeil.