Segurança em nível de tabelas, colunas e linhas no OneLake

As funções de segurança do OneLake controlam quem pode acessar os dados em seus itens do Fabric. Às vezes, conceder ou negar acesso a um item inteiro é grosseiro demais. Você pode precisar esconder colunas sensíveis, limitar quais linhas o usuário vê ou expor apenas certas tabelas. Dentro de uma função, você pode refinar o acesso em três níveis de granularidade: segurança em nível de objeto para tabelas e pastas, segurança em nível de coluna (CLS) para colunas individuais e segurança em nível de linha (RLS) para linhas individuais.

Este artigo explica o que cada controle faz e como a OneLake o aplica. Para criar esses controles, veja Criar e gerenciar papéis de segurança OneLake.

As funções de segurança do OneLake usam um modelo de concessão para conceder acesso aos dados. Você não pode negar acesso concedido por meio de um modelo diferente de função ou permissão. Por essa razão, esses controles não restringem o acesso para usuários nas funções de Administrador, Membro e Contribuidor no nível do workspace.

Segurança de tabela e pasta

A segurança em nível de tabela e pasta, também chamada de segurança em nível de objeto (OLS), permite conceder acesso a tabelas ou pastas específicas em um item de dados. Com OLS, você cria permissões tanto para dados estruturados quanto não estruturados no nível da pasta. Como as tabelas Delta Parquet no OneLake são representadas como pastas, você pode proteger as tabelas da mesma forma que protege pastas. Esquemas também são pastas, então você pode protegê-los da mesma forma.

Segurança em nível de coluna e linha

A segurança do OneLake aplica a segurança em nível de coluna e linha de duas maneiras:

  • Tabelas de filtros: Um usuário que consulta uma tabela usando um motor Fabric, como notebooks Spark, ou um motor autorizado de terceiros vê apenas as colunas ou linhas que as regras CLS ou RLS permitem.
  • Tabelas de blocos: Um usuário que consulta uma tabela usando um motor de terceiros não autorizado não pode ler a tabela.

A segurança OneLake pode aplicar regras CLS e RLS para tabelas Delta Parquet ou tabelas Iceberg virtualizadas. Regras aplicadas a outros tipos de tabelas bloqueiam o acesso a toda a tabela para membros da função.

Se uma regra CLS ou RLS tiver uma incompatibilidade com a tabela em que está definida, a consulta falha e não retorna dados. Por exemplo, um descompasso ocorre quando uma regra faz referência a uma coluna que não está na tabela.

Segurança em nível de coluna

A segurança em nível de coluna (CLS) concede acesso a colunas selecionadas em uma tabela em vez da tabela completa. Os dados nas colunas que você remove da lista permitida não são visíveis para os usuários.

Para tabelas filtradas com CLS, os seguintes comportamentos se aplicam:

  • Se um usuário executa uma select * consulta em uma tabela onde tem acesso apenas a algumas colunas, as regras CLS se comportam de forma diferente dependendo do motor Fabric:
    • Spark notebooks: A consulta é bem-sucedida e mostra apenas as colunas permitidas.
    • Endpoint de análise SQL: A consulta retorna um erro e bloqueia o acesso às colunas que o usuário não pode acessar.
    • Modelos semânticos: A consulta retorna um erro e bloqueia o acesso às colunas que o usuário não pode acessar.
  • O nome de uma coluna segura pode ser visível em certas experiências, mas os valores dos dados nunca aparecem.

Segurança em nível de linha

A segurança em nível de linha (RLS) define restrições de dados em nível de linha para dados tabulares armazenados no OneLake. Você define papéis que contêm regras para filtrar linhas de dados para membros da função. Quando um membro de um papel RLS consulta os dados, o OneLake avalia as regras RLS e retorna apenas as linhas permitidas. Linhas são um conceito relevante apenas para dados tabulares, então você não pode definir RLS para pastas que não sejam tabelas ou dados não estruturados.

Para tabelas filtradas com RLS, os seguintes comportamentos se aplicam:

  • O acesso a uma tabela pode ser bloqueado se a instrução RLS contiver erros de sintaxe que impeçam sua avaliação.

Para a sintaxe usada para escrever regras RLS, veja Referência da sintaxe de segurança em nível de linha.

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.