Quando usar ABAC versus filtros de linha e máscaras de coluna em nível de tabela
O Unity Catalog oferece suporte a duas abordagens para segurança em nível de linha e em nível de coluna: políticas ABAC e filtros de linha e máscaras de coluna em nível de tabela. Nenhuma das abordagens concede acesso aos dados por si só — ambas adicionam restrições aos privilégios existentes em nível de objeto. Você deve conceder acesso à tabela base separadamente por meio de permissões de nível de objeto (GRANT).
A principal diferença reside em onde as restrições são definidas. Os filtros de linha e as máscaras de coluna ao nível da tabela aplicam controles de sensibilidade diretamente em tabelas individuais usando ALTER TABLE. Os proprietários das tabelas gerenciam sua própria proteção de dados sem a necessidade de um sistema tag controlado. Isso é simples para um pequeno número de tabelas, mas cada tabela deve ser configurada individualmente, e os proprietários das tabelas podem modificar ou remover seus próprios filtros e máscaras.
As políticas ABAC são aplicadas no nível do catálogo, do esquema ou da tabela e correspondem a tabelas e colunas dinamicamente com base em tags definidas. Uma política definida no nível do catálogo aplica-se a todas as tabelas desse catálogo, e os proprietários individuais das tabelas não podem removê-la, modificá-la ou ignorá-la. A política reside no catálogo e é avaliada pelo Unity Catalog antes que a consulta chegue ao ambiente de execução. Isso permite que administradores de nível superior apliquem regras em toda a organização e garantam que administradores e proprietários de nível inferior não possam contorná-las.
Resumo comparativo detalhado
Esta tabela resume as diferenças entre as políticas ABAC e os filtros de linha e máscaras de coluna em nível de tabela.
Consideração | Políticas ABAC | Filtros de linha e máscaras de coluna em nível de tabela |
|---|---|---|
sintaxe SQL |
|
|
Escopo | Todas as tabelas dentro do escopo da política (catálogo, esquema ou tabela) e seus descendentes. As novas tabelas de tags são preenchidas automaticamente. | Uma única tabela onde o filtro ou a máscara é configurada. Cada tabela deve ser configurada individualmente. |
Correspondência dinâmica | As tabelas e colunas são correspondidas dinamicamente com base em tags definidas usando | Sem correspondência dinâmica. Filtros e máscaras estão vinculados a tabelas e colunas específicas. |
Diretores selecionados |
| Funções de identidade como |
Governança de políticas | As políticas podem ser definidas pelos proprietários do catálogo ou do esquema. Depois de definidas em um nível superior, as tabelas não podem ser substituídas, modificadas ou removidas pelos proprietários. | gerenciado pelos proprietários das mesas, que podem modificar ou remover filtros e máscaras em suas próprias mesas. |
Recurso não suportado | operações como viagem do tempo, clonagem e Delta Sharing podem ser executadas pelos mandantes na cláusula | Sem a cláusula |
Políticas eficazes |
| Visível diretamente na definição da tabela. |
Auditabilidade |
|
|
Em geral, utilize políticas ABAC quando:
- Você precisa de regras de acesso consistentes em várias tabelas, esquemas ou catálogos.
- Sua organização separa as funções. Por exemplo, os autores de políticas definem regras e a gestão de dados classifica os dados com tags.
- Seu conjunto de dados está crescendo e você deseja que novas tabelas sejam cobertas automaticamente quando forem marcadas como tags.
- Você precisa da cláusula
EXCEPTpara permitir operações como viagem do tempo, Delta Sharing ou otimização completa de consultas para entidades específicas.
Em geral, utilize filtros de linha e máscaras de coluna em nível de tabela quando:
- Cada tabela possui uma lógica específica e rigorosa que não se generaliza para outras tabelas.
- Os proprietários das mesas devem gerenciar seus próprios filtros e máscaras diretamente, sem um sistema tag centralizado.
- Você possui um conjunto pequeno e estável de tabelas que mudam com pouca frequência.
Combinando ABAC com filtros de linha e máscara de coluna em nível de tabela.
ABAC e filtros de linha e máscaras de coluna em nível de tabela podem coexistir na mesma tabela. No momento da consulta, as políticas são avaliadas independentemente para o usuário que realiza a consulta, seguindo as seguintes regras:
- Apenas um filtro de linha distinto pode ser aplicado.
- Apenas uma máscara de coluna distinta pode ser resolvida por coluna.
O Databricks avalia conflitos comparando as funções aplicadas, e não os dados de saída. Se uma política ABAC e um filtro ou máscara em nível de tabela aplicarem a mesma função de filtro de linha ou máscara de coluna para o mesmo usuário, o Databricks permitirá a execução. Se forem aplicadas funções diferentes, o Databricks bloqueia o acesso e retorna um erro, mesmo que essas funções produzam resultados de dados idênticos.
Para obter detalhes sobre resolução de conflitos e solução de problemas, consulte Regras para vários filtros e máscaras.
Segurança em nível de linha e coluna com visualização dinâmica
A visualização dinâmica também pode implementar segurança em nível de linha e em nível de coluna, incorporando funções de identidade como current_user() e is_account_group_member() diretamente na definição view . A visualização dinâmica, os filtros de linha e as máscaras de coluna aplicam lógica de filtragem ou transformação no momento da consulta, mas diferem na forma como são gerenciados, definidos e expostos aos usuários.
Recurso | Aplica-se a | Como é gerenciado | Melhor utilizado para |
|---|---|---|---|
Visão dinâmica | Exibições | Lógica SQL na definição view | Controle de acesso granular que abrange várias tabelas de origem ou remodela dados para compartilhamento. |
Filtros de linha e máscaras de coluna | Tabelas e colunas | Políticas ABAC ou atribuição em nível de tabela | Controle de acesso em nível de linha e coluna sem a introdução de novos objetos. |
Use a visualização dinâmica quando precisar de um controle de acesso preciso que abranja várias tabelas de origem ou que remodele os dados para compartilhamento. Utilize filtros de linha e máscaras de coluna quando desejar controlar o acesso a tabelas individuais sem introduzir novos objetos.
Por exemplo, uma view dinâmica pode ocultar uma coluna email para usuários que não são auditores:
CREATE VIEW sales_redacted AS
SELECT
user_id,
CASE
WHEN is_account_group_member('auditors') THEN email
ELSE regexp_extract(email, '^.*@(.*)$', 1)
END AS email,
country,
product,
total
FROM sales_raw
A visualização dinâmica oferece suporte completo à otimização de consultas e ao pushdown de predicados, proporcionando um desempenho de consulta superior ao dos filtros de linha e máscaras de coluna. Elas também impedem que os usuários modifiquem as tabelas subjacentes.
No entanto, a visão dinâmica tem duas desvantagens para a governança de dados:
- Auditoria limitada : As visualizações dinâmicas carecem de metadados semânticos, como tags ou definições de políticas nas tabelas do sistema, o que dificulta a auditoria em situações de escalonamento.
- Vulnerabilidade a sondagem : Como não possuem uma barreira
SecureView, não protegem contra ataques de sondagem, nos quais um usuário cria um predicado com efeitos colaterais para inferir informações sobre linhas filtradas. Consulte Compreender o pushdown de predicados em tabelas protegidas.