Compartilhar via


Tutorial: Configurar o ABAC

Importante

Esse recurso está em Visualização Pública.

Este tutorial apresenta como configurar políticas de Controle de Acesso Baseado em Atributo (ABAC), de filtro de linha e máscara de coluna no Unity Catalog.

Neste exemplo, uma equipe de análise dos EUA não deve conseguir acessar registros de clientes ou SSNs da UE. No entanto, eles devem ser capazes de acessar outros clientes e dados do cliente na mesma tabela. Este tutorial inclui as seguintes etapas:

  1. Criar uma marca governada
  2. Criar um catálogo, esquema e tabela no Unity Catalog
  3. Aplicar etiquetas governadas a colunas
  4. Criar uma UDF para ocultar dados de membros da UE
  5. Criar uma política de filtro de linha
  6. Criar um UDF para ocultar SSNs
  7. Criar uma política de máscara de coluna
  8. Selecione sua tabela usando as políticas

Para obter uma demonstração de configuração do ABAC, consulte Descubra o Controle de Acesso Baseado em Atributos (ABAC) com o Catálogo Unity.

Requisitos de computação

  • Você deve usar a computação no Databricks Runtime 16.4 ou superior.
  • A computação sem servidor sempre funciona com o ABAC.

A computação que executa runtimes mais antigos não pode acessar tabelas protegidas pelo ABAC. Como uma solução alternativa temporária, você pode configurar o ABAC para aplicar 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.

Etapa 1: Criar uma tag governada

Para criar uma marca governada, você deve ter a permissão CREATE da marca governada no nível da conta. Os administradores de conta e de espaço de trabalho têm CREATE por padrão.

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.

  2. Clique no botão Marcas Governadas>.

  3. Clique em Criar marca governada.

  4. Insira a chave de marca pii.

  5. Insira uma descrição para a marca governada.

  6. Insira os valores permitidos para a marca: ssn e address. Somente esses valores podem ser atribuídos a essa chave de marca.

    Tutorial: criar uma política de tags.

  7. Clique em Criar.

Aviso

Os dados da marca são armazenados como texto sem formatação e podem ser replicados globalmente. Não use nomes de marca, valores ou descritores que possam comprometer a segurança de seus recursos. Por exemplo, não use nomes de marca, valores ou descritores que contenham informações pessoais ou confidenciais.

Etapa 2: Criar a tabela de clientes

Para seguir estas etapas, você deve ter a permissão CREATE CATALOG no metastore do Catálogo Unity. Você também pode criar a tabela em um esquema no qual você tem a CREATE TABLE permissão.

  1. Na barra lateral, clique em +Novo>Notebook.
  2. Selecione SQL como o idioma do bloco de anotações.
  3. Clique em Conectar e anexe o notebook a um recurso de computação.
  4. 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');

Etapa 3: Adicionar marcas governadas às colunas PII

  1. 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');

Etapa 4: Criar uma UDF para localizar endereços da UE

  1. 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
);

Esta UDF verifica se uma determinada cadeia de caracteres não parece fazer referência à Europa ou à UE. Se qualquer uma dessas subcadeias de caracteres for encontrada, ela retornará FALSE (o que significa que é um endereço da UE). Se nenhuma das subcadeias de caracteres for encontrada, ela retornará TRUE (o que significa que não é um endereço da UE).

Etapa 5: Criar uma política de filtro de linha

Para criar uma política em um objeto, você deve ter MANAGE no objeto ou propriedade do objeto. Para adicionar uma UDF a uma política, você deve ter EXECUTE na UDF e ela deve estar no Catálogo do Unity.

  1. Clique no ícone Dados.Catálogo.

  2. Clique no abac catálogo criado anteriormente.

  3. Clique na guia Políticas.

  4. Clique em Nova política.

  5. Em geral:

    • Para Nome, insira hide_eu_customers.
    • Para Descrição, insira uma descrição para sua política.
    • Para Aplicado a..., pesquise e selecione os usuários ou identidades de usuário aos quais a política se aplica. Neste exemplo, você pode usar o grupo Todos os usuários da conta.
    • Deixe exceto... em branco.
    • Para Escopo, escolha o abac catálogo e Todos os esquemas.

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

  6. Para Propósito, escolha Ocultar linhas de tabela.

  7. Em Condições, clique em Selecionar existente. Em seguida, clique no ícone função.Selecione a função.

  8. No menu Selecionar uma função , clique no abac catálogo, no customers esquema e na is_not_eu_address função que você criou anteriormente.

  9. Clique em Selecionar.

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

  10. Opcionalmente, você pode testar sua função de mascaramento expandindo a função Teste e fornecendo uma entrada. Por exemplo, inserir 78 Berliner Str., Berlin, Germany E.U. e clicar em Executar teste retorna FALSE (Hide row)corretamente.

    Exemplo de teste de função de mascaramento de filtro de linha ABAC.

  11. Em parâmetros de função:

    • Escolha a coluna Mapa para parâmetro se ela tiver uma marca específica.
    • Pesquise por pii. Selecione pii : address.

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

  12. Clique em Criar política.

