Gerenciar funções

Os papéis Postgres controlam o acesso às suas bases de dados, esquemas, tabelas e outros objetos de base de dados Postgres. Use a interface do Lakebase para criar e gerir funções para a sua equipa.

Observação

Antes de trabalhar com funções, veja como se ligar à sua base de dados e autenticar usando tokens OAuth ou autenticação nativa por palavra-passe Postgres.

Visão geral da função

Quando crias um projeto, um papel Postgres é criado automaticamente para a tua identidade Databricks (por exemplo, user@databricks.com). Este papel detém a base de dados padrão databricks_postgres e é membro de databricks_superuser, conferindo-lhe amplos privilégios para gerir objetos da base de dados. Pode criar funções adicionais no ramo padrão do seu projeto ou em ramos filhos.

Se gerir o seu projeto com Terraform e quiser colocar esta função implícita de proprietário sob gestão de IaC, consulte Configuração típica de projetos Lakebase com Terraform para conhecer o replace_existing padrão de adoção.

Se usar Pacotes de Automação Declarativa em vez disso, veja Configuração típica de projetos Lakebase com Pacotes de Automação Declarativa para o mesmo padrão.

Observação

O estado da função do Postgres é independente entre ramificações. Quando cria um ramo, este reflete as funções do Postgres, as bases de dados, as associações entre funções e os privilégios do ramo principal no momento em que o ramo é criado. Após a ramificação, cada ramificação evolui de forma independente — as funções e as bases de dados criadas, os GRANTs e REVOKEs aplicados e os atributos ou associações de funções modificados numa ramificação não têm efeito em qualquer outra ramificação, incluindo a ramificação principal. Não existe sincronização automática do estado da função entre ramificações.

Permissões do projeto (PODE USAR, PODE GERIR) funcionam de forma diferente: aplicam-se a todo o projeto e a todas as suas ramificações. Veja Gerir permissões de projeto.

Criar um papel

Use a caixa de diálogo Adicionar função da aplicação Lakebase para criar uma função OAuth para uma identidade Databricks ou uma função de palavra-passe nativa do Postgres.

Criar uma função OAuth

Os papéis OAuth estão ligados a uma identidade Azure Databricks (utilizador, principal de serviço ou grupo) e autenticam-se usando tokens OAuth, que expiram após uma hora.

Quando cria um ramo filho, ele reflete o papel do pai e o estado da base de dados no momento da ramificação. Depois disso, o estado de papel de cada ramo evolui de forma independente. Para grupos, apenas são suportados grupos ao nível do espaço de trabalho.

Opcionalmente, conceder databricks_superuser (herda pg_read_all_data, pg_write_all_data, e pg_monitor) ou atributos padrão de Postgres (CREATEDB, CREATEROLE, BYPASSRLS). Veja atributos de Função na documentação PostgreSQL.

Para criar um papel OAuth, abra o projeto e selecione Visão Geral na barra lateral. Selecione o separador Papéis e Bases de Dados, clique em Adicionar papel, selecione o separador OAuth, selecione uma identidade na lista pendente Principal, configure as permissões e clique em Adicionar.

Adicionar papel — aba OAuth

Observação

Também podes criar funções OAuth usando a databricks_auth extensão com SQL ou a API REST. Ver Criar funções de Postgres.

Criar uma função de palavra-passe

As funções de palavra-passe usam uma palavra-passe Postgres estática e não estão associadas a uma identidade do Azure Databricks. São úteis para aplicações ou ferramentas que requerem credenciais tradicionais de base de dados.

A aplicação Lakebase gera automaticamente uma palavra-passe segura. Copie-o imediatamente após a criação — não volta a ser mostrado. Se precisares de uma palavra-passe personalizada, define mais tarde usando SQL. As mesmas permissões opcionais do papel OAuth aplicam-se (databricks_superuser, CREATEDB, CREATEROLE, BYPASSRLS). Os nomes das funções devem ser identificadores Postgres válidos e não podem exceder 63 caracteres.

Para criar uma função de senha, navegue até Funções & Bases de DadosAdicionar funçãoAba Senha, insira o nome da função, configure as permissões, clique Adicionar e copie a senha gerada.

Adicionar função — Aba de palavra-passe

Ver funções

Para ver todos os papéis numa filial, navegue até ao separador Papéis & Bases de Dados da sua filial na aplicação Lakebase.

Lista de funções

Gerir ligações por palavra-passe

As ligações por palavra-passe estão desativadas por defeito para novos projetos Lakebase. Os projetos existentes não são afetados por esta predefinição.

