Referenční odkaz bezpečnostní syntaxe na úrovni řádků

Tento článek dokumentuje syntaxi pro definování pravidel bezpečnosti na úrovni řádku (RLS) v OneLake bezpečnosti. Pro aplikaci RLS pravidla na tabulku viz Vytvořit a spravovat bezpečnostní role OneLake.

Pravidla zabezpečení na úrovni řádků (RLS) používají syntaxi SQL k určení řádků, které může uživatel zobrazit. Syntaxe má podobu SQL příkazu SELECT s pravidly RLS definovanými ve klauzuli WHERE . Pravidla RLS podporují pouze podmnožinu SQL definovanou v tomto článku. Dotazy s neplatnou RLS syntaxí nebo RLS syntaxí, která neodpovídá základní tabulce, vedou k tomu, že uživatelé nezobrazí žádné řádky, nebo k chybám dotazů v SQL analytickém endpointu.

Při psaní RLS výrazů mějte na paměti následující osvědčené postupy:

  • Vyhněte se vágním nebo příliš složitým RLS výrazům.
  • Silně typované výrazy s celočíselnými nebo řetězcovými vyhledáváními, které používají "=", jsou nejbezpečnější a nejsnáze pochopitelné.
  • Pro třídění a operace s proměnnými nebo menšími než používají celočíselné sloupce.
  • Vyhněte se ekvivalencím řetězců, pokud neznáte formát vstupních dat, zejména u Unicode znaků nebo citlivosti na přízvuk.

Bezpečnost na úrovni řádku hodnotí data řetězců jako necitlivá na velká písmena pomocí následující třídění a porovnání: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Syntax

Maximální počet znaků v pravidle zabezpečení na úrovni řádků je 1000.

Všechna pravidla zabezpečení na úrovni řádků mají následující podobu:

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

Příklady:

SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
Zástupný symbol Description
{schema_name} Název schématu obsahujícího {table_name}. Pokud položka podporuje schémata, musíte zahrnout {schema_name}.
{table_name} Název tabulky, na kterou se RLS predikát vztahuje. Tato hodnota musí přesně odpovídat názvu tabulky, jinak RLS neukazuje žádné řádky. Používejte hranaté závorky [] pro únik názvů tabulek pomocí speciálních znaků. Například: SELECT * FROM [dbo].[Secret.Table].
{column_level_boolean} Logický příkaz obsahující následující komponenty:

* Název sloupce: Název sloupce v {table_name}, jak se objevuje v logaristickém schématu Delta. Názvy sloupců můžete formátovat buď jako {column_name} nebo {table_name}. {column_name}.
* Operátor: Jeden z podporovaných operátorů , který vyhodnocuje název a hodnotu sloupce na Booleovskou hodnotu.
* Hodnota: Statická hodnota nebo sada hodnot pro vyhodnocení.

Můžete mít jeden nebo více logických příkazů oddělených operátorem AND nebo OR.

Podporované operátory

Bezpečnostní pravidla na úrovni řádků podporují následující operátory a klíčová slova:

Operátor Description
= (rovná se) Vyhodnotí se jako "true", pokud mají dvě hodnoty stejný datový typ a jsou přesně shodné.
<> (nerovná se) Vyhodnotí se jako true, pokud dvě hodnoty nejsou stejného datového typu a nejsou přesné shody.
> (větší než) Vyhodnotí se jako true, pokud je hodnota sloupce větší než hodnota vyhodnocení. U řetězcových hodnot tento operátor používá bitové porovnání k určení, jestli je jeden řetězec větší než druhý.
>= (větší než nebo rovno) Vyhodnotí se jako true, pokud je hodnota sloupce větší nebo rovna hodnotě vyhodnocení. U řetězcových hodnot tento operátor používá bitové porovnání k určení, jestli je jeden řetězec větší nebo roven druhému.
< (menší než) Vyhodnotí se jako true, pokud je hodnota sloupce menší než hodnota vyhodnocení. U řetězcových hodnot tento operátor používá bitové porovnání k určení, jestli je jeden řetězec menší než druhý.
<= (menší než nebo rovno) Vyhodnotí se jako true, pokud je hodnota sloupce menší nebo rovna hodnotě vyhodnocení. U řetězcových hodnot tento operátor používá bitové porovnání k určení, jestli je jeden řetězec menší nebo roven druhému.
IN Vyhodnotí se jako true, pokud některé z hodnot vyhodnocení jsou stejného datového typu a přesně odpovídají hodnotě sloupce.
NOT Vyhodnotí se jako true, pokud některá z hodnot hodnocení nemají stejný datový typ nebo přesně neodpovídají hodnotě sloupce.
AND Kombinuje předchozí a následující příkaz pomocí operace Booleovské AND. Oba příkazy musí být pravdivé, aby celý predikát byl pravdivý.
OR Kombinuje předchozí a následující tvrzení pomocí Booleovské operace OR. Jeden z výroků musí být pravdivý, aby byl celý predikát pravdivý.
TRUE Logický výraz pro hodnotu true.
FALSE Logický výraz pro nepravda.
BLANK Prázdný datový typ, který můžete použít s operátorem IS. Například: row IS BLANK.
NULL Nulový datový typ, který můžete použít s operátorem IS. Například: row IS NULL.