Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tutorial introduz a configuração de políticas de controlo de acesso baseadas em atributos (ABAC) que aplicam filtro de linha e máscara de coluna no Unity Catalog.
Neste exemplo, uma equipa de análise dos EUA não deve poder aceder a registos de clientes da UE ou a SSN. No entanto, devem poder aceder a outros clientes e aos dados dos clientes no mesmo quadro. Este tutorial inclui as seguintes etapas:
- Criar uma tag controlada
- Cria um catálogo no Unity Catalog, esquema e tabela
- Aplicar tags controladas a colunas
- Criar uma UDF para ocultar os dados dos membros da UE
- Criar uma política de filtro de linha
- Criar um UDF para ocultar SSNs
- Criar uma política de máscara de coluna
- Selecione a sua tabela usando as políticas
Para obter uma demonstração da configuração do ABAC, consulte Discover Attribute-Based Access Control (ABAC) with Unity Catalog.
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 ABAC.
A computação que executa tempos de execução mais antigos não pode acessar tabelas protegidas pelo ABAC. Como uma solução temporária, você pode configurar o ABAC para se 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 controlada
Para criar uma tag governada, você deve ter a permissão CREATE da tag governada no nível da conta. Os administradores de conta e espaço de trabalho têm CREATE por padrão.
No seu espaço de trabalho do Azure Databricks, clique no
Catálogo.
Clique no botão Governadas Etiquetas>.
Clique em Criar tag governada.
Introduza a chave da etiqueta
pii.Insira uma descrição para a tag governada.
Insira os valores permitidos para a tag :
ssneaddress. Somente esses valores podem ser atribuídos a essa chave de tag.
Clique em Criar.
Advertência
Os dados da tag são armazenados como texto sem formatação e podem ser replicados globalmente. Não utilize nomes, valores ou descritores de etiquetas que possam comprometer a segurança dos seus recursos. Por exemplo, não use nomes de tags, 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 CREATE CATALOG permissão 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.
- Na barra lateral, clique em +Novo>Notebook.
- Selecione
SQLcomo idioma do seu bloco de notas. - Clique em Conectar e anexe o bloco de anotações a um recurso de computação.
- Adicione os seguintes comandos ao bloco de notas 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 tags controladas às colunas PII
- Adicione o seguinte comando ao bloco de anotações 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 encontrar endereços da UE
- Adicione o seguinte comando ao bloco de anotações 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 UDF verifica se uma determinada cadeia de caracteres não parece fazer referência à Europa ou à UE. Se qualquer uma 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 5: Criar uma política de filtro de linha
Para criar uma política em um objeto, você deve ter MANAGE sobre o objeto ou propriedade do objeto.
Para adicionar um UDF a uma política, você deve ter EXECUTE no UDF e ele deve estar no Unity Catalog.
Clique no
Catálogo.
Clique no
abaccatálogo criado anteriormente.Clique na guia Políticas .
Clique em Nova política.
Em geral:
- Em Nome, digite
hide_eu_customers. - Em 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 da conta.
- Deixe Exceto para... em branco.
- Em Escopo, escolha o catálogo
abace Todos os esquemas.
- Em Nome, digite
Para Finalidade, escolha Ocultar linhas da tabela.
Em Condições, clique em Selecionar existente. Em seguida, clique no
Selecione a função.
No menu Selecionar uma função , clique no
abaccatálogo, nocustomersesquema e, em seguida, nais_not_eu_addressfunção criada anteriormente.Clique em Selecionar.
Opcionalmente, você pode testar sua função de mascaramento expandindo a função Test e fornecendo uma entrada. Por exemplo, inserir
78 Berliner Str., Berlin, Germany E.U.e clicar em Executar teste corretamente retornaFALSE (Hide row).
Em parâmetros de função:
- Escolha Mapear coluna para parâmetro se ela tiver uma tag específica.
- Procurar
pii. Selecionepii : address.
Clique em Criar política.
Etapa 6: Testar sua política
- Regresse ao seu bloco de notas e execute o seguinte comando:
SELECT DISTINCT * FROM abac.customers.profiles
Apenas as linhas correspondentes a residentes de fora da UE são devolvidas.
| Nome_Primeiro | Apelido | Número de Telefone | Endereço | NSS |
|---|---|---|---|---|
| Graça | Wilson | 890-123-4567 | Rua Elm, 852, NV | 890-12-3456 |
| Adriana | Joaquim | 345-678-9012 | Rua dos Pinheiros, 789, TX | 345-67-8901 |
| Hera | Taylor | 012-345-6789 | 159 Aspen St, Nova Iorque | 012-34-5678 |
| Fábio | Moleiro | 789-012-3456 | Rua Spruce, 741, WA | 789-01-2345 |
| Joana | Silva | 234-567-8901 | 456 Oak St, Califórnia | 234-56-7890 |
| John | Doe | 123-456-7890 | 123 Main St, Nova Iorque | 123-45-6789 |
| Carlinhos | Davis | 567-890-1234 | Rua Cedro, 654, IL | 567-89-0123 |
| Emília | Branco | 678-901-2345 | 987 Birch St, WA | 678-90-1234 |
| Hank | Márcia | 901-234-5678 | Rua Walnut, 963, Colorado | 901-23-4567 |
| Joaquim | Castanho | 456-789-0123 | 321 Maple St, Flórida | 456-78-9012 |
Você pode continuar a criar uma política de máscara de coluna.
Etapa 7: Criar um UDF para mascarar SSNs
- Adicione o seguinte comando ao bloco de anotações e execute-o:
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;
Esta função UDF retorna uma cadeia de caracteres do SSN 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 sobre o objeto ou propriedade do objeto.
Para adicionar um UDF a uma política, você deve ter EXECUTE no UDF e ele deve estar no Unity Catalog.
Clique no
Catálogo.
Clique no
abaccatálogo criado anteriormente.Clique na guia Políticas .
Clique em Nova política.
Em geral:
- Em Nome, digite
mask_ssn. - Em 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 da conta.
- Deixe Exceto para... em branco.
- Em Escopo, escolha o catálogo
abace Todos os esquemas.
- Em Nome, digite
Em Finalidade, escolha Mascarar dados da coluna.
Em condições:
- Escolha Mascarar coluna se tiver uma tag específica.
piiProcure e selecionepii : ssn. - Clique em Selecionar existente. Em seguida, clique no
Selecione a função.
- No menu Selecionar uma função , clique no
abaccatálogo, nocustomersesquema e, em seguida, namask_ssnfunção criada anteriormente.
- Escolha Mascarar coluna se tiver uma tag específica.
Clique em Selecionar.
Opcionalmente, você pode testar sua função de mascaramento expandindo a função Test e fornecendo uma entrada. Por exemplo, inserir
901-234-5678e clicar em Executar teste corretamente retorna***-**-****.
Clique em Criar política.
Etapa 9: Testar sua política
- Regresse ao seu bloco de notas e execute o seguinte comando:
SELECT * FROM abac.customers.profiles
Os SSNs agora retornam como ***-***-***. Apenas os residentes não pertencentes à UE são retornados porque a máscara de filtro de linha também está ativada.
| Nome_Primeiro | Apelido | Número de Telefone | Endereço | NSS |
|---|---|---|---|---|
| Joana | Silva | 234-567-8901 | 456 Oak St, Califórnia | ***-**-**** |
| Adriana | Joaquim | 345-678-9012 | Rua dos Pinheiros, 789, TX | ***-**-**** |
| Carlinhos | Davis | 567-890-1234 | Rua Cedro, 654, IL | ***-**-**** |
| Graça | Wilson | 890-123-4567 | Rua Elm, 852, NV | ***-**-**** |
| Joaquim | Castanho | 456-789-0123 | 321 Maple St, Flórida | ***-**-**** |
| Hank | Márcia | 901-234-5678 | Rua Walnut, 963, Colorado | ***-**-**** |
| Hera | Taylor | 012-345-6789 | 159 Aspen St, Nova Iorque | ***-**-**** |
| Emília | Branco | 678-901-2345 | 987 Birch St, WA | ***-**-**** |
| Fábio | Moleiro | 789-012-3456 | Rua Spruce, 741, WA | ***-**-**** |
| John | Doe | 123-456-7890 | 123 Main St, Nova Iorque | ***-**-**** |