Riferimento sintattico di sicurezza a livello di riga

Questo articolo documenta la sintassi per definire le regole di sicurezza a livello di riga (RLS) nella sicurezza OneLake. Per applicare una regola RLS a una tabella, vedi Crea e gestisci ruoli di sicurezza OneLake.

Le regole RLS utilizzano la sintassi SQL per specificare le righe che un utente può visualizzare. La sintassi assume la forma di un'istruzione SQL SELECT con le regole RLS definite nella WHERE clausola. Le regole RLS supportano solo il sottoinsieme di SQL definito in questo articolo. Le query con sintassi RLS non valida, o sintassi RLS che non corrisponde alla tabella sottostante, non mostrano righe agli utenti o errori di query nell'endpoint SQL analytics.

Mentre scrivi espressioni RLS, tieni a mente le seguenti best practice:

  • Evita espressioni RLS vaghe o troppo complesse.
  • Le espressioni fortemente tipizzate con consultazioni intere o stringhe che usano "=" sono le più sicure e facili da comprendere.
  • Usare colonne intere per l'ordinamento e per operazioni di maggior o minore di quanto.
  • Evita le equivalenze di stringhe se non conosci il formato dei dati di input, specialmente per i caratteri Unicode o la sensibilità all'accento.

La sicurezza a livello di riga valuta i dati delle stringhe come indistinti dalla maiuscolia usando la seguente collazione per l'ordinamento e i confronti: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Syntax

Il numero massimo di caratteri in una regola di sicurezza a livello di riga è 1000.

Tutte le regole di sicurezza a livello di riga hanno il formato seguente:

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

Per esempio:

SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
Segnaposto Descrizione
{schema_name} Il nome dello schema che contiene {table_name}. Se l'oggetto supporta gli schemi, devi includere {schema_name}.
{table_name} Il nome della tabella a cui si applica il predicato RLS. Questo valore deve corrispondere esattamente al nome della tabella, altrimenti il RLS non mostra righe. Usa le [] parentesi quadrate per sfuggire ai nomi delle tabelle con caratteri speciali. Ad esempio: SELECT * FROM [dbo].[Secret.Table].
{column_level_boolean} Istruzione booleana contenente i componenti seguenti:

* Nome colonna: Il nome di una colonna in {table_name}, come appare nello schema del log Delta. Puoi formattare i nomi delle colonne come {column_name} o {table_name}. {column_name}.
* Operatore: Uno degli operatori supportati che valuta il nome e il valore della colonna in un valore booleano.
* Valore: Un valore statico o un insieme di valori su cui valutare.

È possibile avere una o più istruzioni booleane separate da AND o OR.

Operatori supportati

Le regole di sicurezza a livello di riga supportano i seguenti operatori e parole chiave:

Operator Descrizione
= (uguale a) Valuta come vero se i due valori sono dello stesso tipo di dati e sono perfettamente uguali.
<> (non uguale a) Restituisce "true" se i due valori non sono dello stesso tipo di dati e non sono esattamente identici.
> (maggiore di) Valuta a true se il valore della colonna è maggiore del valore di confronto. Per i valori stringa, questo operatore usa il confronto bit per bit per determinare se una stringa è maggiore dell'altra.
>= (maggiore o uguale a) Restituisce vero se il valore della colonna è maggiore o uguale al valore di confronto. Per i valori stringa, questo operatore usa un confronto bit per bit per determinare se una stringa è maggiore o uguale all'altra.
< (minore di) Restituisce vero se il valore della colonna è minore del valore di valutazione. Per i valori stringa, questo operatore usa un confronto bit per bit per determinare se una stringa è minore dell'altra.
<= (minore o uguale a) Valuta come vero se il valore della colonna è minore o uguale al valore del confronto. Per i valori stringa, questo operatore usa il confronto bit per bit per determinare se una stringa è minore o uguale all'altra.
IN Restituisce "true" se uno dei valori di confronto è dello stesso tipo di dati e corrisponde esattamente al valore della colonna.
NOT Restituisce true se uno dei valori di valutazione non è lo stesso tipo di dati o non corrisponde esattamente al valore della colonna.
AND Combina l'istruzione precedente e quella successiva usando un'operazione BOOLEANA AND. Entrambe le affermazioni devono essere vere affinché l'intero predicato sia vero.
OR Combina l'istruzione precedente e quella successiva utilizzando un'operazione BOOLEAN OR. Una delle affermazioni deve essere vera affinché l'intero predicato sia vero.
TRUE Espressione booleana per vero.
FALSE Espressione booleana per "false".
BLANK Il tipo di dato vuoto, che puoi usare con l'operatore IS. Ad esempio: row IS BLANK.
NULL Il tipo di dato nullo, che puoi usare con l'operatore IS. Ad esempio: row IS NULL.