Tutorial: Configurar o ABAC
Visualização
Este recurso está em Pré-visualização Pública.
Este tutorial apresenta como configurar políticas de controle de acesso baseado em atributos (ABAC) de filtro de linha e máscara de coluna no Unity Catalog.
Neste exemplo, uma equipe de análise dos EUA não deveria ter acesso a registros de clientes ou números de segurança social (SSNs) da UE. No entanto, eles devem ser capazes de acessar outros clientes e dados do cliente na mesma tabela. Este tutorial inclui os seguintes passos:
- Criar uma tag governada
- Criar um catálogo, um esquema e uma tabela do Unity Catalog
- Aplicar tags controladas às colunas
- Criar um UDF para ocultar os dados dos membros da UE
- Crie uma política de filtro de linha
- Criar um UDF para ocultar SSNs
- Crie uma política de máscara de coluna
- Selecione sua tabela usando as políticas
Para obter uma demonstração da configuração do ABAC, consulte Descubra o controle de acesso baseado em atributos (ABAC) com o Unity Catalog.
requisitos de computação
- O senhor deve usar o site compute em Databricks Runtime 16.4 ou acima.
- sem servidor compute sempre funciona com ABAC.
A computação que executa tempos de execução mais antigos não pode acessar tabelas protegidas pelo ABAC. Como solução temporária, você pode configurar o ABAC para ser aplicado somente a um grupo específico. Adicione os usuários que você deseja restringir a esse grupo. Os usuários que não estão no grupo ainda podem acessar as tabelas.
o passo 1: Crie uma taggovernada
Para criar um tag governado, o senhor deve ter a permissão tag CREATE governado no nível account. A conta workspace e os administradores têm CREATE by default.
-
Em seu site Databricks workspace, clique em
Catalog .
-
Clique no botão Governança e, em seguida, clique em Etiquetas governadas .
-
Clique em Create governed tag .
-
Digite a tag key
pii. -
Digite uma descrição para a tag governada.
-
Insira os valores permitidos para a tag:
ssneaddress. Somente esses valores podem ser atribuídos a essa tag key.
-
Clique em Criar .
Os dados da tag são armazenados como texto simples e podem ser replicados globalmente. Não use nomes de tags, valores ou descritores que possam comprometer a segurança de seu recurso. Por exemplo, não use nomes de tags, valores ou descritores que contenham informações pessoais ou confidenciais.
Passo 2: Crie a tabela de clientes
Para seguir essas etapas, o senhor deve ter a permissão CREATE CATALOG no metastore do Unity Catalog. Você também pode criar a tabela em um esquema no qual tenha a permissão CREATE TABLE.
- Na barra lateral, clique em +Novo > Notebook .
- Selecione
SQLcomo idioma do seu notebook. - Clique em Conectar e anexe o notebook a um recurso de compute.
- Adicione os seguintes comandos ao Notebook e execute-os:
-- Create catalog (if not already exists)
CREATE CATALOG IF NOT EXISTS abac;
USE CATALOG abac;
-- Create schema
CREATE SCHEMA IF NOT EXISTS customers;
USE SCHEMA customers;
-- Create table
CREATE TABLE IF NOT EXISTS profiles (
First_Name STRING,
Last_Name STRING,
Phone_Number STRING,
Address STRING,
SSN STRING
)
USING DELTA;
-- Insert data
INSERT INTO profiles (First_Name, Last_Name, Phone_Number, Address, SSN)
VALUES
('John', 'Doe', '123-456-7890', '123 Main St, NY', '123-45-6789'),
('Jane', 'Smith', '234-567-8901', '456 Oak St, CA', '234-56-7890'),
('Alice', 'Johnson', '345-678-9012', '789 Pine St, TX', '345-67-8901'),
('Bob', 'Brown', '456-789-0123', '321 Maple St, FL', '456-78-9012'),
('Charlie', 'Davis', '567-890-1234', '654 Cedar St, IL', '567-89-0123'),
('Emily', 'White', '678-901-2345', '987 Birch St, WA', '678-90-1234'),
('Frank', 'Miller', '789-012-3456', '741 Spruce St, WA', '789-01-2345'),
('Grace', 'Wilson', '890-123-4567', '852 Elm St, NV', '890-12-3456'),
('Hank', 'Moore', '901-234-5678', '963 Walnut St, CO', '901-23-4567'),
('Ivy', 'Taylor', '012-345-6789', '159 Aspen St, AZ', '012-34-5678'),
('Liam', 'Connor', '111-222-3333', '12 Abbey Street, Dublin, Ireland EU', '111-22-3333'),
('Sophie', 'Dubois', '222-333-4444', '45 Rue de Rivoli, Paris, France Europe', '222-33-4444'),
('Hans', 'Müller', '333-444-5555', '78 Berliner Str., Berlin, Germany E.U.', '333-44-5555'),
('Elena', 'Rossi', '444-555-6666', '23 Via Roma, Milan, Italy Europe', '444-55-6666'),
('Johan', 'Andersson', '555-666-7777', '56 Drottninggatan, Stockholm, Sweden EU', '555-66-7777');
Passo 3: Adicione tags regulamentadas às colunas de PII (Informações Pessoais Identificáveis).
- Adicione o seguinte comando ao Notebook e execute-o:
-- Add the governed tag to ssn column
ALTER TABLE abac.customers.profiles
ALTER COLUMN SSN
SET TAGS ('pii' = 'ssn');
-- Add governed tag to address column
ALTER TABLE abac.customers.profiles
ALTER COLUMN Address
SET TAGS ('pii' = 'address');
Passo 4: Crie uma UDF para encontrar endereços da UE
- Adicione o seguinte comando ao Notebook e execute-o:
-- Determine if an address is not in the EU
CREATE OR REPLACE FUNCTION is_not_eu_address(address STRING)
RETURNS BOOLEAN
RETURN (
SELECT CASE
WHEN LOWER(address) LIKE '%eu%'
OR LOWER(address) LIKE '%e.u.%'
OR LOWER(address) LIKE '%europe%'
THEN FALSE
ELSE TRUE
END
);
Este site UDF verifica se uma determinada cadeia de caracteres não parece fazer referência à Europa ou à UE. Se alguma dessas substrings for encontrada, ela retornará FALSE (o que significa que é um endereço da UE). Se nenhuma das substrings for encontrada, ela retornará TRUE (o que significa que não é um endereço da UE).
o passo 5: Criar uma política de filtro de linha
Para criar uma política em um objeto, você deve ter MANAGE no objeto ou a propriedade do objeto.
Para adicionar uma UDF a uma política, você deve ter EXECUTE na UDF e ela deve estar no Unity Catalog.
-
Clique em
Catálogo .
-
Clique no catálogo
abacque você criou anteriormente. -
Clique na guia Políticas .
-
Clique em Nova política .
-
Em geral :
- Para Nome , digite
hide_eu_customers. - No campo Descrição , insira uma descrição para sua política.
- Em " Aplicado a..." , pesquise e selecione as entidades às quais a política se aplica. Neste exemplo, você pode usar o grupo Todos os usuários account .
- Deixe "Exceto para..." em branco.
- Para Escopo , escolha o catálogo
abace Todos os esquemas.

