Automatizar as Permissões do Catálogo de Unidade 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 de qualquer plataforma de gerenciamento de dados/nuvem. Todas as imagens e trechos de código estão disponíveis publicamente no site do Azure/Databricks.

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

Neste artigo, meu objetivo é fornecer o script que automatizará o gerenciamento 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 acesso a algumas tabelas enquanto limita o acesso a outras.

2. Protegendo Dados Sensíveis

Se determinadas 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 brutos 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 seu trabalho.

4. Conformidade com Governança de Dados

Ao aplicar políticas rígidas de governança de dados, você pode precisar controlar o acesso em um nível mais granular (até as 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 Diferentes Necessidades de Acesso Dentro de um Esquema

Em casos em que um esquema contenha tabelas com níveis variados de sensibilidade ou confidencialidade, aplicar permissões no nível do esquema pode ser muito abrangente. 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: Concede a capacidade de adicionar, excluir e modificar dados em um objeto.
  • APPLY TAG: Concede a capacidade de aplicar tags a um objeto.
  • ALL PRIVILEGES: 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 workspace do Databricks.
  • O usuário que executa o script de permissão possui as 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 workspace do Databricks. Para criar um notebook no seu workspace, clique em “+” Novo na barra lateral e depois escolha Notebook

Um notebook em branco se abre no workspace. 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 célula nova ou na célula existente e execute a célula.

Python

 

Passo 3: Percorrer os Principais e Privilégios e Aplicar a Concessão no Catálogo, Esquema e Tabelas

Copie, cole e execute o bloco de código abaixo em uma célula nova ou existente, e então 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. Quando o catálogo aparecer 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 guia “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 de uma tabela como parte da sua validação.

SQL

 

Conclusão

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

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