Del via


Sikkerhed på rækkeniveau i OneLake (prøveversion)

Sikkerhed på rækkeniveau (RLS) er en funktion i OneLake-sikkerhed (prøveversion), der gør det muligt at definere databegrænsninger på rækkeniveau for tabeldata, der er gemt i OneLake. Brugerne kan definere roller i OneLake, der indeholder regler for filtrering af rækker med data for medlemmer af den pågældende rolle. Når et medlem af en rolle for sikkerhed på rækkeniveau går til at forespørge om disse data, evalueres RLS-reglerne, og kun tilladte rækker returneres.

Seddel

OneLake-sikkerhed er i øjeblikket i en begrænset prøveversion. Hvis du vil anmode om at deltage i prøveversionen og få adgang til disse funktioner, skal du udfylde formularen på https://aka.ms/onelakesecuritypreview.

Forudsætninger

Gennemtving sikkerhed på rækkeniveau

OneLake security RLS gennemtvinges på to måder:

  • filtrerede tabeller i Fabric-motorer: Forespørgsler til listen over understøttede Fabric-motorer, f.eks. Spark-notesbøger, resulterer i, at brugeren kun får vist de rækker, de har tilladelse til at se i henhold til RLS-reglerne.
  • blokeret adgang til tabeller: Tabeller med RLS-regler, der er anvendt på dem, kan ikke læses uden for understøttede Fabric-motorer.

Følgende funktionsmåder gælder for filtrerede tabeller:

  • Regler for sikkerhed på rækkeniveau begrænser ikke adgangen for brugere i rollerne Administrator, Medlem og Bidragyder.
  • Hvis RLS-reglen har en uoverensstemmelse med den tabel, den er defineret for, mislykkes forespørgslen, og der returneres ingen rækker. Hvis RLS-reglen f.eks. refererer til en kolonne, der ikke er en del af tabellen.
  • Forespørgsler i RLS-tabeller mislykkes med en fejl, hvis en bruger er en del af to forskellige roller, og en af rollerne har sikkerhed på kolonneniveau (CLS).
  • RLS-regler kan kun gennemtvinges for objekter, der er Delta-parquettabeller.
    • RLS-regler, der anvendes på ikke-Delta-tabelobjekter, blokerer i stedet for adgang til hele tabellen for medlemmer af rollen.
  • Adgangen til en tabel kan blive blokeret, hvis RLS-sætningen indeholder syntaksfejl, der forhindrer, at den evalueres.

Definer sikkerhedsregler på rækkeniveau

Du kan definere sikkerhedsregler på rækkeniveau som en del af en hvilken som helst OneLake-sikkerhedsrolle, der giver adgang til tabeldata i Delta-parquetformat. Rækker er kun et begreb, der er relevant for tabeldata, så RLS-definitioner er ikke tilladt for ikke-tabelmapper eller ustrukturerede data.

RLS-regler bruger SQL-syntaks til at angive de rækker, som en bruger kan se. Denne syntaks har form af en SQL SELECT-sætning med de RLS-regler, der er defineret i WHERE-delsætningen. RLS-regler understøtter kun et undersæt af SQL-sproget som defineret i Syntaksregler. Forespørgsler med ugyldig RLS-syntaks eller RLS-syntaks, der ikke stemmer overens med den underliggende tabel, resulterer i, at der ikke vises nogen rækker til brugerne, eller forespørgselsfejl i SQL-analyseslutpunktet.

Som en bedste fremgangsmåde bør du undgå at bruge vage eller alt for komplekse RLS-udtryk. Stærkt indtastede udtryk med heltal eller strengopslag med "=" vil være de mest sikre og nemme at forstå.

Brug følgende trin til at definere regler for sikkerhed på rækkeniveau:

  1. Gå til dit Lakehouse, og vælg Administrer OneLake-sikkerhed (forhåndsversion).

  2. Vælg en eksisterende rolle, du vil definere tabel- eller mappesikkerhed for, eller vælg Ny for at oprette en ny rolle.

  3. På siden med rolleoplysninger skal du vælge flere indstillinger (...) ud for den tabel, du vil definere sikkerhed på rækkeniveau for, og derefter vælge Rækkesikkerhed (prøveversion).

    Skærmbillede, der viser, hvordan du vælger 'rækkesikkerhed' for at redigere tilladelser til en tabel.

  4. Skriv SQL-sætningen for at definere, hvilke rækker brugerne skal se i kodeeditoren. Brug afsnittet Syntaksregler for at få vejledning.

  5. Vælg Gem for at bekræfte rækkesikkerhedsreglerne.

Aktivér OneLake-sikkerhed for SQL-analyseslutpunkt

Før du kan bruge OneLake-sikkerhed med SQL Analytics-slutpunktet, skal du aktivere brugerens identitetstilstand. Nyoprettede SQL-analyseslutpunkter bruger som standard brugerens identitetstilstand, så disse trin skal følges for eksisterende SQL-analyseslutpunkter.

Seddel

