Partilhar via


Criar funções de Postgres

Importante

A Lakebase Autoscaling está em Beta nas seguintes regiões: eastus2, westeurope, westus.

O Autoscaling do Lakebase é a versão mais recente do Lakebase com computação automática, escala até zero, ramificação e restauração instantânea. Para comparação de funcionalidades com o Lakebase Provisioned, veja a escolha entre versões.

Quando cria um projeto, o Lakebase cria vários papéis Postgres no projeto:

  • Um papel Postgres para a identidade Azure Databricks do proprietário do projeto (por exemplo, user@databricks.com), que detém a base de dados padrão databricks_postgres
  • Um papel administrativo databricks_superuser

A databricks_postgres base de dados é criada para que possas ligar-te e experimentar o Lakebase imediatamente após a criação do projeto.

São também criadas várias funções geridas pelo sistema. Estas são funções internas utilizadas pelos serviços Azure Databricks para gestão, monitorização e operações de dados.

Observação

Os papéis de Postgres controlam o acesso à base de dados (quem pode consultar dados). Para permissões de projeto (quem pode gerir infraestruturas), veja Permissões de Projeto. Para um tutorial sobre como configurar ambos, veja Tutorial: Conceder acesso a projetos e bases de dados a um novo utilizador.

Veja Funções pré-criadas e Funções do Sistema.

Criar funções de Postgres

O Lakebase suporta dois tipos de funções Postgres para acesso à base de dados:

  • OAuth roles for Azure Databricks identities: Cria-os usando a databricks_auth extensão e SQL. Permite que as identidades do Azure Databricks (utilizadores, principais de serviço e grupos) se conectem usando tokens OAuth.
  • Funções nativas de palavras-passe Postgres: Cria-os usando a interface do Lakebase ou SQL. Use qualquer nome de função válido com autenticação por palavra-passe.

Para orientações sobre a escolha do tipo de função a utilizar, consulte Visão Geral de Autenticação. Cada um foi concebido para diferentes casos de uso.

Criar um papel OAuth para uma identidade Azure Databricks usando SQL

Para permitir que as identidades do Azure Databricks (utilizadores, principais de serviço ou grupos) se conectem usando tokens OAuth, deve criar os seus papéis Postgres usando a databricks_auth extensão. Criar um papel para um grupo permite que todos os membros do grupo se autentiquem usando o papel do grupo, simplificando a gestão de permissões.

Para instruções detalhadas sobre como obter tokens OAuth em fluxos utilizador-para-máquina e máquina-para-máquina, consulte Obter um token OAuth num fluxo utilizador-para-máquina e Obter um token OAuth num fluxo máquina-para-máquina na documentação de autenticação.

Pré-requisitos:

  • Deve ter permissões CREATE e CREATE ROLE na base de dados
  • Deve estar autenticado como uma identidade do Azure Databricks com um token OAuth válido
  • Sessões nativas autenticadas pelo Postgres não conseguem criar papéis OAuth

Para criar uma função OAuth:

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

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  2. Use a databricks_create_role função para criar um papel Postgres para a identidade Azure Databricks:

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

    Para um utilizador Azure Databricks:

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

    Para um principal de serviço Azure Databricks:

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

    Para um grupo Azure Databricks:

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

    O nome do grupo é sensível a maiúsculas e minúsculas, e deve corresponder exatamente à forma que aparece no espaço de trabalho do Azure Databricks. Quando crias um papel Postgres para um grupo, qualquer membro direto ou indireto (utilizador ou principal de serviço) desse grupo Databricks pode autenticar-se ao Postgres como o papel do grupo usando o seu token OAuth individual. Isto permite-lhe gerir permissões ao nível do grupo no Postgres em vez de manter permissões para utilizadores individuais.

  3. Conceda permissões de base de dados ao papel recém-criado.

A databricks_create_role() função cria um papel Postgres com apenas LOGIN permissões. Após criar o papel (função), deve conceder os privilégios e permissões adequados nas bases de dados, esquemas ou tabelas específicas que o utilizador precisa aceder. Saiba como: Gerir permissões

Autenticação baseada em grupos

Quando cria um papel Postgres para um grupo Azure Databricks, ativa a autenticação baseada em grupos. Isto permite que qualquer membro do grupo Azure Databricks autentique junto do Postgres usando o papel do grupo, simplificando a gestão de permissões.

Como funciona:

  1. Crie um papel Postgres para um grupo Databricks usando databricks_create_role('Group Name', 'GROUP').
  2. Conceder permissões de base de dados à função de grupo no Postgres. Veja a gestão de permissões.
  3. Qualquer membro direto ou indireto (utilizador ou principal de serviço) do grupo Databricks pode ligar-se ao Postgres usando o seu token OAuth individual.
  4. Ao ligar-se, o membro autentica-se como a função de grupo, e herda todas as permissões concedidas a essa função.

Fluxo de autenticação:

Quando um membro do grupo se liga, especifica o nome do papel Postgres do grupo como nome de utilizador e o seu próprio token OAuth como palavra-passe:

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 da pertença ao grupo: A pertença ao grupo é validada apenas no momento da autenticação. Se um membro for removido do grupo Azure Databricks após estabelecer uma ligação, a ligação mantém-se ativa. Novas tentativas de ligação de membros removidos são rejeitadas.
  • Delimitação do espaço de trabalho: Apenas os grupos atribuídos ao mesmo espaço de trabalho do Azure Databricks que o projeto utiliza são suportados para a autenticação baseada em grupos. Para saber como atribuir grupos a um espaço de trabalho, consulte Gerir 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 conforme aparece no seu espaço de trabalho Azure Databricks, incluindo o uso de maiúsculas e minúsculas.
  • Gestão de permissões: Gerir permissões ao nível do grupo no Postgres é mais eficiente do que gerir permissões individuais dos utilizadores. Quando concedes permissões ao papel de grupo, todos os membros atuais e futuros do grupo herdam automaticamente essas permissões.

