Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No Catálogo do Unity, você pode usar exibições dinâmicas para configurar o controle de acesso refinado, incluindo:
- Segurança de nível de colunas ou linhas.
- Mascaramento de dados.
O Catálogo do Unity apresenta as seguintes funções, que permitem limitar dinamicamente quais usuários podem acessar uma linha, coluna ou um registro em uma exibição:
-
current_user(): retorna o endereço de email do usuário atual. -
is_account_group_member(): retornaTRUEse o usuário atual é membro de um grupo específico de nível de conta. Recomendado para uso em exibições dinâmicas nos dados do Catálogo do Unity. -
is_member(): retornaTRUEse o usuário atual é membro de um grupo específico de nível de workspace. Essa função é fornecida para compatibilidade com o metastore do Hive existente. Evite usá-la com exibições nos dados do Catálogo do Unity, pois ela não avalia a associação ao grupo de nível de conta.
O Azure Databricks recomenda que você não conceda aos usuários a capacidade de ler as tabelas e as exibições referenciadas na exibição.
Os exemplos a seguir ilustram como criar exibições dinâmicas no Catálogo do Unity.
Antes de começar
Para criar ou ler exibições dinâmicas, os requisitos são os mesmos para exibições padrão, exceto os requisitos de computação. Você precisa usar um dos seguintes recursos de computação:
- Um SQL warehouse.
- Computação com modo de acesso padrão (antigo modo de acesso compartilhado).
- Computação com o modo de acesso dedicado (antigo modo de acesso de usuário único) no Databricks Runtime 15.4 LTS ou superior.
Não é possível ler exibições dinâmicas usando a computação dedicada no Databricks Runtime 15.3 ou abaixo.
Para aproveitar a filtragem de dados fornecida no Databricks Runtime 15.4 LTS e superior, você também precisa verificar se o seu workspace está habilitado para computação sem servidor, porque a funcionalidade de filtragem de dados que dá suporte a filtros de exibições dinâmicas é executada na computação sem servidor. Portanto, você pode ser cobrado por recursos de computação sem servidor ao usar a computação dedicada para ler exibições dinâmicas. Consulte o controle de acesso refinado na computação dedicada.
Permissões de nível de compartilhamento
Com uma exibição dinâmica, você pode limitar as colunas que um usuário ou um grupo específico pode acessar. No exemplo a seguir, somente os membros do grupo auditors podem acessar os endereços de email da tabela sales_raw. Durante a análise de consulta, o Apache Spark substitui a instrução CASE pela cadeia de caracteres literal REDACTED ou pelo conteúdo real da coluna de endereços de email. Outras colunas são retornadas normalmente. Essa estratégia não tem impacto negativo sobre o desempenho da consulta.
-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW sales_redacted AS
SELECT
user_id,
CASE WHEN
is_account_group_member('auditors') THEN email
ELSE 'REDACTED'
END AS email,
country,
product,
total
FROM sales_raw
Permissões de nível de linha
Com uma exibição dinâmica, você pode especificar permissões até o nível de linha ou de campo. No exemplo a seguir, somente os membros do grupo managers podem ver os valores de transações quando excederem US$ 1.000.000. Os resultados correspondentes são excluídos para outros usuários.
CREATE VIEW sales_redacted AS
SELECT
user_id,
country,
product,
total
FROM sales_raw
WHERE
CASE
WHEN is_account_group_member('managers') THEN TRUE
ELSE total <= 1000000
END;
Mascaramento de dados
Como as exibições no Catálogo do Unity usam o Spark SQL, você pode implementar o mascaramento de dados avançado usando expressões SQL mais complexas e expressões regulares. No exemplo a seguir, todos os usuários podem analisar domínios de email, mas somente os membros do grupo podem exibir todo o auditors endereço de email de um usuário.
-- The regexp_extract function takes an email address such as
-- user.x.lastname@example.com and extracts 'example', allowing
-- analysts to query the domain name.
CREATE VIEW sales_redacted AS
SELECT
user_id,
region,
CASE
WHEN is_account_group_member('auditors') THEN email
ELSE regexp_extract(email, '^.*@(.*)$', 1)
END
FROM sales_raw