Pular para o conteúdo principal

Proteja novas tabelas por default com tagsde controle.

Este tutorial mostra como bloquear automaticamente novas tabelas e liberá-las somente após a gestão de dados revisar e classificar seu conteúdo. Utiliza:

  • Uma tag de controle review_status em nível de esquema, portanto, toda nova tabela no esquema é mascarada por default
  • Classificação de dados para detectar e tag automaticamente colunas sensíveis com tagsdo sistema class.*
  • A função system.data_classification.mask_value integrada para mascaramento com reconhecimento de tipo
  • Duas políticas: uma que oculta todas as colunas enquanto uma tabela está pendente de revisão e outra que oculta apenas as colunas classificadas após a revisão.

Pré-requisitos

  • Databricks Runtime 16.4 ou superior, ou compute serverless .
  • Permissões de administrador da conta ou administrador workspace (para criar tags controladas e ativar a Classificação de Dados).
  • MANAGE permissão no catálogo ou esquema de destino.
  • EXECUTE nas UDFs.
  • Um notebook SQL ou editor de consultas.

Cenário

Sua organização adiciona regularmente novas tabelas a um esquema Unity Catalog devido a aquisições, integrações de parceiros ou novos recursos de produtos. Por default, qualquer usuário com SELECT no esquema pode consultar imediatamente novas tabelas, incluindo colunas que podem conter PII não classificadas.

O padrão tag de controle resolve isso: uma tag de nível de esquema review_status = pending faz com que cada nova tabela no esquema seja totalmente mascarada por default. A Classificação de Dados examina a tabela em segundo plano e aplica tags class.* às colunas sensíveis detectadas. Após uma gestão de dados revisar as classificações e corrigir quaisquer falsos positivos, eles mudam review_status para reviewed no nível da tabela. Isso substitui a tag de esquema herdada e uma segunda política entra em ação: mascarando apenas as colunas com tags class.*enquanto deixa as colunas não sensíveis acessíveis.

A Classificação de Dados examina as tabelas em segundo plano e aplica tags governadas pelo sistema class.* , como class.name, class.email_address e class.us_ssn. Não são necessárias tags personalizadas para a detecção em nível de coluna.

  1. No Explorador de Catálogos, selecione o seu catálogo e acesse a tab Detalhes .
  2. Ao lado de Classificação de dados , clique em Ativar .
  3. Opcionalmente, escolha quais esquemas incluir.

A marcação automática é ativada posteriormente, na página de resultados da Classificação de Dados, após a revisão das detecções iniciais (passo 6).

Para obter detalhes completos, consulte Classificação de Dados.

o passo 2: Crie a taggovernada review_status

Crie a seguinte tag controlada na interface do usuário do Explorador de Catálogo ( Catálogo > Controle > Etiquetas controladas > Criar tagcontrolada ):

keyde etiqueta

Valores permitidos

review_status

pending, reviewed

atenção

Os dados das tags são armazenados como texto simples e podem ser replicados globalmente. Não utilize nomes tag , valores ou descritores que possam comprometer a segurança do seu recurso. Por exemplo, não utilize nomes tag , valores ou descritores que contenham informações pessoais ou sensíveis.

o passo 3: Construir o esquema e aplicar a tagde controle

Crie um esquema e defina a tag de controle como pending. Todas as tabelas criadas neste esquema herdam esta tag automaticamente.

SQL
CREATE CATALOG IF NOT EXISTS abac_tutorial;
USE CATALOG abac_tutorial;

CREATE SCHEMA IF NOT EXISTS secure_default;

ALTER SCHEMA abac_tutorial.secure_default
SET TAGS ('review_status' = 'pending');

o passo 4: Criar a política de revisão pendente

Quando uma tabela tem review_status = pending, todas as colunas são mascaradas. MATCH COLUMNS TRUE corresponde a todas as colunas, independentemente das tags.

system.data_classification.mask_value é uma função de mascaramento com reconhecimento de tipo fornecida pelo Databricks. Retorna um marcador de posição seguro com base no tipo de dados em tempo de execução. Por exemplo, retorna 0 para números inteiros, DATE '1970-01-01' para datas e um hash SHA-256 para strings. Não é necessário nenhum UDF personalizado.

SQL
CREATE POLICY review_pending_policy
ON SCHEMA abac_tutorial.secure_default
COLUMN MASK system.data_classification.mask_value
TO `account users`
FOR TABLES
WHEN has_tag_value('review_status', 'pending')
MATCH COLUMNS TRUE AS m ON COLUMN m;
nota

