Referens för säkerhetssyntax på radnivå

Denna artikel dokumenterar syntaxen för att definiera radnivå-säkerhetsregler (RLS) i OneLake-säkerhet. För att tillämpa en RLS-regel på en tabell, se Skapa och hantera OneLake-säkerhetsroller.

RLS-regler använder SQL-syntax för att ange de rader som en användare kan se. Syntaxen tar formen av en SQL-sats SELECT med RLS-reglerna definierade i klausulen WHERE . RLS-regler stöder endast den delmängd av SQL som definieras i denna artikel. Frågor med ogiltig RLS-syntax, eller RLS-syntax som inte matchar den underliggande tabellen, resulterar i att inga rader visas för användarna eller att det uppstår frågefel i SQL-analysens endpoint.

När du skriver RLS-uttryck, ha följande bästa praxis i åtanke:

  • Undvik vaga eller alltför komplexa RLS-uttryck.
  • Starkt typade uttryck med heltals- eller stränguppslagningar som använder "=" är de säkraste och lättast att förstå.
  • Använd heltalskolumner för sortering och större än eller mindre än-operationer.
  • Undvik strängekvivalenser om du inte känner till formatet på indatan, särskilt för Unicode-tecken eller accentkänslighet.

Säkerheten på radnivå utvärderar strängdata som kasuskänslig genom att använda följande sortering och jämförelser: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Syntax

Det maximala antalet tecken i en säkerhetsregel på radnivå är 1 000.

Alla säkerhetsregler på radnivå har följande formulär:

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

Ett exempel:

SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
Platshållare Beskrivning
{schema_name} Namnet på schemat som innehåller {table_name}. Om objektet stödjer scheman måste du inkludera {schema_name}.
{table_name} Namnet på tabellen som RLS-predikatet gäller för. Detta värde måste exakt matcha tabellens namn, annars visar RLS inga rader. Använd hakparenteser [] för att escape-tabellnamn med specialtecken. Till exempel SELECT * FROM [dbo].[Secret.Table].
{kolumnnivå_boolean} En boolesk instruktion som innehåller följande komponenter:

* Kolumnnamn: Namnet på en kolumn i {table_name}, som det förekommer i Delta-loggschemat. Du kan formatera kolumnnamn som antingen {column_name} eller {table_name}. {column_name}.
* Operator: En av de stödda operatorerna som utvärderar kolumnnamnet och värdet till ett boolesk värde.
* Värde: Ett statiskt värde eller en uppsättning värden att utvärdera mot.

Du kan ha en eller flera booleska instruktioner avgränsade med AND eller OR.

Operatorer som stöds

Säkerhetsregler på radnivå stödjer följande operatorer och nyckelord:

Operator Beskrivning
= (lika med) Utvärderas till sant om de två värdena är samma datatyp och exakta matchningar.
<> (inte lika med) Utvärderas till sant om de två värdena inte är samma datatyp och inte exakta matchningar.
> (större än) Utvärderas till true om kolumnvärdet är större än utvärderingsvärdet. För strängvärden använder den här operatorn bitvis jämförelse för att avgöra om en sträng är större än den andra.
>= (större än eller lika med) Utvärderas till true om kolumnvärdet är större än eller lika med utvärderingsvärdet. För strängvärden använder den här operatorn bitvis jämförelse för att avgöra om en sträng är större än eller lika med den andra.
< (mindre än) Utvärderas till true om kolumnvärdet är mindre än utvärderingsvärdet. För strängvärden använder den här operatorn bitvis jämförelse för att avgöra om en sträng är mindre än den andra.
<= (mindre än eller lika med) Utvärderas till true om kolumnvärdet är mindre än eller lika med utvärderingsvärdet. För strängvärden använder den här operatorn bitvis jämförelse för att avgöra om en sträng är mindre än eller lika med den andra.
IN Utvärderas till true om något av utvärderingsvärdena är samma datatyp och exakt matchar kolumnvärdet.
NOT Utvärderas till sant om något av utvärderingsvärdena inte är samma datatyp eller inte en exakt matchning av kolumnvärdet.
AND Kombinerar föregående sats och efterföljande sats genom att använda en boolesk OCH-operation. Båda påståendena måste vara sanna för att hela predikatet ska vara sant.
OR Kombinerar föregående sats och efterföljande sats genom att använda en boolesk ELLER-operation. Ett av påståendena måste vara sant för att hela predikatet ska vara sant.
TRUE Det booleska uttrycket för true.
FALSE Den Booleska uttrycket för falskt.
BLANK Den tomma datatypen, som du kan använda med IS-operatorn. Till exempel row IS BLANK.
NULL Nolldatatypen, som du kan använda med IS-operatorn. Till exempel row IS NULL.