Compartilhar via


Segurança em nível de linha no OneLake (versão prévia)

A segurança em nível de linha (RLS) é um recurso da segurança do OneLake (versão prévia) que permite definir restrições de dados em nível de linha para dados tabulares armazenados no OneLake. Os usuários podem definir funções no OneLake que contêm regras para filtrar linhas de dados para os membros dessa função. Quando um membro de uma função RLS consulta esses dados, as regras RLS são avaliadas e somente as linhas permitidas são retornadas.

Pré-requisitos

Impor segurança em nível de linha

A RLS da segurança do OneLake é imposta de duas maneiras:

  • Tabelas filtradas em mecanismos do Fabric: consultas à lista de mecanismos do Fabric com suporte, como notebooks do Spark, resultam na exibição de apenas as linhas que o usuário tem permissão para ver, conforme as regras RLS.
  • Acesso bloqueado a tabelas: tabelas com regras RLS aplicadas a elas não podem ser lidas fora dos mecanismos do Fabric com suporte.

Para tabelas filtradas, os seguintes comportamentos se aplicam:

  • As regras RLS não restringem o acesso de usuários nas funções Administrador, Membro e Colaborador.
  • Se a regra RLS não corresponder à tabela na qual está definida, a consulta falhará e nenhuma linha será retornada. Por exemplo, se a regra RLS fizer referência a uma coluna que não faz parte da tabela.
  • Consultas de tabelas RLS falharão com um erro se um usuário fizer parte de duas funções diferentes e uma das funções tiver segurança em nível de coluna (CLS).
  • As regras RLS só podem ser aplicadas a objetos que são tabelas Delta parquet.
    • Em vez disso, as regras RLS aplicadas a objetos de tabela não Delta bloqueiam o acesso de membros da função a toda a tabela.
  • O acesso a uma tabela pode ser bloqueado se a instrução RLS contiver erros de sintaxe que impeçam sua avaliação.

Definir regras de segurança em nível de linha

Você pode definir regras de segurança em nível de linha como parte de qualquer função de segurança do OneLake que conceda acesso a dados de tabela no formato Delta parquet. As linhas são um conceito relevante apenas para dados tabulares, portanto, as definições de RLS não são permitidas para pastas que não sejam tabelas ou dados não estruturados.

As regras RLS usam a sintaxe do SQL para especificar as linhas que um usuário pode ver. Essa sintaxe assume a forma de uma instrução SQL SELECT com as regras RLS definidas na cláusula WHERE. As regras RLS só dão suporte a um subconjunto da linguagem SQL conforme definido em Regras de sintaxe. Consultas com sintaxe RLS inválida ou sintaxe RLS que não corresponda à tabela subjacente fazem com que nenhuma linha seja exibida aos usuários, ou resultam em erros de consulta no endpoint de análise SQL.

Como prática recomendada, evite usar expressões RLS vagas ou excessivamente complexas. Expressões fortemente tipdas com pesquisas de inteiro ou cadeia de caracteres com "=" serão as mais seguras e fáceis de entender.

Use as etapas a seguir para definir as regras RLS:

  1. Navegue até o Lakehouse e selecione Gerenciar segurança do OneLake (versão prévia).

  2. Selecione uma função existente para a qual você deseja definir a segurança de tabela ou pasta ou selecione Novo para criar uma nova função.

  3. Na página de detalhes da função, selecione mais opções (...) ao lado da tabela para a qual você deseja definir a RLS e selecione Segurança em nível de linha (versão prévia).

    Captura de tela mostrando a seleção de 'segurança em nível de linha' para editar permissões em uma tabela.

  4. Digite a instrução SQL para definir quais linhas você deseja que os usuários vejam no editor de código. Use a seção Regras de sintaxe para obter diretrizes.

  5. Selecione Salvar para confirmar as regras de segurança de linha.

Habilitar segurança do OneLake para endpoint de análise do SQL

Antes de usar a segurança do OneLake com o ponto de extremidade de análise de SQL, você deve habilitar o modo de Identidade do usuário. Os pontos de extremidade de análise do SQL recém-criados serão padrão para o modo de identidade do usuário, portanto, essas etapas devem ser seguidas para pontos de extremidade de análise de SQL existentes.

Observação

Alternar para o modo Identidade do usuário só precisa ser feito uma vez por endpoint de análise SQL. Os endpoints que não forem alterados para o modo de identidade do usuário continuarão usando uma identidade delegada para avaliação de permissões.

  1. Navegue até o ponto de extremidade de análise do SQL.

  2. Na experiência do ponto de extremidade de análise do SQL, selecione a guia Segurança na faixa de opções superior.

  3. Selecione a identidade do usuário no modo de acesso do OneLake.

    Captura de tela que mostra a seleção de

  4. No prompt, selecione Sim, use a identidade do usuário.

    Captura de tela que mostra o prompt do usuário que precisa ser aceito para ativar a segurança do OneLake para acesso de leitura às tabelas.

Agora, o ponto de extremidade de análise do SQL está pronto para ser usado com a segurança do OneLake.

Regras de sintaxe

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'

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

Espaço reservado Descrição
{schema_name} O nome do esquema onde {table_name} está localizado. Se o artefato der suporte a esquemas, {schema_name} será obrigatório.
{table_name} O nome da tabela à qual o predicado RLS é aplicado. Esse valor deve corresponder exatamente ao nome da tabela, ou a RLS não mostrará nenhuma linha.
{column_level_boolean} Uma instrução Booliana contendo os seguintes componentes:

* Nome da coluna: o nome de uma coluna em {table_name} conforme especificado no esquema de log Delta. Os nomes de colunas podem ser formatados como {column_name} ou {table_name}.{column_name}.
* Operador: um dos Operadores com suporte que avalia o nome da coluna e o valor para um valor Booliano.
* Valor: um valor estático ou conjunto de valores a serem avaliados.

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

Operadores com suporte

As regras de segurança em nível de linha dão suporte à seguinte lista de operadores e palavras-chave:

Operador 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.
EM Avalia como verdadeiro se algum dos valores de avaliação tiver o mesmo tipo de dados e corresponder exatamente ao valor da coluna.
NÃO 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.
E Combina a instrução anterior e a instrução subsequente usando uma operação Booliana AND. Ambas as instruções devem ser verdadeiras para que todo o predicado seja verdadeiro.
OU Combina o demonstrativo anterior e o demonstrativo subsequente usando uma operação Booliana OR. Uma das afirmações deve ser verdadeira para que toda a proposição seja verdadeira.
VERDADEIRO A expressão Booliana para verdadeiro.
FALSO A expressão Booliana para falso.
EM BRANCO O tipo de dados em branco, que pode ser usado com o operador IS. Por exemplo, row IS BLANK.
NULO O tipo de dados nulo, que pode ser usado com o operador IS. Por exemplo, row IS NULL.

Combinar a Segurança em Nível de Linha e em nível de coluna

A segurança em nível de linha e de coluna pode ser usada em conjunto para restringir o acesso do usuário a uma tabela. No entanto, as duas políticas precisam ser aplicadas usando uma única função de segurança do OneLake. Nesse cenário, o acesso aos dados é restrito de acordo com as regras definidas em uma função.

A segurança do OneLake não dá suporte à combinação de duas ou mais funções em que uma contém regras RLS e outra contém regras CLS. Os usuários que tentam acessar tabelas que fazem parte de uma combinação de função sem suporte recebem erros de consulta.