- Para Nome , digite
-
Em Finalidade , selecione Ocultar linhas da tabela .
-
Em Condições , clique em Selecionar existente . Em seguida, clique
Selecione a função .
-
No menu Selecionar uma função , clique no catálogo
abac, no esquemacustomerse, em seguida, na funçãois_not_eu_addressque você criou anteriormente. -
Clique em Selecionar .

-
Opcionalmente, você pode testar sua função de mascaramento expandindo a função Testar e fornecendo uma entrada. Por exemplo, inserir
78 Berliner Str., Berlin, Germany E.U.e clicar em teste de execução retorna corretamenteFALSE (Hide row).
-
Em Parâmetros da função :
- Selecione "Mapear coluna para parâmetro" se ela tiver uma tag específica .
- Pesquise por
pii. Selecionepii : address.

-
Clique em Criar política .
o passo 6: Teste sua política
- Retorne ao Notebook e execute o seguinte comando:
SELECT DISTINCT * FROM abac.customers.profiles
Somente as linhas não residentes na UE são retornadas.
Primeiro_nome | Último nome | Número de telefone | Endereço | SSN |
|---|---|---|---|---|
Grace | Wilson | 890-123-4567 | 852 Elm St, Nevada | 890-12-3456 |
Alice | Johnson | 345-678-9012 | 789 Pine St, Texas | 345-67-8901 |
Hera | Taylor | 012-345-6789 | 159 Aspen St, Arizona | 012-34-5678 |
Frank | Moleira | 789-012-3456 | 741 Spruce St, Washington | 789-01-2345 |
Joana | Smith | 234-567-8901 | 456 Oak St, Califórnia | 234-56-7890 |
John | Corça | 123-456-7890 | 123 Main St, Nova Iorque | 123-45-6789 |
Charlie | Davis | 567-890-1234 | 654 Cedar St, Illinois | 567-89-0123 |
Emily | Branco | 678-901-2345 | 987 Birch St, Washington | 678-90-1234 |
Hank | Moore | 901-234-5678 | 963 Walnut Street, Colorado | 901-23-4567 |
Bob | Castanho | 456-789-0123 | 321 Maple St, Flórida | 456-78-9012 |
Você pode continuar criando uma política de máscara de coluna.
o passo 7: Crie uma UDF para mascarar os números de segurança social
- Adicione o seguinte comando ao Notebook e execute-o:
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;
Este site UDF retorna uma cadeia de caracteres SSN totalmente mascarada ('***-**-****'),
o passo 8: Criar uma política de máscara de coluna
Para criar uma política em um objeto, você deve ter MANAGE no objeto ou a propriedade do objeto.
Para adicionar uma UDF a uma política, você deve ter EXECUTE na UDF e ela deve estar no Unity Catalog.
-
Clique em
Catálogo .
-
Clique no catálogo
abacque você criou anteriormente. -
Clique na guia Políticas .
-
Clique em Nova política .
-
Em geral :
- Para Nome , digite
mask_ssn. - No campo Descrição , insira uma descrição para sua política.
- Em " Aplicado a..." , pesquise e selecione as entidades às quais a política se aplica. Neste exemplo, você pode usar o grupo Todos os usuários account .
- Deixe "Exceto para..." em branco.
- Para Escopo , escolha o catálogo
abace Todos os esquemas.