Skift til brugerens identitetstilstand skal kun udføres én gang pr. SQL-analyseslutpunkt. Slutpunkter, der ikke ændres til brugerens identitetstilstand, bruger fortsat en delegeret identitet til at evaluere tilladelser.

  1. Gå til SQL Analytics-slutpunktet.

  2. I SQL Analytics-slutpunktsoplevelsen skal du vælge fanen Sikkerhed på det øverste bånd.

  3. Vælg Brugerens identitet under OneLake-adgangstilstand.

    Skærmbillede, der viser, hvordan du vælger 'brugeridentitet' for at aktivere OneLake-sikkerhed for SQL-analyseslutpunktet.

  4. Vælg Ja i prompten , og brug brugerens identitet.

    Skærmbillede, der viser brugerprompten, som skal accepteres for at aktivere OneLake-sikkerhed for læseadgang til tabellen.

Nu er SQL Analytics-slutpunktet klar til brug med OneLake-sikkerhed.

Syntaksregler

Alle sikkerhedsregler på rækkeniveau har følgende form:

SELECT * FROM {schema_name}.{table_name} WHERE {column_level_boolean_1}{column_level_boolean_2}...{column_level_boolean_N}

Eksempler:

SELECT * FROM Sales WHERE Amount>'50000' AND State='CA'

Det maksimale antal tegn i en sikkerhedsregel på rækkeniveau er 1000.

Pladsholder Beskrivelse
{schema_name} Navnet på skemaet, hvor {table_name} er placeret. Hvis artefaktet understøtter skemaer, er {schema_name} påkrævet.
{table_name} Navnet på den tabel, som RLS-prædikatet anvendes på. Denne værdi skal være et nøjagtigt match med navnet på tabellen, ellers resulterer RLS i, at der ikke vises nogen rækker.
{column_level_boolean} En boolesk sætning, der indeholder følgende komponenter:

* Kolonnenavn: Navnet på en kolonne i {table_name} som angivet i Delta-logskemaet. Kolonnenavne kan formateres enten som {column_name} eller {table_name}. {column_name}.
* Operator: En af de Understøttede operatorer, der evaluerer kolonnenavnet og -værdien til en boolesk værdi.
* Værdi: En statisk værdi eller et sæt værdier, der skal evalueres i forhold til.

Du kan have et eller flere booleske sætninger adskilt af AND eller OR.

Understøttede operatorer

Sikkerhedsregler på rækkeniveau understøtter følgende liste over operatorer og nøgleord:

Operatør Beskrivelse
= (er lig med) Evalueres til sand, hvis de to værdier er den samme datatype og nøjagtige match.
<> (ikke lig med) Evalueres til sand, hvis de to værdier ikke er den samme datatype og ikke svarer nøjagtigt til hinanden.
> (større end) Evalueres til sand, hvis kolonneværdien er større end evalueringsværdien. I forbindelse med strengværdier bruger denne operator bitvis sammenligning til at bestemme, om den ene streng er større end den anden.
>= (større end eller lig med) Evalueres til sand, hvis kolonneværdien er større end eller lig med evalueringsværdien. I forbindelse med strengværdier bruger denne operator bitvis sammenligning til at bestemme, om én streng er større end eller lig med den anden.
< (mindre end) Evalueres til sand, hvis kolonneværdien er mindre end evalueringsværdien. I forbindelse med strengværdier bruger denne operator bitvis sammenligning til at bestemme, om den ene streng er mindre end den anden.
<= (mindre end eller lig med) Evalueres til sand, hvis kolonneværdien er mindre end eller lig med evalueringsværdien. I forbindelse med strengværdier bruger denne operator bitvis sammenligning til at bestemme, om den ene streng er mindre end eller lig med den anden.
I Evalueres til sand, hvis nogen af evalueringsværdierne er af samme datatype og stemmer nøjagtigt overens med kolonneværdien.
IKKE Evalueres til sand, hvis nogen af evalueringsværdierne ikke er den samme datatype eller ikke svarer nøjagtigt til kolonneværdien.
OG Kombinerer den forrige sætning og den efterfølgende sætning ved hjælp af en boolesk AND-handling. Begge sætninger skal være sande, for at hele prædikatet er sandt.
ELLER Kombinerer den forrige sætning og den efterfølgende sætning ved hjælp af en boolesk OR-handling. Et af sætningerne skal være true, for at hele prædikatet er sandt.
SANDT Det booleske udtryk for true.
FALSK Det booleske udtryk for false.
TOM Den tomme datatype, som kan bruges sammen med IS-operatoren. Det kunne f.eks. være row IS BLANK.
NUL Datatypen null, som kan bruges sammen med IS-operatoren. Det kunne f.eks. være row IS NULL.

Kombiner sikkerhed på rækkeniveau og kolonneniveau

Sikkerhed på rækkeniveau og kolonneniveau kan bruges sammen til at begrænse brugeradgang til en tabel. De to politikker skal dog anvendes ved hjælp af en enkelt OneLake-sikkerhedsrolle. I dette scenarie er adgangen til data begrænset i henhold til de regler, der er angivet i den ene rolle.

OneLake-sikkerhed understøtter ikke kombinationen af to eller flere roller, hvor den ene indeholder RLS-regler, og en anden indeholder CLS-regler. Brugere, der forsøger at få adgang til tabeller, der er en del af en ikke-understøttet rollekombination, modtager forespørgselsfejl.