Etapa 6: Testar sua política

  1. Retorne ao bloco de anotações e execute o seguinte comando:
SELECT DISTINCT * FROM abac.customers.profiles

Somente as linhas de residentes não pertencentes à UE são retornadas.

Primeiro_Nome Sobrenome Número_de_Telefone Endereço CPF
Graça Wilson 890-123-4567 Rua Elm, 852, NV 890-12-3456
Alice Johnson 345-678-9012 Rua Pinheiro, 789, TX 345-67-8901
Hera Taylor 012-345-6789 Rua Aspen, 159, AZ 012-34-5678
Franco Moleiro (789) 012-3456 Rua Spruce, 741, Washington, EUA 789-01-2345
Joana Ferreiro 234-567-8901 456 Oak St, AC 234-56-7890
John Cerva 123-456-7890 123 Main St, NY 123-45-6789
Charlie Davis 567-890-1234 Rua Cedar, 654, IL (Illinois) 567-89-0123
Emily Branco 678-901-2345 Rua Birch, 987, WA 678-90-1234
Hank Moore 901-234-5678 963 Walnut St, CO 901-23-4567
Bob Marrom 456-789-0123 321 Maple St, FL 456-78-9012

Você pode continuar criando uma política de máscara de coluna.

Etapa 7: Criar um UDF para mascarar SSNs

  1. 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 '***-**-****' ;

Essa UDF retorna uma cadeia de caracteres do SSN (Número de Segurança Social) totalmente mascarada ('***-**-****').

Etapa 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 propriedade do objeto. Para adicionar uma UDF a uma política, você deve ter EXECUTE na UDF e ela deve estar no Catálogo do Unity.

  1. Clique no ícone Dados.Catálogo.

  2. Clique no abac catálogo criado anteriormente.

  3. Clique na guia Políticas.

  4. Clique em Nova política.

  5. Em geral:

    • Para Nome, insira mask_ssn.
    • Para Descrição, insira uma descrição para sua política.
    • Para Aplicado a..., pesquise e selecione os usuários ou identidades de usuário aos quais a política se aplica. Neste exemplo, você pode usar o grupo Todos os usuários da conta.
    • Deixe exceto... em branco.
    • Para Escopo, escolha o abac catálogo e Todos os esquemas.

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

  6. Para fins, escolha mascarar os dados da coluna.

  7. Em Condições:

    • Escolha a Coluna de Máscara se ela tiver uma marca específica. Pesquise pii e selecione pii : ssn.
    • Clique em Selecionar existente. Em seguida, clique no ícone função.Selecione a função.
    • No menu Selecionar uma função , clique no abac catálogo, no customers esquema e na mask_ssn função que você criou anteriormente.
  8. Clique em Selecionar.

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

  9. Opcionalmente, você pode testar sua função de mascaramento expandindo a função Teste e fornecendo uma entrada. Por exemplo, inserir 901-234-5678 e clicar em Executar teste retorna ***-**-****corretamente.

    Exemplo de teste de função de máscara de coluna ABAC.

  10. Clique em Criar política.

Etapa 9: Testar sua política

  1. Retorne ao bloco de anotações e execute o seguinte comando:
SELECT * FROM abac.customers.profiles

Os SSNs agora retornam como ***-***-***. Somente residentes que não são da UE são retornados porque a máscara de filtro de linha também está habilitada.

Primeiro_Nome Sobrenome Número_de_Telefone Endereço CPF
Joana Ferreiro 234-567-8901 456 Oak St, AC ***-**-****
Alice Johnson 345-678-9012 Rua Pinheiro, 789, TX ***-**-****
Charlie Davis 567-890-1234 Rua Cedar, 654, IL (Illinois) ***-**-****
Graça Wilson 890-123-4567 Rua Elm, 852, NV ***-**-****
Bob Marrom 456-789-0123 321 Maple St, FL ***-**-****
Hank Moore 901-234-5678 963 Walnut St, CO ***-**-****
Hera Taylor 012-345-6789 Rua Aspen, 159, AZ ***-**-****
Emily Branco 678-901-2345 Rua Birch, 987, WA ***-**-****
Franco Moleiro (789) 012-3456 Rua Spruce, 741, Washington, EUA ***-**-****
John Cerva 123-456-7890 123 Main St, NY ***-**-****