Para isentar grupos específicos da política, adicione uma cláusula EXCEPT . Por exemplo, TO \usuáriosaccount EXCETO `data_admins`lets members of thegrupo data_admins` ignora a máscara e vê os dados não mascarados.

o passo 5: Criar uma tabela e verificar o bloqueio

Crie uma tabela no esquema. Ele herda review_status = pending do esquema, portanto todas as colunas são mascaradas imediatamente.

SQL
CREATE OR REPLACE TABLE abac_tutorial.secure_default.employee_directory (
id INT,
full_name STRING,
personal_email STRING,
ssn_number STRING,
phone STRING,
office_location STRING,
title STRING,
team STRING
);

INSERT INTO abac_tutorial.secure_default.employee_directory VALUES
(1, 'Alice Johnson', 'alice.j@gmail.com', '123-45-6789', '555-0101', 'NYC HQ Floor 12', 'Staff Engineer', 'Platform'),
(2, 'Bob Smith', 'bob.smith@yahoo.com', '234-56-7890', '555-0202', 'LA Office Suite 4', 'Sales Director', 'Enterprise'),
(3, 'Carol White', 'carol.w@outlook.com', '345-67-8901', '555-0303', 'Chicago Rm 301', 'Senior Engineer', 'Platform'),
(4, 'David Lee', 'david.lee@gmail.com', '456-78-9012', '555-0404', 'Houston Floor 2', 'Marketing Lead', 'Growth'),
(5, 'Eva Martinez', 'eva.m@hotmail.com', '567-89-0123', '555-0505', 'Phoenix Building B', 'HR Business Partner', 'People');

Execute a seguinte consulta para confirmar que todas as colunas estão mascaradas.

SQL
SELECT * FROM abac_tutorial.secure_default.employee_directory;

Passo 6: Revisar classificações e ativar etiquetas automáticas

Assim que a Classificação de Dados analisar a tabela (dentro de 24 horas após a sua ativação), revise as detecções e ative as tags automáticas para que tags class.* sejam aplicadas às detecções existentes e futuras.

  1. No Explorador de Catálogos, selecione o seu catálogo e acesse a tab Detalhes .
  2. Ao lado de Classificação de dados , clique em visualizar resultados .
  3. Analise as detecções e forneça feedback sobre quaisquer erros clicando no ícone Excluir ao lado das detecções incorretas.
  4. Ative as tags automáticas para as tags de classificação que deseja aplicar. As etiquetas serão preenchidas na próxima verificação (dentro de 24 horas).

Para obter detalhes sobre a interface do usuário de classificação de dados e as tags automáticas, consulte Exibir resultados da classificação e Ativar tags automáticas.

Para este tutorial, execute o seguinte para simular as tags class.* que as tags automáticas aplicariam, para que você possa ver o fluxo de ponta a ponta sem esperar por uma verificação em segundo plano.

SQL
-- Simulate Data Classification tags (in production, these are applied automatically)
ALTER TABLE abac_tutorial.secure_default.employee_directory
ALTER COLUMN full_name SET TAGS ('class.name' = '');
ALTER TABLE abac_tutorial.secure_default.employee_directory
ALTER COLUMN personal_email SET TAGS ('class.email_address' = '');
ALTER TABLE abac_tutorial.secure_default.employee_directory
ALTER COLUMN ssn_number SET TAGS ('class.us_ssn' = '');
ALTER TABLE abac_tutorial.secure_default.employee_directory
ALTER COLUMN phone SET TAGS ('class.phone_number' = '');

o passo 7: Criar a política revisada

Quando uma tabela é marcada como reviewed, apenas as tags de coluna com tags class.* são mascaradas. As colunas não classificadas tornam-se visíveis.

SQL
CREATE POLICY review_complete_policy
ON SCHEMA abac_tutorial.secure_default
COLUMN MASK system.data_classification.mask_value
TO `account users`
FOR TABLES
WHEN has_tag_value('review_status', 'reviewed')
MATCH COLUMNS (
has_tag('class.name')
OR has_tag('class.email_address')
OR has_tag('class.us_ssn')
OR has_tag('class.phone_number')
OR has_tag('class.credit_card')
OR has_tag('class.date_of_birth')
) AS m
ON COLUMN m;

Passo 8: Vire a tag de controle e verifique

Marque a tabela como revisada. A tag de nível de tabela reviewed substitui a tag de nível de esquema herdada pending , portanto a política pendente não se aplica mais e a política revisada entra em vigor.

SQL
ALTER TABLE abac_tutorial.secure_default.employee_directory
SET TAGS ('review_status' = 'reviewed');

Execute a seguinte consulta para confirmar a alteração. As colunas com tags class.* (full_name, personal_email, ssn_number, phone) permanecem mascaradas. As colunas não classificadas (id, office_location, title, team) agora estão visíveis.

SQL
SELECT * FROM abac_tutorial.secure_default.employee_directory;

o passo 9: Verificar herança automática para novas tabelas

Crie outra tabela no mesmo esquema. Ele herda review_status = pending e é totalmente bloqueado automaticamente. Nenhuma configuração adicional é necessária.

SQL
CREATE OR REPLACE TABLE abac_tutorial.secure_default.transaction_log (
txn_id INT, account_holder STRING, amount DOUBLE, txn_date DATE, description STRING
);

INSERT INTO abac_tutorial.secure_default.transaction_log VALUES
(1001, 'Alice Johnson', 2500.00, '2026-01-15', 'Wire transfer'),
(1002, 'Bob Smith', 1800.00, '2026-01-16', 'Direct deposit'),
(1003, 'Carol White', 4200.00, '2026-01-17', 'Invoice payment');

Execute a seguinte consulta para confirmar que a nova tabela está totalmente mascarada. Após a classificação de dados analisá-lo, apenas as colunas de tags class.*permanecem mascaradas depois que você muda para reviewed.

SQL
SELECT * FROM abac_tutorial.secure_default.transaction_log;

Limpar

Para remover todos os objetos criados neste tutorial, execute o seguinte comando.

SQL
DROP POLICY review_pending_policy ON SCHEMA abac_tutorial.secure_default;
DROP POLICY review_complete_policy ON SCHEMA abac_tutorial.secure_default;
DROP TABLE IF EXISTS abac_tutorial.secure_default.employee_directory;
DROP TABLE IF EXISTS abac_tutorial.secure_default.transaction_log;
DROP SCHEMA IF EXISTS abac_tutorial.secure_default CASCADE;
DROP CATALOG IF EXISTS abac_tutorial;

Para remover a tag review_status , use a interface do usuário do Explorador de Catálogo.