Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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. |