Para ativar conexões por palavra-passe, navegue até às definições do seu projeto Definições>Conexões da base de dados e assinale Palavra-passe (roles nativos do Postgres).

Para desativar as ligações com palavra-passe, navegue até Definições>Ligações à base de dados do seu projeto e desmarque Palavra-passe (funções nativas do Postgres). As funções com palavra-passe existentes não são eliminadas, mas não se podem autenticar enquanto as ligações por palavra-passe estiverem desativadas.

Também podes controlar isto por endpoint de computação. Nas definições de computação da sua filial, selecione Editar>ligações à base de dados e verifique ou desmarque Palavra-passe (funções Postgres).

Definições de ligações à base de dados

Importante

Isto é uma mudança de comportamento. Se tiver scripts de automação ou pipelines de CI que criam novos projetos Lakebase e dependem de ligações nativas por palavra-passe do Postgres, tem agora de ativar explicitamente as ligações por palavra-passe após a criação do projeto.

Para ativar ou desativar as ligações por palavra-passe de forma programática:

CLI

# Enable password connections
databricks postgres update-project projects/<project-id> spec.enable_pg_native_login \
  --json '{"spec": {"enable_pg_native_login": true}}'

# Disable password connections
databricks postgres update-project projects/<project-id> spec.enable_pg_native_login \
  --json '{"spec": {"enable_pg_native_login": false}}'

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import FieldMask, Project, ProjectSpec

w = WorkspaceClient()

# Enable password connections
w.postgres.update_project(
    name="projects/<project-id>",
    project=Project(spec=ProjectSpec(enable_pg_native_login=True)),
    update_mask=FieldMask(field_mask=["spec.enable_pg_native_login"]),
).wait()

# Disable password connections
w.postgres.update_project(
    name="projects/<project-id>",
    project=Project(spec=ProjectSpec(enable_pg_native_login=False)),
    update_mask=FieldMask(field_mask=["spec.enable_pg_native_login"]),
).wait()

curl

# Enable password connections
curl -X PATCH "https://${DATABRICKS_HOST}/api/2.0/postgres/projects/<project-id>?update_mask=spec.enable_pg_native_login" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"spec": {"enable_pg_native_login": true}}' | jq

# Disable password connections
curl -X PATCH "https://${DATABRICKS_HOST}/api/2.0/postgres/projects/<project-id>?update_mask=spec.enable_pg_native_login" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"spec": {"enable_pg_native_login": false}}' | jq

Para autenticação, veja Sobre autenticação.

Redefinir uma palavra-passe

Pode redefinir a palavra-passe para as funções nativas do Postgres. As funções OAuth utilizam tokens OAuth para autenticação e não têm palavras-passe para repor.

Para redefinir a palavra-passe de uma função:

  1. Navegue até ao separador Roles & Databases da sua agência na aplicação Lakebase.
  2. Selecione Redefinir palavra-passe no menu de função e clique em Reiniciar.
  3. Copia a nova palavra-passe gerada.

Observação

Redefinir uma palavra-passe na aplicação Lakebase repõe a palavra-passe para um valor gerado com entropia de 60 bits. Para definir o valor da sua própria palavra-passe, pode redefinir a palavra-passe usando o editor SQL ou um cliente SQL como o psql com a seguinte sintaxe:

ALTER USER user_name WITH PASSWORD 'new_password';

A palavra-passe deve ter pelo menos 12 caracteres com uma mistura de minúsculas, maiúsculas, números e símbolos. As palavras-passe definidas pelo utilizador são validadas no momento da criação para garantir entropia de 60 bits.

Obtenha um novo token OAuth

Se estiver a usar autenticação OAuth e precisar de um novo token OAuth (os tokens expiram após uma hora), pode obter um no modal Connect:

  1. Navegue até ao seu projeto na aplicação Lakebase.
  2. Clique em Ligar para abrir o modal de ligação à base de dados.
  3. Seleciona a tua função OAuth na lista suspensa de Funções.
  4. Clica em Copiar Token OAuth para copiar um novo token.

Saiba mais: Conecte-se a uma função OAuth | Sobre autenticação OAuth

Eliminar um papel

Importante

Eliminar um papel é uma ação permanente que não pode ser desfeita, e não podes 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 uma função:

  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.

Observação

Gerir funções em bases de dados requer a permissãode projeto PODE GERIR ou PODE USAR. Se não tiver a permissão necessária, verá uma mensagem "Permissões necessárias" ao tentar uma ação relacionada com o papel. Contacte um administrador do espaço de trabalho para solicitar acesso. Para mais informações, consulte Gerir permissões de projeto.