Odniesienie składni bezpieczeństwa na poziomie wiersza

Ten artykuł dokumentuje składnię definiowania reguł bezpieczeństwa na poziomie wiersza (RLS) w bezpieczeństwie OneLake. Aby zastosować regułę RLS do tabeli, zobacz Tworzenie i zarządzanie rolami bezpieczeństwa OneLake.

Reguły RLS używają składni SQL, aby określić wiersze, które użytkownik może zobaczyć. Składnia przyjmuje formę instrukcji SQL SELECT z regułami RLS zdefiniowanymi w klauzuli WHERE . Reguły RLS obsługują tylko podzbiór SQL zdefiniowany w tym artykule. Zapytania z nieprawidłową składnią RLS lub składnią RLS, która nie odpowiada tabeli bazowej, powodują brak pokazywania wierszy użytkownikom lub błędy zapytań w endpointzie analityki SQL.

Pisząc wyrażenia RLS, pamiętaj o następujących najlepszych praktykach:

  • Unikaj niejasnych lub zbyt skomplikowanych wyrażeń RLS.
  • Wyrażenia z silnie typowanymi tekstami z funkcjami wyszukiwania całkowitoliczbowymi lub ciągowymi wykorzystującymi "=" są najbezpieczniejsze i najłatwiejsze do zrozumienia.
  • Do sortowania i operacji większych lub mniejszych niż używaj kolumn całkowitoliczbowych.
  • Unikaj równoważności ciągów znaków, jeśli nie znasz formatu danych wejściowych, zwłaszcza jeśli chodzi o znaki Unicode lub czułość akcentów.

Bezpieczeństwo na poziomie wiersza ocenia dane łańcuchowe jako nierozróżniające wielkość liter, stosując następującą sortację do sortowania i porównań: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Składnia

Maksymalna liczba znaków w regule zabezpieczeń na poziomie wiersza wynosi 1000.

Wszystkie reguły zabezpieczeń na poziomie wiersza mają następującą formę:

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

Przykład:

SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
Placeholder Description
{schema_name} Nazwa schematu zawierającego {table_name}. Jeśli element wspiera schematy, musisz uwzględnić {schema_name}.
{table_name} Nazwa tabeli, do której odnosi się predykat RLS. Ta wartość musi dokładnie odpowiadać nazwie tabeli, inaczej RLS nie pokazuje wierszy. Używaj nawiasów [] kwadratowych, aby uciekać z nazw tabel za pomocą specjalnych znaków. Na przykład SELECT * FROM [dbo].[Secret.Table].
{column_level_boolean} Instrukcja logiczna zawierająca następujące składniki:

* Nazwa kolumny: Nazwa kolumny w {table_name}, tak jak pojawia się w schemacie logu Delta. Możesz formatować nazwy kolumn jako {column_name} lub {table_name}. {column_name}.
* Operator: Jeden z obsługiwanych operatorów , który oblicza nazwę i wartość kolumny do wartości boolowskiej.
* Wartuł: Statyczna wartość lub zestaw wartości do porównania.

Można mieć jedno lub więcej wyrażeń logicznych rozdzielonych operatorem AND lub OR.

Obsługiwane operatory

Reguły bezpieczeństwa na poziomie wiersza obsługują następujące operatory i słowa kluczowe:

Operator Description
= (równa się) Zwraca wartość true, jeśli te dwie wartości są tym samym typem danych i dokładnie się zgadzają.
<> (nie równa się) Oblicza wartość true, jeśli te dwie wartości nie są tym samym typem danych i nie są dokładnie zgodne.
> (większe niż) Oblicza wartość true, jeśli wartość kolumny jest większa niż wartość oceny. W przypadku wartości ciągów ten operator używa porównania bitowego, aby określić, czy jeden ciąg jest większy niż drugi.
>= (większe lub równe) Oblicza wartość true, jeśli wartość kolumny jest większa lub równa wartości ewaluacyjnej. W przypadku wartości ciągów ten operator używa porównania bitowego, aby określić, czy jeden ciąg jest większy niż lub równy drugiej.
< (mniejsze niż) Oblicza wartość true, jeśli wartość kolumny jest mniejsza niż wartość oceny. W przypadku wartości ciągów ten operator używa porównania bitowego, aby określić, czy jeden ciąg jest mniejszy niż drugi.
<= (mniejsze lub równe) Oblicza wartość true, jeśli wartość kolumny jest mniejsza lub równa wartości ewaluacyjnej. W przypadku wartości ciągów ten operator używa porównania bitowego, aby określić, czy jeden ciąg jest mniejszy niż lub równy drugiej.
IN Oblicza wartość true, jeśli którakolwiek z wartości ewaluacyjnych jest tego samego typu danych i dokładnie odpowiada wartości kolumny.
NOT Oblicza wartość true, jeśli którakolwiek z wartości ewaluacyjnych nie jest tym samym typem danych lub nie jest dokładnym dopasowaniem wartości kolumny.
AND Łączy poprzednie zdanie i kolejne zdanie, używając operacji Boole'a AND. Oba zdania muszą być prawdziwe, aby predykat był prawdziwy.
OR Łączy poprzednie zdanie i kolejne, używając operacji Boole'a OR. Jedno z stwierdzeń musi być prawdziwe, aby cały predykat był prawdziwy.
TRUE Wyrażenie logiczne dla wartości true.
FALSE Wyrażenie logiczne dla wartości false.
BLANK Pusty typ danych, którego można użyć z operatorem IS. Na przykład row IS BLANK.
NULL Typ danych null, którego możesz użyć z operatorem IS. Na przykład row IS NULL.