Referencia bezpečnostnej syntaxe na úrovni riadkov

Tento článok dokumentuje syntax definovania pravidiel bezpečnosti na úrovni riadkov (RLS) v OneLake bezpečnosti. Ak chcete aplikovať pravidlo RLS na tabuľku, pozrite si Vytvoriť a spravovať bezpečnostné roly OneLake.

Pravidlá zabezpečenia na úrovni riadkov používajú syntax SQL na určenie riadkov, ktoré sa používateľovi zobrazujú. Syntax má formu SQL príkazu SELECT s pravidlami RLS definovanými v klauzule WHERE . RLS pravidlá podporujú iba podmnožinu SQL definovanú v tomto článku. Dotazy s nesprávnou RLS syntaxou alebo RLS syntaxou, ktorá nezodpovedá základnej tabuľke, vedú k tomu, že používateľom nie sú zobrazené žiadne riadky, alebo k chybám dotazov v SQL analytics endpointe.

Pri písaní RLS výrazov majte na pamäti nasledujúce osvedčené postupy:

  • Vyhnite sa nejasným alebo príliš zložitým RLS výrazom.
  • Silne typované výrazy s celočíselným alebo reťazcovým vyhľadávaním, ktoré používajú "=", sú najbezpečnejšie a najľahšie pochopiteľné.
  • Používajte celočíselné stĺpce na triedenie a operácie väčšie alebo menšie.
  • Vyhnite sa ekvivalenciám reťazcov, ak nepoznáte formát vstupných dát, najmä pri Unicode znakoch alebo citlivosti na prízvuky.

Bezpečnosť na úrovni riadkov vyhodnocuje reťazce ako nerozlišujúce veľké písmená pomocou nasledujúcej triedy na triedenie a porovnania: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Syntax

Maximálny počet znakov v pravidle zabezpečenia na úrovni riadkov je 1 000.

Všetky pravidlá zabezpečenia na úrovni riadkov majú nasledujúci tvar:

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

Príklad:

SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
Zástupný symbol Popis
{schema_name} Názov schémy, ktorá obsahuje {table_name}. Ak položka podporuje schémy, musíte zahrnúť {schema_name}.
{table_name} Názov tabuľky, na ktorú sa RLS predikát vzťahuje. Táto hodnota musí presne zodpovedať názvu tabuľky, inak RLS nezobrazuje žiadne riadky. Použite hranaté zátvorky [] na únik názvov tabuliek pomocou špeciálnych znakov. Napríklad SELECT * FROM [dbo].[Secret.Table].
{column_level_boolean} Booleovský príkaz obsahujúci nasledujúce súčasti:

* Názov stĺpca: Názov stĺpca v {table_name}, ako sa objavuje v Delta log schéme. Názvy stĺpcov môžete formátovať buď ako {column_name} alebo {table_name}. {column_name}.
* Operátor: Jeden z podporovaných operátorov , ktorý vyhodnocuje názov a hodnotu stĺpca na Booleovu hodnotu.
* Hodnota: Statická hodnota alebo súbor hodnôt na vyhodnotenie.

Môžete mať jeden alebo viac booleovských príkazov oddelených operátorom AND alebo OR.

Podporované operátory

Bezpečnostné pravidlá na úrovni riadkov podporujú nasledujúce operátory a kľúčové slová:

Operator Popis
= (rovná sa) Vyhodnotí hodnotu true, ak ide o rovnaký typ údajov a presnú zhodu.
<> (nerovná sa) Vyhodnotí hodnotu true, ak tieto dve hodnoty nie sú rovnakým typom údajov a nie sú presne zhodné.
> (väčšie ako) Vyhodnotí sa ako true, ak je hodnota stĺpca väčšia ako hodnota vyhodnotenia. V prípade hodnôt reťazca tento operátor používa bitové porovnanie na určenie toho, či je jeden reťazec väčší ako druhý.
>= (väčšie ako alebo rovná sa) Vyhodnotí sa ako true, ak je hodnota stĺpca väčšia alebo rovná hodnote vyhodnotenia. V prípade hodnôt reťazcov tento operátor používa bitové porovnanie na určenie toho, či je jeden reťazec väčší alebo rovný druhému.
< (menšie ako) Vyhodnotí sa ako true, ak je hodnota stĺpca menšia ako hodnota vyhodnotenia. V prípade hodnôt reťazca tento operátor používa bitové porovnanie na určenie toho, či je jeden reťazec menší ako druhý.
<= (menšie ako alebo rovná sa) Vyhodnotí sa ako true, ak je hodnota stĺpca menšia alebo rovná hodnote vyhodnotenia. V prípade hodnôt reťazca tento operátor používa bitové porovnanie na určenie toho, či je jeden reťazec menší alebo rovný druhému.
IN Vyhodnotí hodnotu true, ak je niektorá z hodnôt vyhodnotenia rovnakým typom údajov a presne zodpovedá hodnote stĺpca.
NOT Vyhodnotí hodnotu true, ak niektorá z hodnôt vyhodnotenia nie je rovnakého typu údajov alebo nie je presná zhoda hodnoty stĺpca.
AND Kombinuje predchádzajúci príkaz a nasledujúci príkaz pomocou Booleovskej operácie AND. Oba príkazy musia byť pravdivé, aby celý predikát bol pravdivý.
OR Kombinuje predchádzajúci príkaz a nasledujúci príkaz pomocou operácie Booleovskej OR. Jeden z tvrdení musí byť pravdivý, aby celý predikát bol pravdivý.
TRUE Booleovský výraz pre výraz true.
FALSE Booleovský výraz pre hodnotu false.
BLANK Prázdny dátový typ, ktorý môžete použiť s operátorom IS. Napríklad row IS BLANK.
NULL Nulový dátový typ, ktorý môžete použiť s operátorom IS. Napríklad row IS NULL.