Automatizar as Permissões do Catálogo Unity do Azure Databricks ao Nível da Tabela

Isenção de responsabilidade: Todas as opiniões e visões expressas no blog pertencem exclusivamente ao autor e não necessariamente ao empregador do autor ou a qualquer outro grupo ou indivíduo. Este artigo é não uma promoção para qualquer plataforma de gerenciamento de nuvem/dados. Todas as imagens e trechos de código estão disponíveis publicamente no site da Azure/Databricks.

Em meus outros artigos no DZone, discuti o que é Databricks Unity Catalog, como o modelo de privilégios funciona no Unity Catalog, nível de esquema, e um script para automatizar a gestão de permissões tanto no nível do catálogo quanto no nível do esquema.

Neste artigo, meu objetivo é fornecer o script que automatizará a gestão de permissões no nível da tabela do Unity Catalog.

Privilégios no Nível da Tabela do Unity Catalog

Unity Catalog privilege model

No Unity Catalog (Databricks), aplicar permissões no nível da tabela é necessário quando você deseja controlar o acesso a tabelas ou visualizações específicas, em vez de aplicar permissões a todos os objetos dentro de um esquema. As permissões no nível da tabela são úteis nos seguintes cenários:

1. Controle de Acesso Granular

Quando você precisa conceder ou restringir o acesso a tabelas ou visualizações específicas sem afetar todo o esquema.

Isso é especialmente importante quando um esquema contém dados sensíveis e você deseja permitir o acesso a algumas tabelas enquanto limita o acesso a outras.

2. Protegendo Dados Sensíveis

Se certas tabelas dentro de um esquema contêm dados confidenciais ou restritos (por exemplo, informações pessoalmente identificáveis, dados financeiros), você pode aplicar permissões ao nível da tabela para garantir que apenas usuários autorizados possam visualizar ou consultar essas tabelas.

Por exemplo, você pode permitir o acesso a algumas tabelas de dados resumidos ou agregados, mas restringir o acesso a tabelas detalhadas e brutas que contenham informações sensíveis.

3. Delegando Acesso a Equipes/Usuários Específicos Se o Esquema Contém Tabelas Destinadas a Múltiplas Equipes

Quando diferentes usuários ou equipes precisam de acesso a diferentes tabelas dentro do mesmo esquema. Por exemplo, a equipe de vendas pode precisar de acesso a tabelas relacionadas a clientes, enquanto a equipe financeira precisa de acesso a tabelas de receita.

Aplicar permissões ao nível da tabela garante que cada equipe possa acessar apenas as tabelas relevantes para o seu trabalho.

4. Conformidade com Governança de Dados

Ao impor políticas estritas de governança de dados, você pode precisar controlar o acesso em um nível mais granular (até tabelas individuais). As permissões ao nível da tabela ajudam a garantir conformidade, concedendo acesso apenas aos dados com os quais um usuário ou função está autorizado a trabalhar.

5. Manejando Necessidades de Acesso Diversificadas Dentro de um Esquema

Em casos em que um esquema contenha tabelas com diferentes níveis de sensibilidade ou confidencialidade, aplicar permissões no nível do esquema pode ser muito amplo. As permissões ao nível da tabela permitem que você gerencie o acesso para cada tabela individualmente com base em necessidades específicas.

Permissões Que Podem Ser Aplicadas ao Nível da Tabela 

  • SELECT: Concede acesso de leitura à tabela, permitindo que os usuários a consultem.
  • MODIFY: Dá a habilidade de adicionar, excluir e modificar dados para ou de um objeto.
  • APLICAR TAG: Dá a habilidade de aplicar tags a um objeto.
  • TODOS OS PRIVILÉGIOS: Concede todos os privilégios.

Script de Automação

Pré-requisitos

  • O Catálogo Unity já está configurado.
  • O(s) Principal(is) está(ão) associado(s) ao espaço de trabalho do Databricks.
  • O usuário que executa o script de permissão tem permissões adequadas na(s) tabela(s), esquema e catálogo.

Passo 1: Criar um Notebook e Declarar as Variáveis 

Crie um notebook no espaço de trabalho do Databricks. Para criar um notebook em seu espaço de trabalho, clique no “+” Novo na barra lateral e depois escolha Notebook

Um notebook em branco será aberto no espaço de trabalho. Certifique-se de que Python esteja selecionado como o idioma do notebook.

Copie e cole o trecho de código abaixo na célula do notebook e execute a célula.

Python

 

Passo 2: Definir o Catálogo e o Esquema

Copie, cole e execute o bloco de código abaixo em uma nova célula ou na célula existente e execute a célula.

Python

 

Passo 3: Percorra os Princípios e Privilégios e Aplique a Concessão no Catálogo, Esquema e Tabelas

Copie, cole e execute o bloco de código abaixo em uma nova célula ou na célula existente e execute a célula para aplicar as permissões.

Python

 

Validação

Você pode validar os privilégios abrindo a interface do Databricks e navegando até “Catálogo” no Explorador de Dados. Uma vez que o catálogo aparece na seção de Dados, clique no catálogo, depois expanda o esquema e selecione a tabela dentro do esquema onde você aplicou as permissões, e vá para a aba “permissões”. Agora você pode ver todos os privilégios aplicados à tabela. Abaixo está a captura de tela das permissões aplicadas na tabela de catálogo padrão dentro do catálogo principal e esquema information_schema.

Você também pode executar o script SQL abaixo em um notebook para exibir todas as permissões para uma tabela como parte da sua validação.

SQL

 

Conclusão

Automatizar o gerenciamento de privilégios no Catálogo de Unidade do Databricks ao nível da tabela ajuda a garantir uma abordagem consistente e eficiente na aplicação de permissões no nível mais baixo no Catálogo de Unidade. O código fornecido demonstra uma maneira prática de atribuir vários privilégios ao nível da tabela para vários princípios e tabelas em um único catálogo e esquema. Em um catálogo onde centenas de tabelas estão presentes e diferentes permissões precisam ser fornecidas para diferentes princípios, a automação acima reduz significativamente erros e esforços manuais.

Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-table-level