- Para Nome , digite
-
Em Finalidade , selecione Dados da coluna Mascarar .
-
Em condições :
- Selecione a coluna Máscara se ela tiver tagespecífica . Procure por
piie selecionepii : ssn. - Clique em Selecionar existente . Em seguida, clique
Selecione a função .
- No menu Selecionar uma função , clique no catálogo
abac, no esquemacustomerse, em seguida, na funçãomask_ssnque você criou anteriormente.
- Selecione a coluna Máscara se ela tiver tagespecífica . Procure por
-
Clique em Selecionar .

-
Opcionalmente, você pode testar sua função de mascaramento expandindo a função Testar e fornecendo uma entrada. Por exemplo, inserir
901-234-5678e clicar em teste de execução retorna corretamente***-**-****.
-
Clique em Criar política .
o passo 9: Teste sua política
- Retorne ao Notebook e execute o seguinte comando:
SELECT * FROM abac.customers.profiles
Os números de segurança social agora retornam como ***-***-***. Somente residentes de fora da UE são exibidos, pois a máscara de filtro de linha também está ativada.
Primeiro_nome | Último nome | Número de telefone | Endereço | SSN |
|---|---|---|---|---|
Joana | Smith | 234-567-8901 | 456 Oak St, Califórnia | ***-**-**** |
Alice | Johnson | 345-678-9012 | 789 Pine St, Texas | ***-**-**** |
Charlie | Davis | 567-890-1234 | 654 Cedar St, Illinois | ***-**-**** |
Grace | Wilson | 890-123-4567 | 852 Elm St, Nevada | ***-**-**** |
Bob | Castanho | 456-789-0123 | 321 Maple St, Flórida | ***-**-**** |
Hank | Moore | 901-234-5678 | 963 Walnut Street, Colorado | ***-**-**** |
Hera | Taylor | 012-345-6789 | 159 Aspen St, Arizona | ***-**-**** |
Emily | Branco | 678-901-2345 | 987 Birch St, Washington | ***-**-**** |
Frank | Moleira | 789-012-3456 | 741 Spruce St, Washington | ***-**-**** |
John | Corça | 123-456-7890 | 123 Main St, Nova Iorque | ***-**-**** |