Referanse for rad-nivå sikkerhetssyntaks

Denne artikkelen dokumenterer syntaksen for å definere radnivå-sikkerhetsregler (RLS) i OneLake-sikkerhet. For å anvende en RLS-regel på en tabell, se Opprett og administrer OneLake sikkerhetsroller.

RLS-regler bruker SQL-syntaks for å angi radene som en bruker kan se. Syntaksen tar form av en SQL-setning SELECT med RLS-reglene definert i klausulen WHERE . RLS-regler støtter kun delmengden av SQL definert i denne artikkelen. Forespørsler med ugyldig RLS-syntaks, eller RLS-syntaks som ikke samsvarer med den underliggende tabellen, resulterer i at ingen rader vises for brukerne, eller at det oppstår spørringsfeil i SQL-analyse-endepunktet.

Når du skriver RLS-uttrykk, husk følgende beste praksis:

  • Unngå vage eller altfor komplekse RLS-uttrykk.
  • Sterkt typede uttrykk med heltalls- eller strengoppslag som bruker "=" er de sikreste og lettest å forstå.
  • Bruk heltallskolonner for sortering og større eller mindre enn-operasjoner.
  • Unngå strengekvivalenser hvis du ikke kjenner formatet på inputdataene, spesielt for Unicode-tegn eller aksentfølsomhet.

Sikkerhet på radnivå vurderer strengdata som kasus-sensitive ved å bruke følgende sortering og sammenligninger: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Syntaks

Maksimalt antall tegn i en sikkerhetsregel på radnivå er 1000.

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'
Plassholder Beskrivelse
{schema_name} Navnet på skjemaet som inneholder {table_name}. Hvis elementet støtter skjemaer, må du inkludere {schema_name}.
{table_name} Navnet på tabellen som RLS-predikatet gjelder for. Denne verdien må samsvare nøyaktig med navnet på tabellen, ellers viser RLS ingen rader. Bruk hakeparentes [] for å escape-tabellnavn med spesialtegn. Eksempel: SELECT * FROM [dbo].[Secret.Table].
{column_level_boolean} En boolsk setning som inneholder følgende komponenter:

* Kolonnenavn: Navnet på en kolonne i {table_name}, slik det vises i Delta-loggskjemaet. Du kan formatere kolonnenavn som enten {column_name} eller {table_name}. {column_name}.
* Operator: En av de støttede operatorene som evaluerer kolonnenavnet og verdien til en boolsk verdi.
* Verdi: En statisk verdi eller sett med verdier å evaluere mot.

Du kan ha én eller flere boolske setninger atskilt med AND eller OR.

Støttede operatorer

Sikkerhetsregler på radnivå støtter følgende operatorer og nøkkelord:

Operatør Beskrivelse
= (likestilt) 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.
IN Evalueres til sann hvis noen av evalueringsverdiene er den samme datatypen og samsvarer nøyaktig med kolonneverdien.
NOT Evalueres til sann hvis noen av evalueringsverdiene ikke er samme datatype eller ikke et nøyaktig samsvar med kolonneverdien.
AND Kombinerer forrige utsagn og påfølgende utsagn ved å bruke en boolsk OG-operasjon. Begge setningene må være sanne for at hele predikatet skal være sant.
OR Kombinerer forrige setning og påfølgende setning ved å bruke en boolsk ELLER-operasjon. En av uttrykkene må være sann for at hele predikatet skal være sant.
TRUE Det boolske uttrykket for sann.
FALSE Boolsk uttrykk for usann.
BLANK Den tomme datatypen, som du kan bruke med IS-operatoren. Eksempel: row IS BLANK.
NULL Null-datatypen, som du kan bruke med IS-operatoren. Eksempel: row IS NULL.