Pular para o conteúdo principal

Criar e gerenciar políticas ABAC

Esta página descreve como criar, editar, view e excluir políticas ABAC no Unity Catalog. Para uma visão geral dos conceitos de política, consulte Conceitos básicos para ABAC.

Requisitos

Todas as operações de política (criar, editar, excluir, mostrar, descrever) exigem MANAGE no objeto protegível ou na propriedade do objeto. A criação de uma política também exige:

  • Databricks Runtime 16.4 ou superior, ou compute serverless . Consulte os requisitos de computação.
  • Para a lógica de filtragem ou mascaramento, uma função definida pelo usuário (UDF) no Unity Catalog que você tenha EXECUTE ativada, ou uma função SQL que você define diretamente ao criar a política.
  • tags regulamentadas aplicadas aos objetos de destino. Veja as tagsGoverned.

Criar uma política

Você pode criar uma política usando a interface do usuário do Catalog Explorer, a instrução SQL CREATE POLICY ou as APIs REST, SDKs e Terraform do Databricks.

Para criar uma política, você deve ter MANAGE no objeto protegível onde a política está anexada (catálogo, esquema ou tabela) ou ser o proprietário do objeto protegível e EXECUTE na UDF que implementa a lógica de filtragem ou mascaramento.

  1. Em seu site Databricks workspace, clique em Ícone de dados. Catalog .

  2. Selecione o objeto que determina o escopo da política, como um catálogo, esquema ou tabela.

  3. Clique na guia Políticas .

  4. Clique em Nova política .

  5. Preencha a seção de identificação da política . A tabela a seguir resume cada campo:

campo

Descrição

Exemplo

Nome

Um nome para a política. Deve ser única entre todas as políticas definidas no mesmo objeto protegível.

hide_eu_customers, mask_ssn

Descrição

Opcional. Uma descrição da política. Aparece nos logs de auditoria e ajuda os administradores a entender a intenção da política.

Restrict EU customer rows from US analysts, Mask SSN for all account users

  1. Preencha a seção Princípios e âmbito de aplicação . A tabela a seguir resume cada campo:

campo

Descrição

Exemplo

Aplicado a...

Os usuários, grupos ou entidade de serviço sujeitos à política. Quando esses usuários consultam as tabelas no escopo, o filtro de linha ou a máscara de coluna é aplicada. Para aplicar a política a todos os principais na account, selecione All account users.

us_analysts, All account users

Exceto por

Diretores estão isentos da política. Os clientes isentos não estão sujeitos a filtragem ou mascaramento e visualizam os dados completos e não modificados.

admins, compliance_team

Escopo

O objeto protegível ao qual a política está anexada. A política é avaliada em relação a todas as tabelas dentro do escopo selecionado. Selecione um catálogo, esquema ou tabela. A Databricks recomenda anexar políticas no nível mais alto aplicável.

Selecione o catálogo prod e, em seguida, selecione o esquema customers.

Condição da tabela

Determina a quais tabelas dentro do escopo a política se aplica. Sem condição : Aplica a política a todas as tabelas no escopo. Tabelas que correspondem a qualquer uma destas tags : Aplica a política à lista especificada de chave tag ou par tag key-valor. As tabelas que apresentarem qualquer um desses elementos correspondem à política. Tabelas que correspondem a uma expressão personalizada : Você pode construir uma expressão booleana usando has_tag e has_tag_value, combinada com AND, OR e NOT para uma lógica de correspondência mais complexa. Aplica a política às tabelas onde a expressão é avaliada como TRUE e corresponde à política. Se uma tabela no escopo não corresponder à condição, a política não se aplicará a essa tabela.

Selecione as tabelas que correspondem a qualquer uma dessas tags e, em seguida, escolha key tag sensitivity com o valor high para restringir a política apenas às tabelas confidenciais.

Exemplo de configurações de política ABAC para a seção de entidades e escopo. 7. Em Tipo de política , escolha o tipo de controle de acesso a ser aplicado:

Opção

Descrição

Use quando

Filtro de linha

Cria uma política de filtro de linhas. A UDF avalia cada linha e retorna um valor booleano. As linhas em que a UDF retorna FALSE são excluídas dos resultados da consulta.

O acesso depende dos valores em cada linha, como por exemplo, filtrar pelos valores em uma coluna que contém regiões geográficas.

Máscara de coluna

Cria uma política de máscara de coluna. A função definida pelo usuário (UDF) recebe o valor da coluna como entrada e retorna o valor original ou uma versão mascarada. O tipo de retorno deve ser compatível com o tipo de dados da coluna de destino.

É necessário ocultar campos sensíveis, como números de segurança social, números de telefone ou endereços email , permitindo ainda que o usuário principal consulte a tabela.

  1. As próximas seções dependem do tipo de política que você selecionar. Expanda a seção que corresponde à sua seleção:

Filtro de linha

Na seção Função de filtro de linha , escolha como especificar a função de filtro de linha:

  • Selecionar existente : Selecione uma UDF já definida no Unity Catalog. A UDF avalia cada linha e retorna um valor booleano. As linhas em que a função retorna FALSE são excluídas dos resultados da consulta. Você deve ter EXECUTE na UDF.
  • Criar : Defina uma função SQL para usar como lógica de filtro de linhas.

Exemplo de configurações de política de filtro de linha ABAC para a seção de função de filtro de linha.

