Isenção de responsabilidade: Todas as opiniõ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 do Azure/Databricks.
Neste artigo, fornecerei o script para automatizar o gerenciamento de permissões no nível do esquema do Unity Catalog
Privilégios no Nível do Esquema do Unity Catalog
O modelo de privilégios hierárquico no Unity Catalog permite aos usuários aplicar privilégios em qualquer nível da hierarquia, e o(s) objeto(s) filho herdam automaticamente as mesmas permissões. Portanto, se a permissão for aplicada no nível do esquema, ela será automaticamente aplicada a todas as tabelas, visualizações, volumes e funções dentro do esquema
No Unity Catalog (Databricks), as permissões no nível do esquema são aplicadas quando você deseja controlar o acesso a um conjunto de tabelas e visualizações dentro de um esquema específico. As permissões no nível do esquema são tipicamente aplicadas nos seguintes cenários:
- Conceder acesso a grupos de objetos: Se você deseja gerenciar permissões para várias tabelas e visualizações coletivamente, é eficiente aplicar permissões no nível do esquema em vez de individualmente para cada tabela ou visualização. Isso permite controlar o acesso a todos os objetos dentro desse esquema simultaneamente.
- Controle organizacional: Quando diferentes equipes ou departamentos dentro de uma organização precisam de acesso a conjuntos de dados específicos, que são armazenados em esquemas separados. Aplicar permissões ao nível do esquema permite que você conceda ou restrinja o acesso a todos os objetos relevantes a uma equipe dentro desse esquema.
- Gerenciamento consistente de permissões: Para ambientes onde novos objetos (tabelas/visualizações) são frequentemente adicionados a um esquema, definir permissões ao nível do esquema garante que novos objetos herdem automaticamente as permissões, reduzindo a necessidade de atualizações manuais de permissão.
- Manutenção da segurança de dados: Quando você deseja impor controles de acesso sobre uma categoria específica de conjunto de dados (por exemplo, dados financeiros, dados de RH) que está logicamente organizada sob um esquema. Ao definir permissões ao nível do esquema, você mantém a segurança dos dados enquanto simplifica a administração.
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 no esquema e catálogo.
Passo 1: Criar um Caderno e Declarar as Variáveis
Crie um caderno no espaço de trabalho do Databricks. Para criar um caderno no seu espaço de trabalho, clique no “+” Novo na barra lateral e escolha Caderno.
Copie e cole o trecho de código abaixo na célula do caderno e execute a célula.
catalog = 'main' # Specify your catalog name
schema = 'default' # Specify your schema name
principals_arr = '' # Specify the Comma(,) seperated values for principals in the blank text section (e.g. groups, username)
principals = principals_arr.split(',')
privileges_arr = 'SELECT,APPLY TAG' # Specify the Comma(,) seperated values for priviledges in the blank text section (e.g. SELECT,APPLY TAG)
privileges = privileges_arr.split(',')
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 existente e execute a célula.
query = f"USE CATALOG `{catalog}`" #Sets the Catalog
spark.sql(query)
Passo 3: Percorrer os Principais e Privilégios e Aplicar Concessão no Catálogo e no Esquema
Copie, cole e execute o bloco de código abaixo em uma célula nova ou existente, em seguida, execute a célula para aplicar as permissões.
for principal in principals:
query = f"GRANT USE_CATALOG ON CATALOG `{catalog}` TO `{principal}`" # Apply use catalog permission at Catalog level
spark.sql(query)
query = f"USE SCHEMA `{schema}`" # Sets the schema
spark.sql(query)
query = f"GRANT USE_SCHEMA ON SCHEMA `{schema}` TO `{principal}`" # Apply use schema permission at Schema level
spark.sql(query)
for privilege in privileges:
query = f"GRANT `{privilege}` ON SCHEMA `{schema}` TO `{principal}`" # Use schema permission at Schema level
spark.sql(query)
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 apareça na seção de Dados, clique no catálogo, em seguida selecione o esquema onde você aplicou as permissões e vá para a guia Permissões. Agora você pode ver todos os privilégios aplicados ao esquema.
Você também pode executar o script SQL abaixo em um notebook para exibir todas as permissões para um esquema como parte da sua validação.
SHOW GRANTS ON SCHEMA my_schema;
Conclusão
Automatizar o gerenciamento de privilégios no Catálogo Unity do Databricks no nível do esquema ajuda a garantir um controle de acesso consistente e eficiente para o grupo de objetos (por exemplo, tabelas, visualizações, funções e volumes) no catálogo. O código fornecido demonstra uma maneira prática de atribuir privilégios ao nível do esquema, facilitando a gestão de permissões entre os principais (por exemplo, usuários e grupos). Esta abordagem reduz as tarefas de gerenciamento e a chance de erros manuais ao agrupar tabelas e visualizações dentro de um esquema e aplicar permissões consistentes para todo o esquema.
Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-schema-level