Pular para o conteúdo principal

Gerenciar funções do Postgres

info

Beta

O Lakebase Postgres (autoscale Beta) está disponível nas seguintes regiões: us-east-1, us-west-2, eu-west-1.

Esta versão Beta é a próxima versão do Lakebase, disponível apenas para avaliação. Para cargas de trabalho de produção, utilize a versão de pré-visualização pública do Lakebase. Consulte a seção "Como escolher entre as versões" para entender qual versão é a mais adequada para você.

Ao criar um projeto de banco de dados, o Lakebase cria várias funções do Postgres no projeto:

  • Uma função do Postgres para a identidade do proprietário do projeto Databricks (por exemplo, user@databricks.com), que possui o banco de dados default databricks_postgres
  • Uma função administrativa databricks_superuser

O banco de dados databricks_postgres é criado para que você possa se conectar e experimentar o Lakebase imediatamente após a criação do projeto.

Diversas funções de gerenciamento de sistema também são criadas. Estas são funções internas utilizadas pelo serviço Databricks para gerenciamento, monitoramento e operações de dados.

Saiba mais: Funções pré-criadas e Funções do sistema

Criar funções do Postgres

O Lakebase suporta dois tipos de funções do Postgres para acesso ao banco de dados:

  • Funções de senha nativas do Postgres: Crie-as usando a interface do usuário do Lakebase ou SQL. Utilize qualquer nome de função válido com autenticação por senha.
  • Funções OAuth para identidades Databricks: Crie-as usando a extensão databricks_auth e SQL. Permite que identidades Databricks (usuários, entidades de serviço e grupos) se conectem usando tokens OAuth .

Saiba mais sobre métodos de autenticação: Autenticação

Crie uma função de senha nativa do Postgres

Você pode criar funções de senha nativas do Postgres usando a interface do usuário do Lakebase ou o comando SQL padrão.

Utilizando a interface do usuário:

  1. No aplicativo Lakebase, navegue até a página de visão geral da sua filial e, em seguida, até a tab Funções e Bancos de Dados da filial.
  2. Clique em Adicionar função e especifique um nome para a função (qualquer nome de função válido do Postgres).

Adicionar uma função do Postgres

  1. Clique em Criar .
  2. Copie a senha gerada e forneça-a em local seguro ao usuário que utilizará essa função.

A interface do usuário do Lakebase gera automaticamente uma senha segura com entropia de 60 bits. As funções criadas através da interface do usuário recebem automaticamente a associação à função databricks_superuser , que fornece amplos privilégios de banco de dados.

Utilizando SQL:

Você também pode criar funções de senha nativas do Postgres usando o comando SQL padrão do Postgres:

SQL
CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';

Ao criar funções com SQL, a senha deve ter pelo menos 12 caracteres, com uma combinação de letras minúsculas, maiúsculas, números e símbolos. As senhas definidas pelo usuário são validadas no momento da criação para garantir entropia de 60 bits.

Crie uma função OAuth para uma identidade do Databricks usando SQL.

Para permitir que as identidades Databricks (usuários, entidades de serviço ou grupos) se conectem usando tokens OAuth , você deve criar suas funções do Postgres usando a extensão databricks_auth . Criar uma função para um grupo permite que todos os membros do grupo se autentiquem usando essa função, simplificando o gerenciamento de permissões.

Pré-requisitos:

  • Você deve ter permissões CREATE e CREATE ROLE no banco de dados.
  • Você precisa estar autenticado como uma identidade Databricks com um token OAuth válido.
  • Sessões autenticadas nativas do Postgres não podem criar funções OAuth.

Para criar uma função OAuth:

  1. Crie a extensão databricks_auth . Cada banco de dados Postgres deve ter sua própria extensão.

    SQL
    CREATE EXTENSION IF NOT EXISTS databricks_auth;
  2. Use a função databricks_create_role para criar uma função do Postgres para a identidade do Databricks:

    SQL
    SELECT databricks_create_role('identity_name', 'identity_type');

    Para um usuário do Databricks:

    SQL
    SELECT databricks_create_role('myuser@databricks.com', 'USER');

    Para uma entidade de serviço Databricks:

    SQL
    SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08', 'SERVICE_PRINCIPAL');

    Para um grupo Databricks:

    SQL
    SELECT databricks_create_role('My Group Name', 'GROUP');

    O nome do grupo diferencia maiúsculas de minúsculas e deve corresponder exatamente como aparece no seu workspace Databricks . Ao criar uma função do Postgres para um grupo, qualquer membro direto ou indireto (usuário ou entidade de serviço) desse grupo Databricks pode se autenticar no Postgres como a função do grupo usando seus tokens OAuth individuais. Isso permite gerenciar permissões no nível do grupo no Postgres, em vez de manter permissões para usuários individuais.

  3. Conceda permissões de banco de dados à função recém-criada.

A função databricks_create_role() cria uma função do Postgres com permissão LOGIN apenas. Após criar a função, você deve conceder os privilégios e permissões de banco de dados apropriados nos bancos de dados, esquemas ou tabelas específicos que o usuário precisa acessar. Aprenda como: gerenciar permissões

