Criar uma exibição dinâmica
Em Unity Catalog, o senhor pode usar a visualização dinâmica para configurar o controle de acesso refinado, inclusive:
Segurança no nível de colunas ou linhas.
mascaramento de dados.
Observação
O controle de acesso refinado usando a visualização dinâmica não está disponível em clusters com o modo de acesso Single User .
Unity Catalog Apresenta as seguintes funções, que permitem limitar dinamicamente quais usuários podem acessar uma linha, coluna ou registro em view:
current_user()
: Retorna o endereço email do usuário atual.is_account_group_member()
: RetornaTRUE
se o usuário atual for membro de um grupo específico de nível account. Recomendado para uso em visualização dinâmica em relação aos dados do site Unity Catalog.is_member()
: RetornaTRUE
se o usuário atual for membro de um grupo específico de nível workspace. Essa função é fornecida para compatibilidade com o site Hive metastore. Evite usá-lo com a visualização dos dados do site Unity Catalog, pois ele não avalia a associação de grupo no nível account.
Databricks Recomenda-se que o senhor não conceda aos usuários a capacidade de ler as tabelas e exibições referenciadas no site view.
Os exemplos a seguir ilustram como criar uma exibição dinâmica em Unity Catalog.
Permissões em nível de coluna
Com um view dinâmico, é possível limitar as colunas que um usuário ou grupo específico pode acessar. No exemplo a seguir, somente os membros do grupo auditors
podem acessar os endereços email da tabela sales_raw
. Durante a análise da consulta, o site Apache Spark substitui a instrução CASE
pelas strings literais REDACTED
ou pelo conteúdo real da coluna de endereço email. Outras colunas são retornadas normalmente. Essa estratégia não tem impacto negativo no 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 em nível de linha
Com um view dinâmico, o senhor pode especificar permissões até o nível da linha ou do campo. No exemplo a seguir, somente os membros do grupo managers
podem acessar view os valores das transações quando eles excederem US$ 1.000.000. Os resultados correspondentes são filtrados 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 a visualização em Unity Catalog usa Spark SQL, o senhor pode implementar o mascaramento avançado de dados usando expressões SQL e expressões regulares mais complexas. No exemplo a seguir, todos os usuários podem analisar os email domínios , mas somente os membros do auditors
grupo podem analisar view todo o email endereço 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