Partilhar via


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

A segurança em nível de linha (RLS) é um recurso da segurança do OneLake (visualização) 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 membros dessa função. Quando um membro de uma função RLS vai consultar esses dados, as regras RLS são avaliadas e apenas as linhas permitidas são retornadas.

Pré-requisitos

Aplicar a segurança a nível de linha

A RLS de segurança OneLake é aplicada de duas maneiras:

  • Tabelas filtradas em mecanismos de malha: As consultas à lista de mecanismos de malha suportados, como blocos de anotações Spark, fazem com que o usuário veja apenas as linhas que tem permissão para ver de acordo com as regras RLS.
  • Acesso bloqueado às tabelas: As tabelas com regras RLS aplicadas a elas não podem ser lidas fora dos mecanismos de malha suportados.

Para tabelas filtradas, aplicam-se os seguintes comportamentos:

  • As regras de RLS não restringem o acesso de usuários nas funções de Administrador, Membro e Colaborador.
  • Se a regra RLS tiver uma incompatibilidade com a tabela em que 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.
  • As consultas de tabelas RLS falham 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 aos dados que estão em tabelas Delta Parquet.
    • Em vez disso, as regras RLS aplicadas a objetos de tabela não Delta bloqueiam o acesso a toda a tabela para os membros da função.
  • O acesso a uma tabela pode ser bloqueado se a instrução RLS contiver erros de sintaxe que impeçam que ela seja avaliada.

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 aos dados da 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 não tabeladas ou dados não estruturados.

As regras RLS usam sintaxe 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 suportam apenas um subconjunto da linguagem SQL, conforme definido nas regras de sintaxe. Consultas com sintaxe RLS inválida ou que não coincidem com a tabela subjacente resultam em não mostrar nenhuma linha aos utilizadores, ou em erros de consulta no ponto final de análise SQL.

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

Use as seguintes etapas para definir regras RLS:

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

  2. Selecione uma função existente para a qual você deseja definir a segurança da 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 (...) junto à tabela para a qual pretende definir RLS e, em seguida, selecione Segurança da linha (pré-visualização).

    Captura de ecrã que mostra a seleção de 'segurança de linha' para editar permissões numa tabela.

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

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

Ativar a segurança do OneLake para o ponto final de análise SQL

Antes de poderes usar a segurança do OneLake com o ponto de extremidade de análise SQL, deves habilitar o modo de identidade do utilizador. Os pontos de extremidade de análise SQL recém-criados serão padronizados para o modo de identidade do usuário, portanto, essas etapas devem ser seguidas para os pontos de extremidade de análise SQL existentes.

Observação

A mudança para o modo de identidade do usuário só precisa ser feita uma vez por ponto de extremidade de análise SQL. Os pontos de extremidade que não forem mudados para o modo de identidade de usuário continuarão a usar uma identidade delegada para avaliar permissões.

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

  2. Na interface do ponto de extremidade da análise SQL, selecione o separador Segurança na barra superior de opções.

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

    Captura de ecrã que mostra a seleção de 'identidade do utilizador' para habilitar a segurança do OneLake para o ponto de análise SQL.

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

    Captura de ecrã que mostra a mensagem ao utilizador que deve ser aceite para habilitar a segurança do OneLake para acesso de leitura de tabela.

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

Regras de sintaxe

Todas as regras de segurança em nível de linha assumem 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 é 1000.

Marcador de posição Descrição
{schema_name} O nome do esquema onde {table_name} está localizado. Caso o artefato suporte esquemas, {schema_name} é necessário.
{table_name} O nome da tabela à qual o predicado RLS é aplicado. Esse valor deve ser uma correspondência exata com o nome da tabela ou a RLS resulta em nenhuma linha sendo mostrada.
{booleano_nível_coluna} Uma instrução booleana contendo os seguintes componentes:

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

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

Operadores suportados

As regras de segurança em nível de linha suportam a seguinte lista de operadores e palavras-chave:

Operador Descrição
= (igual) Avalia como true se os dois valores são do mesmo tipo de dados e correspondem exatamente.
<> (não é igual) Avalia como true se os dois valores não forem do mesmo tipo de dados e não corresponderem exatamente.
> (maior que) Resulta em verdadeiro se o valor da coluna for maior do que o valor de referência. Para valores de cadeia de caracteres, esse operador usa a comparação de bits para determinar se uma cadeia de caracteres é maior do que a outra.
>= (maior ou igual a) Avaliado como verdadeiro se o valor da coluna for maior ou igual ao valor da avaliação. Para valores de cadeia de caracteres, esse operador usa a comparação de bits para determinar se uma cadeia de caracteres é maior ou igual à outra.
< (menos que) Avalia como verdadeiro se o valor da coluna for menor que o valor de referência. Para valores de cadeia de caracteres, esse operador usa a comparação de bits para determinar se uma cadeia de caracteres é menor que a outra.
<= (inferior 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 a comparação de bits para determinar se uma cadeia de caracteres é menor ou igual à outra.
EM Avalia como verdadeiro se algum dos valores de avaliação for do mesmo tipo de dados e coincidir exatamente com o valor da coluna.
NÃO Avalia como true se algum dos valores de avaliação não for do mesmo tipo de dados ou não corresponder exatamente ao valor da coluna.
E AINDA Combina a instrução anterior e a instrução subsequente usando uma operação Boolean AND. Ambas as afirmações devem ser verdadeiras para que todo o predicado seja verdadeiro.
OU Combina a instrução anterior e a instrução subsequente usando uma operação OR booleana. Uma das afirmações deve ser verdadeira para que todo o predicado seja verdadeiro.
VERDADEIRO A expressão booleana para verdadeiro.
FALSO A expressão booleana que representa o valor falso.
EM BRANCO Tipo de dados vazio, que pode ser usado com o operador IS. Por exemplo, row IS BLANK.
NULO O tipo de dado 'null', que pode ser utilizado com o operador IS. Por exemplo, row IS NULL.

Combine a segurança ao nível de linha e ao nível de coluna

A segurança em nível de linha e em nível de coluna pode ser usada em conjunto para restringir o acesso do usuário a uma tabela. No entanto, as duas políticas devem ser aplicadas usando uma única função de segurança 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 suporta a 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ções sem suporte recebem erros de consulta.