Criar e gerenciar políticas de controle de acesso baseado em atributos (ABAC)
Beta
Esse recurso está na versão beta.
Esta página descreve como configurar políticas de filtro de linha e máscara de coluna no Unity Catalog. Para obter mais informações sobre o controle de acesso baseado em atributos (ABAC) e políticas, consulte Unity Catalog attribute-based access control (ABAC). Para aplicar tags a objetos, consulte Governed tags e Apply tags to Unity Catalog securable objects.
Ativar ABAC
O ABAC beta é ativado no nível workspace. Databricks não pode aplicar o ABAC em operações de leitura em catálogos compartilhados, a menos que o ABAC também esteja ativado em cada workspace que acesse esses catálogos.
Para ativar o ABAC beta, faça o seguinte:
- Como administrador do site workspace, clique em seu nome de usuário na barra superior do site Databricks workspace.
- No menu, selecione Previews .
- Defina a opção Controle de acesso baseado em atributos como Ativado.
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.
Criar uma política em um objeto
Para criar uma política de filtro de linha ou máscara de coluna, você deve ter:
-
As políticas ABAC beta e tag beta estão habilitadas em seu site workspace. Consulte Habilitar o ABAC.
-
Uma função definida pelo usuário (UDF) existente que implementa a lógica de filtro de linha ou máscara de coluna que o senhor deseja aplicar.
Para melhores práticas e exemplos de UDFs, consulte UDFs para melhores práticas de políticas ABAC. -
MANAGE
sobre o objeto ou propriedade do objeto. -
sem servidor compute sempre funciona com ABAC.
-
O senhor deve usar o site compute em Databricks Runtime 16.4 ou acima.
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.
- Catalog Explorer
- SQL
-
Em seu site Databricks workspace, clique em
Catalog .
-
Selecione o objeto que determina o escopo da política, como um catálogo, esquema ou tabela.
-
Clique na guia Políticas .
-
Clique em Nova política .
-
Em Geral , insira um nome e uma descrição para sua política.
-
Em Princípios :
- Em Aplicado a... , pesquise e selecione os princípios que a política governará.
- Em Exceto por... , pesquise e selecione quaisquer diretores a serem excluídos da política. Por exemplo, você pode excluir um usuário que pertence a um grupo ao qual a política se aplica.
-
No alvo Type & :
- Em Tipo de política , selecione Filtro de linha ou Máscara de coluna .
- Em Alvo da política , selecione o escopo da política. Isso pode ser um escopo amplo, como um catálogo ou esquema inteiro, ou um escopo mais restrito, como tabelas ou colunas específicas dentro dele.
- Em Condição em nível de tabela , especifique a condição correspondente às tabelas às quais essa política se aplica. Por exemplo,
hasTag("tag")
ouhasTagValue("tag", "value")
.
-
Em Função , selecione uma função para essa política usar e insira os parâmetros necessários. Para criar uma nova função, consulte Criação de UDFs no Unity Catalog. Para melhores práticas e exemplos de funções, consulte UDFs para melhores práticas de políticas ABAC.
-
Clique em Criar política .
A seguir está a sintaxe geral para criar uma política:
CREATE POLICY <policy_name>
ON <securable_type> <securable_name>
COMMENT '<policy_description>'
-- One of the following:
ROW FILTER <udf_name>
| COLUMN MASK <udf_name> ON COLUMN <target_column>
TO <principal_name>[, <principal_name>, ...]
[EXCEPT <principal_name>[, <principal_name>, ...]]
FOR TABLES
[WHEN hasTag('<key>') OR hasTagValue('<key>', '<value>')]
MATCH COLUMNS hasTag('<key>') OR hasTagValue('<key>', '<value>') AS <alias>
USING COLUMNS <alias>[, <alias>, ...];
Este exemplo define uma política de filtro de linhas que exclui as linhas de clientes europeus das consultas feitas por analistas baseados nos EUA:
CREATE POLICY hide_eu_customers
ON SCHEMA prod.customers
COMMENT 'Hide rows with European customers from sensitive tables'
ROW FILTER non_eu_region
TO us_analysts
FOR TABLES
MATCH COLUMNS
hasTag('geo_region') AS region
USING COLUMNS (region);
Este exemplo define uma política de máscara de coluna que oculta os números de previdência social dos analistas dos EUA, exceto para aqueles do grupo admins
:
CREATE POLICY mask_SSN
ON SCHEMA prod.customers
COMMENT 'Mask social security numbers'
COLUMN MASK mask_SSN
TO us_analysts
EXCEPT admins
FOR TABLES
MATCH COLUMNS
hasTagValue('pii', 'ssn') AS ssn
ON COLUMN ssn;
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.
Editar uma política
Permissões necessárias: MANAGE
no objeto ou no proprietário do objeto.
- Catalog Explorer
- SQL
- Em seu site Databricks workspace, clique em
Catalog .
- Selecione o objeto que determina o escopo da política, como um catálogo, esquema ou tabela.
- Clique na guia Políticas .
- Selecione a política e faça edições.
- Clique em Atualizar política .
CREATE OR REPLACE POLICY <policy_name>
ON <securable_type> <securable_name>
COMMENT '<policy_description>'
-- One of the following:
ROW FILTER <udf_name>
| COLUMN MASK <udf_name> ON COLUMN <target_column>
TO <principal_name>[, <principal_name>, ...]
[EXCEPT <principal_name>[, <principal_name>, ...]]
FOR TABLES
[WHEN hasTag('<key>') OR hasTagValue('<key>', '<value>')]
MATCH COLUMNS hasTag('<key>') OR hasTagValue('<key>', '<value>') AS <alias>
USING COLUMNS <alias>[, <alias>, ...];
Excluir uma política
Permissões necessárias: MANAGE
no objeto ou no proprietário do objeto.
- Catalog Explorer
- SQL
- Em seu site Databricks workspace, clique em
Catalog .
- Selecione o objeto que determina o escopo da política, como um catálogo, esquema ou tabela.
- Clique na guia Políticas .
- Selecione a política.
- Clique em Excluir política .
DROP POLICY <policy_name> ON <securable_type> <securable_name>