Pular para o conteúdo
Lucas Lessa
Voltar para as notícias
DatabricksAtualizaçãoImpacto: Médio

Uso de VARIANT estendido para colunas ARRAY e MAP em máscaras ABAC

Agora você pode usar uma única função VARIANT para mascarar colunas dos tipos ARRAY e MAP em políticas ABAC.

O que mudou

O Databricks agora permite que funções de máscara baseadas no tipo VARIANT sejam aplicadas a colunas do tipo ARRAY e MAP, além de STRUCT. Isso simplifica a governança ao reduzir a quantidade de UDFs necessárias para mascarar dados complexos.

Para que serve

Imagine que você precisa ocultar dados sensíveis em tabelas que contêm listas ou dicionários de informações, e quer reutilizar a mesma lógica de segurança sem criar funções separadas para cada tipo de dado.

  • Mascarar colunas ARRAY e MAP usando uma única função baseada em VARIANT.
  • Reduzir o número de funções definidas pelo usuário (UDFs) e políticas de acesso para manter.
  • Reconstruir estruturas de dados complexas preservando o esquema original após o mascaramento.

Como usar

Crie uma função SQL que aceite e retorne VARIANT, utilizando schema_of_variant() para identificar o tipo e reconstruir o valor com as funções array() ou map().

CREATE OR REPLACE FUNCTION generic_mask(val VARIANT)
RETURNS VARIANT
RETURN CASE
  WHEN schema_of_variant(val) = 'ARRAY<STRING>' THEN
    to_variant_object(array('redacted'))
  WHEN schema_of_variant(val) = 'OBJECT<key1: STRING, key2: STRING>' THEN
    to_variant_object(map('key1', 'redacted', 'key2', 'redacted'))
  ELSE NULL::VARIANT
END;

O que acontece nesse código:

  1. A função recebe a coluna convertida automaticamente para o formato VARIANT.
  2. O comando schema_of_variant(val) verifica a estrutura exata de cada linha em tempo de execução.
  3. O bloco CASE aplica a lógica de substituição adequada para cada tipo de esquema detectado.
  4. O valor modificado é encapsulado por to_variant_object() e retornado, sendo convertido de volta ao tipo original pelo Databricks.

Limitações e requisitos

  • Requer o Databricks Runtime 19 ou superior para colunas ARRAY e MAP.
  • Colunas complexas contendo CHAR, VARCHAR, GEOMETRY, GEOGRAPHY ou TIME não podem ser mascaradas com VARIANT.
  • As chaves de colunas do tipo MAP precisam ser estritamente do tipo STRING.
  • Essa conversão funciona exclusivamente dentro de políticas de máscara de coluna e filtro de linha do Unity Catalog (ABAC), e não em consultas SQL gerais.
Ver nota oficial do Databricks

VARIANT cast extends to ARRAY and MAP columns in ABAC column masks

Resumo e explicação gerados por IA a partir da release note oficial. Em caso de dúvida, a documentação oficial da plataforma prevalece.

Relacionadas