Observação

Os nomes dos papéis não podem exceder os 63 caracteres, e alguns nomes não são permitidos. Saiba mais: Gerir funções

Criar um papel nativo de palavra-passe no Postgres

Podes criar papéis nativos de palavras-passe do Postgres usando a interface do Lakebase ou comandos SQL padrão.

Usando a interface:

  1. Na aplicação Lakebase, dirija-se à página de visão geral da sua agência e depois ao separador Roles & Databases da filial.
  2. Clique em Adicionar função e especifique um nome de função (qualquer nome válido da função Postgres).

Adicionar um papel no Postgres

  1. Clique em Criar.
  2. Copie a palavra-passe gerada e forneça-a de forma segura ao utilizador que irá usar essa função.

A interface do Lakebase gera automaticamente uma palavra-passe segura com entropia de 60 bits. As funções criadas pela interface do utilizador recebem automaticamente membresia na função databricks_superuser, que oferece amplos privilégios de base de dados.

Utilização de SQL:

Também pode criar roles nativos de palavra-passe Postgres usando comandos padrão SQL do Postgres.

CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';

Ao criar funções com SQL, a palavra-passe deve ter pelo menos 12 caracteres com uma mistura de letras minúsculas, maiúsculas, numéricas e símbolos. As palavras-passe definidas pelo utilizador são validadas no momento da criação para garantir entropia de 60 bits.

Ver funções dos Postgres

IU

Para visualizar todas as funções Postgres no seu projeto, aceda ao separador Funções & Bases de Dados do seu ramo na aplicação Lakebase. Todos os papéis criados no ramo, com exceção dos papéis do Sistema, estão listados, incluindo os papéis nativos Postgres com autenticação por palavra-passe.

Ver função do Postgres

PostgreSQL

Veja todas as funções com \du comando:

Pode visualizar todos os papéis Postgres, incluindo funções de sistema, usando o \du meta-comando de qualquer cliente Postgres (como psql) ou o editor SQL do Lakebase:

\du
                                      List of roles
          Role name          |                         Attributes
-----------------------------+------------------------------------------------------------
 cloud_admin                 | Superuser, Create role, Create DB, Replication, Bypass RLS
 my.user@databricks.com      | Create role, Create DB, Bypass RLS
 databricks_control_plane    | Superuser
 databricks_gateway          |
 databricks_monitor          |
 databricks_reader_12345     | Create role, Create DB, Replication, Bypass RLS
 databricks_replicator       | Replication
 databricks_superuser        | Create role, Create DB, Cannot login, Bypass RLS
 databricks_writer_12345     | Create role, Create DB, Replication, Bypass RLS

Isto mostra todos os papéis e os seus atributos (Superutilizador, Criar papel, Criar base de dados, etc.).

Remover uma função no PostgreSQL

Podes eliminar tanto os papéis baseados em identidade do Databricks como os papéis nativos de palavra-passe do Postgres.

IU

Eliminar um papel é uma ação permanente que não pode ser desfeita. Não pode eliminar um papel que possui uma base de dados. A base de dados deve ser eliminada antes de eliminar a função que a detém.

Para eliminar qualquer função do Postgres usando a interface:

  1. Navegue até ao separador Roles & Databases da sua agência na aplicação Lakebase.
  2. Selecione Eliminar função no menu de funções e confirme a eliminação.

PostgreSQL

Podes abandonar qualquer função do Postgres usando comandos padrão do Postgres. Para mais detalhes, consulte a documentação do PostgreSQL sobre desistir de funções.

Abandone um papel:

DROP ROLE role_name;

Após a eliminação de um papel baseado em identidade no Azure Databricks, essa identidade deixa de poder autenticar-se ao Postgres usando tokens OAuth até que um novo papel seja criado.

Funções pré-criadas

Após a criação de um projeto, o Azure Databricks cria automaticamente os papéis Postgres para administração de projetos e para o início do projeto.

Funções Description Privilégios herdados
<project_owner_role> A identidade Azure Databricks do criador do projeto (por exemplo, my.user@databricks.com). Esta função possui a base de dados padrão databricks_postgres e pode iniciar sessão e administrar o projeto. Membro da databricks_superuser
databricks_superuser Uma função administrativa interna. Usado para configurar e gerir o acesso em todo o projeto. Este cargo recebe 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 destes papéis: Capacidades de funções pré-criadas

Funções do sistema criadas pelo Azure Databricks

O Azure Databricks cria os seguintes papéis de sistema necessários para os serviços internos. Pode visualizar estes papéis ao emitir um comando \du a partir do psql ou do Lakebase SQL Editor.

Funções Propósito
cloud_admin Papel de superutilizador utilizado para a gestão de infraestruturas cloud
databricks_control_plane Papel de superutilizador utilizado pelos componentes internos do Databricks para operações de gestão
databricks_monitor Usado por serviços internos de coleta de métricas
databricks_replicator Utilizado para operações de replicação de bases 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 Usado para conexões internas para serviços de serviço de dados gerenciados

Para saber como funções, privilégios e associações de função funcionam no Postgres, use os seguintes recursos na documentação do Postgres:

Próximos passos