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.
Importante
Esse recurso está em Visualização Pública.
Esta página descreve como configurar políticas de filtro de linha e máscara de coluna no Catálogo do Unity. Para obter mais informações sobre o controle de acesso baseado em atributo (ABAC) e políticas, consulte ABAC (controle de acesso baseado em atributo) do Catálogo do Unity. Para aplicar marcas a objetos, consulte marcas governadas e aplicar marcas a objetos protegíveis do Catálogo do Unity.
Requisitos de computação
Para usar políticas abac, você deve usar uma das seguintes configurações de computação:
- Computação sem servidor
- Computação padrão no Databricks Runtime 16.4 ou superior
- Computação dedicada no Databricks Runtime 16.4 ou superior com filtragem de controle de acesso refinado habilitada
A computação padrão e dedicada que executa runtimes mais antigos não pode acessar tabelas protegidas pelo ABAC. Como uma solução alternativa temporária, você pode configurar o ABAC para 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.
Cotas de política
O seguinte lista o número de políticas ABAC que você pode criar em diferentes objetos protegíveis:
- Catálogo: 10 políticas por catálogo
- Esquema: 10 políticas por esquema
- Tabela: 5 políticas por tabela
Criar uma política em um objeto
Para criar um filtro de linha ou uma política de máscara de coluna, você deve ter:
- Uma função definida pelo usuário (UDF) existente no Catálogo do Unity sobre a qual você tem o
EXECUTEprivilégio que implementa a lógica de filtro de linha ou máscara de coluna que você deseja impor.
Para melhores práticas, limitações e UDFs de exemplo, consulte UDFs para práticas recomendadas de políticas do ABAC. -
MANAGEno objeto ou propriedade do objeto.
Requisitos de computação
- Você deve usar a computação no Databricks Runtime 16.4 ou superior ou computação sem servidor.
A computação que executa runtimes mais antigos não pode acessar tabelas protegidas pelo ABAC. Como uma solução alternativa temporária, você pode configurar o ABAC para 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.
Gerenciador de Catálogos
No workspace do Azure Databricks, clique no
Catálogo.
Selecione o objeto que determina o escopo da política, como um catálogo, um esquema ou uma tabela.
Clique na guia Políticas.
Clique em Nova política.
Em geral:
- Para Nome, insira um nome para sua política.
- Para Descrição, insira uma descrição para sua política.
- Para Aplicado a..., pesquise e selecione os usuários ou identidades de usuário aos quais a política se aplica.
- Exceto para ..., adicione quaisquer principais que você queira excluir da política.
- Para Escopo, escolha o catálogo, os esquemas e as tabelas às quais você deseja que a política se aplique.
Para Objetivo, decida se deseja mascarar colunas ou ocultar linhas.
Nas seções condições e parâmetros de função , configure como você deseja que a política mascara colunas ou oculte linhas. Você faz isso especificando uma função de mascaramento, juntamente com as condições para aplicar a função.
Clique em Criar política.
SQL
Veja a seguir 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>, ...];
Quando você define condições de nível de tabela (MATCH COLUMNS), a política se aplica à tabela somente se cada condição corresponder a pelo menos uma coluna. Se uma condição não corresponder a nenhuma coluna na tabela, a política não se aplicará à tabela e o Azure Databricks ignorará qualquer filtragem de linha ou máscara de coluna.
Por exemplo, se uma política for definida MATCH COLUMNS condition1, condition2, condition3, a política entrará em vigor somente se cada uma das três condições corresponder a pelo menos uma coluna na tabela.
Uma política pode incluir até três condições de coluna em sua MATCH COLUMNS cláusula.
Este exemplo define uma política de filtro de linha que exclui linhas para clientes europeus de consultas por analistas norte-americanos:
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 seguridade social de analistas norte-americanos, 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;
Aviso
Os dados da marca são armazenados como texto sem formatação e podem ser replicados globalmente. Não use nomes de marca, valores ou descritores que possam comprometer a segurança de seus recursos. Por exemplo, não use nomes de marca, 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.
Gerenciador de Catálogos
- No workspace do Azure Databricks, clique no
Catálogo.
- Selecione o objeto que determina o escopo da política, como um catálogo, um esquema ou uma tabela.
- Clique na guia Políticas.
- Selecione a política e faça edições.
- Clique em Atualizar política.
SQL
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.
Gerenciador de Catálogos
- No workspace do Azure Databricks, clique no
Catálogo.
- Selecione o objeto que determina o escopo da política, como um catálogo, um esquema ou uma tabela.
- Clique na guia Políticas.
- Selecione a política.
- Clique em Excluir política.
SQL
DROP POLICY <policy_name> ON <securable_type> <securable_name>
Solução de problemas de vários filtros ou máscaras
Quando um usuário consulta uma tabela regida pelo ABAC, apenas um filtro de linha distinto por tabela pode ser resolvido para cada usuário. Além disso, apenas uma máscara de coluna distinta por coluna pode ser resolvida para cada usuário. Você pode definir várias políticas ABAC em uma tabela desde que elas estejam em conformidade com essas restrições. Isso impede resultados ambíguos quando vários filtros ou máscaras distintos se aplicam ao mesmo usuário.
Quando o Azure Databricks detecta vários filtros ou máscaras distintos durante a avaliação da política para um determinado usuário, ele lança um erro INVALID_PARAMETER_VALUE.UC_ABAC_MULTIPLE_ROW_FILTERS ou COLUMN_MASKS_FEATURE_NOT_SUPPORTED.MULTIPLE_MASKS. Esse comportamento é por design e bloqueia o acesso à tabela até que o conflito seja resolvido.
Compreendendo como surgem múltiplos filtros de linha ou máscaras
Vários filtros ou máscaras podem surgir de várias maneiras:
Uma única política gera vários filtros ou máscaras.
Isso pode acontecer quando várias colunas correspondem às condições da política. Por exemplo, a política a seguir define um filtro de linha com base em colunas marcadas comregion=EMEA:CREATE OR REPLACE POLICY region_filter_policy ON TABLE my_catalog.my_schema.customer_data ROW FILTER my_catalog.my_schema.filter_by_region TO `account users` FOR TABLES MATCH COLUMNS hasTagValue('region', 'EMEA') AS region_cols USING COLUMNS (region_cols);Se a tabela
customer_datativer várias colunas marcadas comregion=EMEA, essa única política gerará um filtro de linha por coluna correspondente. Quando o Azure Databricks avalia a política, ele detecta vários filtros de linha e gera um erro.Várias políticas definem filtros ou máscaras na mesma tabela ou coluna. Se mais de uma política ABAC se aplicar à mesma tabela ou coluna, o Azure Databricks detectará vários filtros ou máscaras eficazes.
Uma tabela ou coluna já tem um filtro ou máscara aplicado manualmente. Conflitos também podem ocorrer quando uma tabela ou coluna inclui um filtro de linha ou máscara de coluna (não ABAC) aplicado manualmente e um ou mais filtros ou máscaras definidos pelo ABAC.
Como resolver o erro
Você pode resolver o erro de filtros de várias linhas com qualquer uma das seguintes abordagens:
Refinar as correspondências de coluna da política: Atualize a cláusula
MATCH COLUMNSpara ser mais específica, garantindo que corresponda apenas a uma coluna. Por exemplo, combine várias condições para estreitar a correspondência.Ajuste suas tags governadas: revise quais colunas têm as tags governadas que acionam a política. Remova ou modifique essas marcas se elas não devem ser incluídas no filtro de linha.
Reestruturar suas políticas: em vez de depender de condições que possam corresponder a várias colunas, considere criar políticas separadas com direcionamento de coluna explícito. Isso oferece mais controle sobre quais colunas disparam filtros de linha.