Pular para o conteúdo principal

Criar e gerenciar políticas de controle de acesso baseado em atributos (ABAC)

info

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:

  1. Como administrador do site workspace, clique em seu nome de usuário na barra superior do site Databricks workspace.
  2. No menu, selecione Previews .
  3. Defina a opção Controle de acesso baseado em atributos como Ativado.

requisitos de computação

Para usar políticas ABAC, você deve usar uma das seguintes configurações compute :

compute padrão e dedicada executando tempos de execução mais antigos não pode acessar tabelas protegidas por ABAC. Como solução 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. Usuários que não estão no grupo ainda podem acessar as tabelas.

Cotas de políticas

A seguir está listado o número de políticas ABAC que você pode criar em diferentes objetos protegíveis:

  • Catálogo : 15 apólices por catálogo
  • Esquema : 15 políticas por esquema
  • Tabela : 5 políticas por tabela

Criar uma política em um objeto

Para criar uma política de filtro de linha ou máscara de coluna, você deve ter:

  • O ABAC beta está habilitado no seu workspace. Veja Habilitar 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, limitações e exemplos de UDFs, consulte UDFs para melhores práticas de políticas ABAC.
  • MANAGE sobre o objeto ou propriedade do objeto.

requisitos de computação

  • Você deve usar compute no Databricks Runtime 16.4 ou acima ou serverless compute.

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.

  1. Em seu site Databricks workspace, clique em Ícone de dados. Catalog .

  2. Selecione o objeto que determina o escopo da política, como um catálogo, esquema ou tabela.

  3. Clique na guia Políticas .

  4. Clique em Nova política .

  5. Em Geral , insira um nome e uma descrição para sua política.

  6. 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.

    Política preenchida pela ABAC.

  7. 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") ou hasTagValue("tag", "value").
  8. Em Função , selecione uma função para essa política usar e insira os parâmetros necessários.

    Política de filtro de linha preenchida pela ABAC.

  9. Clique em Criar política .

atenção

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.

  1. Em seu site Databricks workspace, clique em Ícone de dados. Catalog .
  2. Selecione o objeto que determina o escopo da política, como um catálogo, esquema ou tabela.
  3. Clique na guia Políticas .
  4. Selecione a política e faça edições.
  5. Clique em Atualizar política .

Excluir uma política

Permissões necessárias: MANAGE no objeto ou no proprietário do objeto.

  1. Em seu site Databricks workspace, clique em Ícone de dados. Catalog .
  2. Selecione o objeto que determina o escopo da política, como um catálogo, esquema ou tabela.
  3. Clique na guia Políticas .
  4. Selecione a política.
  5. Clique em Excluir política .

Solução de problemas de vários filtros ou máscaras

O ABAC impõe um limite de um filtro de linha por tabela e uma máscara de coluna por coluna. Isso evita resultados pouco claros quando vários filtros ou máscaras interagem.

Quando o Databricks detecta vários filtros ou máscaras durante a avaliação da política, ele gera um erro INVALID_PARAMETER_VALUE.UC_ABAC_MULTIPLE_ROW_FILTERS ou COLUMN_MASKS_FEATURE_NOT_SUPPORTED.MULTIPLE_MASKS . Esse comportamento é intencional e bloqueia o acesso à tabela até que o conflito seja resolvido.

Compreendendo como ocorrem vários 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 tags de colunas com region=EMEA:

    SQL
    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_data tiver várias tags de coluna com region=EMEA, esta única política gerará um filtro de linha por coluna correspondente. Quando o Databricks avalia a política, ele detecta vários filtros de linha e gera o 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 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 aplicado manualmente (não ABAC) 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:

  • Refine as correspondências de coluna da sua política : atualize a cláusula MATCH COLUMNS para ser mais específica, garantindo que ela corresponda a apenas uma coluna. Por exemplo, combine várias condições para restringir a correspondência.

  • Ajuste suas tags governadas : revise quais colunas têm as tags governadas que acionam a política. Remova ou modifique essas tags se elas não devem ser incluídas no filtro de linha.

  • Reestruture suas políticas : em vez de depender de condições que podem corresponder a várias colunas, considere criar políticas separadas com segmentação de colunas explícita. Isso lhe dá mais controle sobre quais colunas acionam filtros de linha.