Referência da sintaxe de segurança em nível de linha

Este artigo documenta a sintaxe para definir regras de segurança em nível de linha (RLS) na segurança OneLake. Para aplicar uma regra RLS a uma tabela, veja Criar e gerenciar papéis de segurança OneLake.

As regras RLS usam a sintaxe do SQL para especificar as linhas que um usuário pode ver. A sintaxe assume a forma de uma instrução SQL SELECT com as regras RLS definidas na WHERE cláusula. As regras RLS suportam apenas o subconjunto de SQL definido neste artigo. Consultas com sintaxe RLS inválida, ou sintaxe RLS que não corresponde à tabela subjacente, resultam em nenhuma linha sendo mostrada aos usuários, ou erros de consulta no endpoint de análise SQL.

Ao escrever expressões RLS, mantenha as seguintes melhores práticas em mente:

  • Evite expressões vagas ou excessivamente complexas de RLS.
  • Expressões fortemente tipadas com buscas inteiras ou de strings que usam "=" são as mais seguras e mais fáceis de entender.
  • Use colunas inteiras para ordenação e operações maiores ou menores que.
  • Evite equivalências de string se você não souber o formato dos dados de entrada, especialmente para caracteres Unicode ou sensibilidade ao acento.

A segurança em nível de linha avalia dados de cadeia como insensíveis a maiúsculas e minúsculas usando a seguinte colação para ordenação e comparação: Latin1_General_100_CI_AS_KS_WS_SC_UTF8.

Sintaxe

O número máximo de caracteres em uma regra de segurança em nível de linha é 1.000.

Todas as regras de segurança em nível de linha têm a seguinte forma:

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

Por exemplo:

SELECT * FROM Sales WHERE Amount > 50000 AND State='CA'
Placeholder Descrição
{schema_name} O nome do esquema que contém {table_name}. Se o item suportar esquemas, você deve incluir {schema_name}.
{table_name} O nome da tabela à qual o predicado RLS se aplica. Esse valor deve corresponder exatamente ao nome da tabela, ou o RLS não mostra linhas. Use colchetes [] quadrados para escapar dos nomes das tabelas com caracteres especiais. Por exemplo, SELECT * FROM [dbo].[Secret.Table].
{column_level_boolean} Uma instrução Booliana contendo os seguintes componentes:

* Nome da coluna: O nome de uma coluna em {table_name}, conforme aparece no esquema de log Delta. Você pode formatar os nomes das colunas como {column_name} ou {table_name}. {column_name}.
* Operador: Um dos operadores suportados que avalia o nome e o valor da coluna para um valor booleano.
* Valor: Um valor estático ou conjunto de valores para avaliar.

Você pode ter uma ou mais instruções Boolianas separadas por AND ou OR.

Operadores suportados

Regras de segurança em nível de linha suportam os seguintes operadores e palavras-chave:

Operator Descrição
= (igual a) Avalia como verdadeiro se os dois valores tiverem o mesmo tipo de dados e corresponderem exatamente.
<> (não iguais) Avalia como verdadeiro se os dois valores não tiverem o mesmo tipo de dados e não corresponderem exatamente.
> (maior que) Avalia como verdadeiro se o valor da coluna for maior que o valor de avaliação. Para valores de cadeia de caracteres, esse operador usa comparação bit a bit para determinar se uma cadeia de caracteres é maior que a outra.
>= (maior ou igual a) Avalia como verdadeiro se o valor da coluna for maior ou igual ao valor de avaliação. Para valores de cadeia, esse operador usa comparação bit a bit para determinar se uma cadeia é maior ou igual à outra.
< (menor que) Avalia como verdadeiro se o valor da coluna for menor que o valor de avaliação. Para valores de cadeia de caracteres, esse operador usa comparação bit a bit para determinar se uma cadeia de caracteres é menor que a outra.
<= (menor ou igual a) Avalia como verdadeiro se o valor da coluna for menor ou igual ao valor de avaliação. Para valores de cadeia de caracteres, esse operador usa comparação bit a bit para determinar se uma cadeia de caracteres é menor ou igual à outra.
IN Avalia como verdadeiro se algum dos valores de avaliação tiver o mesmo tipo de dados e corresponder exatamente ao valor da coluna.
NOT Avalia como verdadeiro se algum dos valores de avaliação não tiver o mesmo tipo de dados ou não corresponder exatamente ao valor da coluna.
AND Combina a instrução anterior e a subsequente usando uma operação BOOLEANA AND. Ambas as instruções devem ser verdadeiras para que todo o predicado seja verdadeiro.
OR Combina a instrução anterior e a subsequente usando uma operação BOOLEANA OR. Uma das afirmações deve ser verdadeira para que toda a proposição seja verdadeira.
TRUE A expressão Booliana para verdadeiro.
FALSE A expressão Booliana para falso.
BLANK O tipo de dado em branco, que você pode usar com o operador IS. Por exemplo, row IS BLANK.
NULL O tipo de dado nulo, que você pode usar com o operador IS. Por exemplo, row IS NULL.