Autenticação baseada em grupo

Ao criar uma função do Postgres para um grupo do Databricks, você habilita a autenticação baseada em grupo. Isso permite que qualquer membro do grupo Databricks se autentique no Postgres usando a função do grupo, simplificando o gerenciamento de permissões.

Como funciona:

  1. Crie uma função do Postgres para um grupo do Databricks usando databricks_create_role('Group Name', 'GROUP').
  2. Conceda permissões de banco de dados à função de grupo no Postgres. Consulte gerenciar permissões.
  3. Qualquer membro direto ou indireto (usuário ou entidade de serviço) do grupo Databricks pode se conectar ao Postgres usando seus tokens OAuth individuais.
  4. Ao se conectar, o membro se autentica com a função do grupo e herda todas as permissões concedidas a essa função.

Fluxo de autenticação:

Quando um membro do grupo se conecta, ele especifica o nome da função Postgres do grupo como nome de usuário e seus próprios tokens OAuth como senha:

Bash
export PGPASSWORD='<OAuth token of a group member>'
export GROUP_ROLE_NAME='<pg-case-sensitive-group-role-name>'

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUP_ROLE_NAME

Considerações importantes:

  • Validação de associação a grupos: A associação a grupos é validada apenas no momento da autenticação. Se um membro for removido do grupo Databricks após o estabelecimento de uma conexão, a conexão permanecerá ativa. Novas tentativas de conexão de membros removidos serão rejeitadas.
  • Escopo do espaço de trabalho: somente os grupos atribuídos ao mesmo workspace Databricks que o projeto de banco de dados são compatíveis com a autenticação baseada em grupo. Para aprender como atribuir grupos a um workspace, consulte Gerenciar grupos.
  • Diferenciação entre maiúsculas e minúsculas: O nome do grupo usado em databricks_create_role() deve corresponder exatamente ao nome do grupo como aparece no seu workspace Databricks , incluindo maiúsculas e minúsculas.
  • Gerenciamento de permissões: Gerenciar permissões no nível de grupo no Postgres é mais eficiente do que gerenciar permissões de usuários individuais. Ao conceder permissões à função de grupo, todos os membros atuais e futuros do grupo herdam essas permissões automaticamente.
nota

Os nomes dos cargos não podem exceder 63 caracteres, e alguns nomes não são permitidos. Saiba mais: funções gerenciais

visualizar funções do Postgres

Para view todas as funções do Postgres em seu projeto, navegue até tab Funções e Bancos de Dados do seu branch no aplicativo Lakebase. Todas as funções criadas na ramificação, com exceção das funções do sistema, estão listadas, incluindo as funções nativas do Postgres com autenticação por senha.

visualizar função do Postgres

Remover uma função do Postgres

Você pode remover tanto as funções baseadas em identidade do Databricks quanto as funções nativas de senha do Postgres.

Excluir uma função é uma ação permanente que não pode ser desfeita. Não é possível excluir uma função que seja proprietária de um banco de dados. O banco de dados deve ser excluído antes de excluir a função proprietária do banco de dados.

Para excluir qualquer função do Postgres usando a interface do usuário:

  1. Acesse a tab "Funções e Bancos de Dados" da sua filial no aplicativo Lakebase.
  2. Selecione "Excluir função" no menu de funções e confirme a exclusão.

Funções pré-criadas

Após a criação de um projeto de banco de dados, Databricks cria automaticamente funções do Postgres para administração do projeto e para que os usuários possam começar a usá-las.

Função

Descrição

Privilégios herdados

<project_owner_role>

A identidade Databricks do criador do projeto (por exemplo, my.user@databricks.com). Esta função é proprietária do banco de dados default databricks_postgres e pode log in e administrar o projeto.

Membro de databricks_superuser

databricks_superuser

Uma função administrativa interna. Utilizado para configurar e gerenciar o acesso em todo o projeto. Este cargo confere amplos privilégios.

Herda de pg_read_all_data, pg_write_all_data e pg_monitor.

Saiba mais sobre as capacidades e privilégios específicos dessas funções: Capacidades de funções pré-criadas

Funções do sistema criadas pelo Databricks

Databricks cria as seguintes funções de sistema necessárias para o serviço interno. Você pode view essas funções emitindo um comando \du a partir de psql ou do Editor SQL do Lakebase.

Função

Propósito

cloud_admin

Função de superusuário usada para gerenciamento de infraestrutura cloud .

databricks_control_plane

Função de superusuário usada por componentes internos do Databricks para operações de gerenciamento.

databricks_monitor

Utilizado pelo serviço de coleta de medições internas

databricks_replicator

Utilizado para operações de replicação de banco de dados

databricks_writer_<dbid>

Função por banco de dados usada para criar e gerenciar tabelas sincronizadas.

databricks_reader_<dbid>

Função por banco de dados usada para ler tabelas registradas no Unity Catalog

databricks_gateway

Utilizado para conexões internas para gerenciamento de serviço de atendimento de dados

Para aprender como funcionam os papéis, privilégios e associações de papéis no Postgres, utilize o seguinte recurso na documentação do Postgres:

Próximos passos