Na seção Entradas da função , forneça um valor para cada parâmetro da função. Cada entrada pode ser uma coluna que corresponde a tags, uma coluna que corresponde a uma expressão personalizada ou um valor constante.

Exemplo de configurações ABAC para a seção de entradas de função.

Máscara de coluna

Na seção Condições da coluna , escolha como identificar as colunas a serem mascaradas:

  • Colunas que correspondam a qualquer uma destas tags : Especifique uma lista de chave tag ou par key tag - valor. As colunas que contêm qualquer um desses elementos são mascaradas pela política.
  • Colunas que correspondem a uma expressão personalizada : Crie uma expressão booleana usando has_tag e has_tag_value, combinada com AND, OR e NOT para uma lógica de correspondência mais complexa. As colunas onde a expressão resulta em TRUE são mascaradas.

Exemplo de configurações de política de máscara de coluna ABAC para a seção Condições da coluna.

Em seguida, escolha a função de mascaramento a ser aplicada às colunas correspondentes:

  • Selecionar existente : Selecione uma UDF já definida no Unity Catalog. A UDF retorna o valor original ou o valor mascarado. O tipo de retorno deve ser compatível com o tipo de dados da coluna de destino. Você deve ter EXECUTE na UDF.
  • Criar : Defina uma função SQL para usar como lógica de mascaramento de coluna.

Exemplo de configurações de política de máscara de coluna ABAC para a seção de função de mascaramento.

Na seção Entradas da função , forneça um valor para cada parâmetro adicional da função. Cada entrada pode ser uma coluna que corresponde a tags, uma coluna que corresponde a uma expressão personalizada ou um valor constante.

Este exemplo usa um valor constante de 4 para mostrar os últimos 4 caracteres do SSN.

Exemplo de configurações de política de máscara de coluna ABAC para a seção de entradas da função.

  1. Clique em Criar política .

Editar uma política

  1. Em seu site Databricks workspace, clique em Ícone de dados. Catalog .
  2. Selecione o objeto ao qual a política está associada.
  3. Clique na guia Políticas .
  4. Selecione a política que deseja editar.
  5. Atualize os campos que desejar modificar. Você pode modificar a descrição, os princípios, o tipo de política, as condições e os mapeamentos de entrada de função. O nome da política e o objeto protegível ao qual a política é aplicada não podem ser editados. Para obter descrições dos campos, consulte Criar uma política.
  6. Clique em Atualizar política .

Excluir uma política

  1. Em seu site Databricks workspace, clique em Ícone de dados. Catalog .
  2. Selecione o objeto ao qual a política está associada.
  3. Clique na guia Políticas .
  4. Selecione a política.
  5. Clique em Excluir política .

Mostrar políticas

Use SHOW POLICIES para listar as políticas definidas em um objeto protegível. Use SHOW EFFECTIVE POLICIES para incluir também políticas de escopos pai, como políticas de nível de catálogo que afetam uma tabela.

SQL
SHOW [EFFECTIVE] POLICIES ON { CATALOG | SCHEMA | TABLE } securable_name

O resultado inclui o nome da política, o tipo de política e o catálogo, esquema ou tabela onde cada política está definida.

A visualização das políticas efetivas de uma tabela não requer permissões no catálogo ou esquema pai. Isso permite que um administrador de tabela veja as regras aplicáveis sem ter acesso de leitura às políticas das tabelas irmãs.

Exemplo:

SQL
SHOW EFFECTIVE POLICIES ON SCHEMA prod.customers;

nome_da_política

tipo_de_política

catálogo

esquema

Comentário

ocultar_clientes_da_eu

FILTRO DE LINHA

produção

clientes

máscara_ssn

MÁSCARA DE COLUNA

produção

clientes

Descreva uma política

Use DESCRIBE POLICY para view os detalhes de uma política específica. Requer MANAGE no objeto protegível de destino ou propriedade do objeto.

SQL
{ DESC | DESCRIBE } POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name

O resultado mostra as propriedades da política como pares key-valor, incluindo nome, tipo de objeto protegível, nome do objeto protegível, entidades, condições, nome da função e registros de data e hora.

Exemplo:

SQL
DESCRIBE POLICY hide_eu_customers ON SCHEMA prod.customers;

nome_da_informação

valor_da_informação

Nome

ocultar_clientes_da_eu

Sobre o tipo seguro

Esquema

Em segurança

clientes de produção

Aos diretores

analistas dos EUA

Para o tipo seguro

Tabela

Colunas correspondentes

tem a tag ('geo_region') como região

Tipo de apólice

FILTRO_DE_LINHAS

Nome da função

prod.clientes.região_não_eu

Utilizando colunas

Região

Registro de auditoria

Databricks logs as operações tag controladas e políticas ABAC na tabela log de auditoria do sistema. Abaixo seguem exemplos de consultas. Para mais informações, consulte logsde auditoria.

SQL
-- All tag assignment and deletion events from the audit log
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.workspace_id,
request_params.metastore_id,
request_params.tag_assignment,
response.status_code,
source_ip_address
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN (
'createEntityTagAssignment',
'deleteEntityTagAssignment'
)
ORDER BY event_time DESC;

-- All ABAC policy CRUD operations
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.name AS policy_name,
request_params.on_securable_type,
request_params.on_securable_fullname,
request_params.policy_info,
response.status_code
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN ('createPolicy', 'deletePolicy', 'getPolicy', 'listPolicies')
ORDER BY event_time DESC;

Mais informações