Pular para o conteúdo principal

Tutorial: Configurar o ABAC

info

Beta

Esse recurso está na versão beta.

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.

Nesse exemplo, uma equipe analítica dos EUA não deve poder acessar os registros de clientes ou SSNs da UE, mas deve poder acessar outros clientes e dados do cliente na mesma tabela. Este tutorial inclui o seguinte:

  1. Habilite os Betas ABAC
  2. Criar uma tag governada
  3. Criar um catálogo, um esquema e uma tabela do Unity Catalog
  4. Aplicar tags controladas às colunas
  5. Criar um UDF para ocultar os dados dos membros da UE
  6. Crie uma política de filtro de linha
  7. Criar um UDF para ocultar SSNs
  8. Crie uma política de máscara de coluna
  9. 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: Habilitar ABAC Betas

  1. Como administrador do site workspace, clique em seu nome de usuário na barra superior do site Databricks workspace.
  2. No menu, selecione Previews .
  3. Defina a opção Controle de acesso baseado em atributos como Ativado.

o passo 2: Criar uma governança tag

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.

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

  2. Clique no botão Governed tags (Tags governadas ).

  3. Clique em Create governed tag .

  4. Digite a tag key pii.

  5. Digite uma descrição para a tag governada.

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

    tutorial: criar uma política de tags.

  7. Clique em Criar .

atenção

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.

Etapa 3: criar 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.

  1. Na barra lateral, clique em +Novo > Notebook .
  2. Selecione SQL como idioma do seu notebook.
  3. Clique em Conectar e anexe o notebook a um recurso de compute.
  4. Adicione os seguintes comandos ao Notebook e execute-os:
SQL
-- 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 4: adicionar tags controladas às colunas de PII

  1. Adicione o seguinte comando ao Notebook e execute-o:
SQL
-- 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 5: Criar um UDF para encontrar endereços da UE

  1. Adicione o seguinte comando ao Notebook e execute-o:
SQL
-- 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).

Etapa 6: criar uma política de filtro de linha

  1. Clique em Ícone de dados. Catálogo .

  2. Ao lado do catálogo abac, clique no menu de kebab. Ícone do menu Kebab.

  3. Clique em Abrir no Catalog Explorer .

  4. Clique na guia Políticas .

  5. Clique em Nova política .

  6. Em Geral , insira o nome hide_eu_customers e a descrição da sua política.

  7. Em Princípios :

    • Em Aplicado a... , pesquise e selecione os principais aos quais a política se aplica. Neste exemplo, o senhor pode usar o grupo All account users .
    • Deixe , exceto por... em branco.

    Exemplo de configurações de política de filtro de linha ABAC.

  8. No alvo Type & :

    • Em Tipo de política , selecione Filtro de linha .
    • Em Alvo da política , selecione o catálogo abac para o escopo da política.
    • Deixe a condição do nível da tabela em branco.
  9. Em Função , selecione a função is_not_eu_address que você criou em abac.customers.

  10. Ao lado da coluna Quando , selecione tem valor de tag .

  11. Na chave , selecione pii e, em Value , selecione address.

    Exemplo de definição de função de política de filtro de linha ABAC.

  12. Clique em Criar política .

Etapa 7: teste sua política

  1. Retorne ao Notebook e execute o seguinte comando:
SQL
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.

Etapa 8: Criar um UDF para mascarar SSNs

  1. Adicione o seguinte comando ao Notebook e execute-o:
SQL
-- 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 ('***-**-****'),

Etapa 9: criar uma política de máscara de coluna

  1. Clique em Ícone de dados. Catálogo .

  2. Ao lado do catálogo abac, clique no menu de kebab. Ícone do menu Kebab.

  3. Clique em Abrir no Catalog Explorer .

  4. Clique na guia Políticas .

  5. Clique em Nova política .

  6. Em Geral , insira o nome mask_ssn e a descrição da sua política.

  7. Em Princípios :

    • Em Aplicado a... , pesquise e selecione os principais aos quais a política se aplica. Neste exemplo, o senhor pode usar o grupo All account users .
    • Deixe , exceto por... em branco.

    Exemplo de configurações de política de máscara de coluna ABAC.

  8. No alvo Type & :

    • Em Tipo de política , selecione Máscara de coluna .
    • Em Alvo da política , selecione o catálogo abac para o escopo da política.
    • Deixe a condição do nível da tabela em branco.
  9. Em Função , selecione a função mask_SSN que você criou em abac.customers.

  10. Ao lado da coluna Quando , selecione tem valor de tag .

  11. Na chave , selecione pii e, em Value , selecione ssn.

    Exemplo de definição de função de política de máscara de coluna ABAC.

  12. Clique em Criar política .

Etapa 10: teste sua política

  1. Retorne ao Notebook e execute o seguinte comando:
SQL
SELECT * FROM abac.customers.profiles

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

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

***-**-****