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.
Zabezpečení na úrovni řádků (RLS) je funkce zabezpečení OneLake (Preview), která umožňuje definovat omezení dat na úrovni řádků pro tabulková data uložená v OneLake. Uživatelé mohou definovat role ve OneLake, které obsahují pravidla pro filtrování řádků dat pro členy této role. Když člen role RLS provede dotaz na data, pravidla RLS se vyhodnotí a vrátí se pouze povolené řádky.
Poznámka:
Zabezpečení OneLake je v současné době v omezené zkušební verzi. Pokud chcete požádat o připojení k verzi Preview a získat přístup k těmto funkcím, vyplňte formulář na https://aka.ms/onelakesecuritypreview.
Požadavky
- Lakehouse v OneLake s aktivovanými rolemi pro přístup k datům OneLake. Další informace najdete v tématu Začínáme s rolemi přístupu k datům OneLake.
Vynutit zabezpečení na úrovni jednotlivých řádků
Zabezpečení OneLake s RLS se vynucuje jedním ze dvou způsobů:
- Filtrované tabulky v enginech Fabric: Dotazy na seznam podporovaných enginech Fabric, jako jsou poznámkové bloky Sparku, způsobí, že uživatel uvidí pouze řádky, které může zobrazit podle pravidel RLS (Row-Level Security).
- Blokovaný přístup k tabulkám: Tabulky s použitými pravidly zabezpečení na úrovni řádků nelze číst mimo podporované systémy Fabric.
U filtrovaných tabulek platí následující chování:
- Pravidla RLS (Zabezpečení na úrovni řádků) neomezují přístup pro uživatele v rolích správce, člena a přispěvatele.
- Pokud má pravidlo RLS neshodu s tabulkou, na které je definováno, dotaz selže a nevrátí žádné řádky. Pokud například pravidlo zabezpečení na úrovni řádků odkazuje na sloupec, který není součástí tabulky.
- Dotazy na tabulky RLS selžou s chybou, pokud je uživatel součástí dvou různých rolí a jedna z rolí má zabezpečení na úrovni sloupců (CLS).
- Pravidla RLS je možné vynutit pouze pro objekty, které jsou tabulkami Delta Parquet.
- Pravidla zabezpečení na úrovni řádků, která jsou použita na tabulkové objekty jiné než Delta, zamezí členům role přístup k celé tabulce.
- Přístup k tabulce může být blokovaný, pokud příkaz RLS obsahuje chyby syntaxe, které brání jeho vyhodnocení.
Definování pravidel zabezpečení na úrovni řádků
Pravidla zabezpečení na úrovni řádků můžete definovat jako součást jakékoli role zabezpečení OneLake, která uděluje přístup k datům tabulky ve formátu Delta parquet. Řádky jsou konceptem relevantní pouze pro tabulková data, takže definice zabezpečení na úrovni řádků nejsou povolené pro složky mimo tabulky nebo nestrukturovaná data.
Pravidla zabezpečení na úrovni řádků (RLS) používají syntaxi SQL k určení řádků, které může uživatel zobrazit. Tato syntaxe má formu příkazu SQL SELECT
s pravidly zabezpečení na úrovni řádků definovanými v klauzuli WHERE
. Pravidla zabezpečení na úrovni řádků podporují pouze podmnožinu jazyka SQL, jak je definováno v pravidlech syntaxe. Dotazy s neplatnou syntaxí zabezpečení na úrovni řádků (RLS) nebo syntaxí RLS, která neodpovídá podkladové tabulce, mohou vést k tomu, že se uživatelům nezobrazují žádné řádky, nebo k chybám dotazů v koncovém bodu analýzy SQL.
Použijte následující kroky k definování pravidel RLS:
Přejděte do svého Lakehouse a vyberte Spravovat přístup k datům OneLake (náhled).
Vyberte existující roli, pro kterou chcete definovat zabezpečení tabulky nebo složky, nebo vyberte Nová a vytvořte novou roli.
Na stránce podrobností o roli vyberte další možnosti (...) vedle tabulky, pro kterou chcete definovat zabezpečení řádků, a pak vyberte Zabezpečení řádků (preview).
Zadejte příkaz SQL pro definování řádků, které mají uživatelé vidět v editoru kódu. Použijte část pravidla syntaxe jako vodítko.
Chcete-li potvrdit pravidla zabezpečení řádků, vyberte možnost Uložit.
Pravidla syntaxe
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}
Například:
SELECT * FROM Sales WHERE Amount>'50000' AND State='CA'
Maximální počet znaků v pravidle zabezpečení na úrovni řádků je 1000.
Zástupný text | Popis |
---|---|
{schema_name} | Název schématu, kde se nachází {table_name}. Pokud artefakt podporuje schémata, vyžaduje se {schema_name}. |
{table_name} | Název tabulky, na kterou se použije predikát RLS. Tato hodnota musí přesně odpovídat názvu tabulky, jinak RLS způsobí, že nebudou zobrazeny žádné řádky. |
{column_level_boolean} | Logický příkaz obsahující následující komponenty: * Název sloupce: Název sloupce v {table_name} zadaný ve schématu protokolu Delta. Názvy sloupců lze 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 logickou hodnotu. * Hodnota: Statická hodnota nebo sada hodnot, které se mají vyhodnotit. Můžete mít jeden nebo více logických příkazů oddělených operátorem AND nebo OR. |
Podporované operátory
Pravidla zabezpečení na úrovni řádků podporují následující seznam operátorů a klíčových slov:
Operátor | Popis |
---|---|
= (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. |
> (>) | 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. |
NE | Vyhodnotí se jako true, pokud některé z hodnot vyhodnocení nejsou stejného datového typu nebo nejsou přesnou shodou hodnoty sloupce. |
A | Kombinuje předchozí příkaz a následující příkaz pomocí logické operace AND. Oba příkazy musí být pravdivé, aby celý predikát byl pravdivý. |
NEBO | Kombinuje předchozí příkaz a následující příkaz pomocí logické operace OR. Jeden z výroků musí být pravdivý, aby byl celý predikát pravdivý. |
PRAVDIVÝ | Logický výraz pro hodnotu true. |
NEPRAVDA | Logický výraz pro nepravda. |
BIANKO | Prázdný datový typ, který lze použít s operátorem IS. Například row IS BLANK . |
NULA | Datový typ null, který lze použít s operátorem IS. Například row IS NULL . |
Kombinování zabezpečení na úrovni řádků a sloupců
Zabezpečení na úrovni řádků a sloupců lze použít společně k omezení přístupu uživatelů k tabulce. Tyto dvě zásady se ale musí použít pomocí jedné role zabezpečení OneLake. V tomto scénáři je přístup k datům omezený podle pravidel, která jsou nastavená v jedné roli.
Zabezpečení OneLake nepodporuje kombinaci dvou nebo více rolí, kde jedna obsahuje pravidla zabezpečení na úrovni řádků (RLS) a druhá obsahuje pravidla zabezpečení na úrovni sloupců (CLS). Uživatelům, kteří se pokoušejí získat přístup k tabulkám, které jsou součástí nepodporované kombinace rolí, se zobrazují chyby dotazu.