Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. |