Pular para o conteúdo principal

Tutorial: Conceder acesso ao projeto e ao banco de dados a um novo usuário

info

Visualização

O Lakebase Postgres (prévia de escala automática) está disponível nas seguintes regiões: us-east-1, us-west-2, eu-west-1.

O Lakebase autoscale Preview é a nova versão do Lakebase. Ele suporta dimensionamento automático compute, ramificação, restauração instantânea e outros recursos avançados. Para a versão anterior do Lakebase, consulte Lakebase provisionamento Preview. Consulte a seção "Como escolher entre as versões" para entender qual versão é a mais adequada para você.

Aprenda como configurar um novo usuário com acesso ao seu projeto e banco de dados Lakebase. Este tutorial aborda permissões em nível de projeto (para gerenciar recursos do Lakebase) e permissões em nível de banco de dados (para acessar dados por meio do Postgres).

Sobre os dois sistemas de permissão

O Lakebase Postgres utiliza duas camadas de permissões:

  1. Permissões de projeto (ACLs) : Controlam ações em nível de plataforma, como criar ramificações, gerenciar recursos computacionais e gerenciar configurações de projeto. Essas configurações são gerenciadas pelo aplicativo Lakebase.

  2. Permissões de função do Postgres : Controlam o acesso aos dados dentro do próprio banco de dados. Esses são gerenciados por meio do comando padrão do Postgres GRANT .

Esses sistemas não possuem sincronização automática . Você pode conceder essas permissões individualmente ou em conjunto, dependendo das necessidades da sua organização:

  • Conceda ambas as camadas aos usuários que precisam de acesso à plataforma e acesso ao banco de dados.
  • Conceda permissões de projeto apenas aos usuários que gerenciam a infraestrutura, mas não precisam consultar os dados.
  • Conceda acesso ao banco de dados apenas aos usuários que precisam consultar dados, mas não precisam gerenciar o recurso do Lakebase (eles podem se conectar usando ferramentas como psql com os detalhes de conexão).

Este tutorial mostra como configurar as duas camadas de acesso:

  • Conceda permissões de projeto para que os usuários possam trabalhar com o recurso da plataforma Lakebase (este tutorial usa a CAN MANAGE para acesso total).
  • Crie uma função do Postgres com os privilégios de banco de dados apropriados para conectar-se e consultar o banco de dados.

permissões padrão

Todos os usuários workspace herdam a permissão CAN CREATE por default, o que permite visualizar e criar projetos. Para conceder acesso adicional aos recursos e bancos de dados do seu projeto, você deve atribuir permissões adicionais explicitamente.

Pré-requisitos

  • Um projeto Lakebase com um banco de dados
  • Administrador do espaço de trabalho ou permissão CAN MANAGE no projeto
  • A identidade do usuário Databricks (endereço email ) no mesmo workspace onde o projeto foi criado.

Cenário: Adicionar um analista de dados com acesso de leitura e gravação.

Vamos analisar como adicionar um analista de dados chamado Alex Lopez que precisa de:

  • Capacidade de criar e gerenciar filiais, computação e bancos de dados (CAN MANAGE)
  • Acesso de leitura e gravação às tabelas no esquema public do seu banco de dados Postgres.
  • Capacidade de criar novas tabelas para análise.

o passo 1: Conceder permissões ao projeto

Primeiro, conceda ao usuário a permissão CAN MANAGE para que ele possa executar ações de gerenciamento de projetos.

  1. Acesse seu projeto no aplicativo Lakebase.
  2. Clique em Configurações na barra lateral esquerda.
  3. Deslize a tela até a seção Permissões do projeto .
  4. Clique em Conceder permissão .
  5. Procure e selecione o usuário.
  6. Selecione a permissão CAN MANAGE .
  7. Clique em Conceder .

Conceder permissão CAN MANAGE

O que o CAN MANAGE permite:

  • Criar e excluir ramificações
  • Gerenciar, computar e configurar as configurações do projeto.
  • Criar e gerenciar bancos de dados e funções do Postgres.
  • Controle total sobre as operações do projeto
nota

O programa CAN MANAGE concede controle total sobre o projeto, incluindo muitas outras ações. Para obter uma lista completa de todos os níveis de permissão e as ações específicas que cada um permite, consulte as ACLs do projeto Lakebase.

o passo 2: Criar uma função do Postgres para o usuário

Agora, crie uma função OAuth que permita que Alex se autentique usando sua identidade do Databricks com tokens OAuth. Como proprietário do projeto, você tem as permissões necessárias para criar funções.

  1. Abra o Editor SQL do Lakebase e conecte-se ao seu projeto.

  2. Crie a extensão databricks_auth (caso ainda não esteja habilitada):

    SQL
    CREATE EXTENSION IF NOT EXISTS databricks_auth;
  3. Use a função databricks_create_role para criar a função OAuth Postgres para Alex:

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

Isso cria uma função OAuth que:

  • Tem o mesmo nome que sua identidade no Databricks (alex.lopez@databricks.com)
  • É possível autenticar usando tokens OAuth.
  • Possui privilégios de LOGIN
  • Ainda não possui permissões de banco de dados (concederemos essas permissões em seguida).
nota

Sobre as funções do OAuth:

  • As funções OAuth autenticam usando tokens com tempo de validade limitado (expiram após 1 hora).
  • Os usuários obtêm tokens da caixa de diálogo de conexão do aplicativo Lakebase.
  • Melhor para sessões interativas e fluxo de trabalho integrado ao espaço de workspace
  • Para mais informações, consulte Sobre autenticação

o passo 3: Conceder permissões ao banco de dados Postgres

Agora, conceda a Alex as permissões de banco de dados necessárias. Vamos dar a eles acesso de leitura e gravação ao esquema public .

SQL
-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";

-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";

-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";

O que essas permissões permitem:

  • CONNECTConectar ao banco de dados
  • USAGE Sobre o esquema: Acessar objetos dentro do esquema
  • CREATE No esquema: Criar novas tabelas, visualizações e funções.
  • SELECT, INSERT, UPDATE, DELETE Em tabelas: Ler e escrever dados
  • Permissões de sequência: Usar colunas de incremento automático

o passo 4: Teste a conexão

Peça para o Alex verificar se eles conseguem se conectar e acessar o banco de dados.

Utilizando o Editor SQL do Lakebase:

  1. Alex abre o aplicativo Lakebase e navega até o seu projeto.

  2. Alex abre o Editor SQL do Lakebase.

  3. No Editor SQL , Alex deverá conseguir executar as seguintes consultas para verificar as permissões:

    SQL
    -- Check role memberships
    SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com';

    -- Verify can read data
    SELECT * FROM your_table LIMIT 5;

    -- Verify can write data
    INSERT INTO your_table (column1, column2) VALUES ('test', 'value');

    -- Verify can create tables
    CREATE TABLE alex_analysis (
    id SERIAL PRIMARY KEY,
    notes TEXT,
    created_at TIMESTAMP DEFAULT NOW()
    );

Alternativamente, usando psql:

Alex também pode se conectar a partir de ferramentas externas como psql:

  1. No painel de controle do projeto, clique em Conectar .
  2. Selecione a filial, compute e o banco de dados.
  3. Na dropdown Funções , selecione alex.lopez@databricks.com.
  4. Copie o trecho de conexão psql .
  5. Clique em Copiar tokens OAuth para obter tokens de autenticação.
  6. Conecte-se usando o comando psql copiado e insira os tokens OAuth quando solicitado a senha.
  7. execução das mesmas consultas de verificação mostradas acima.

Alternativa: Acesso ao banco de dados somente leitura

Para usuários que precisam apenas consultar dados sem modificá-los, conceda as mesmas permissões de projeto, mas use permissões de banco de dados mais restritivas:

Permissões do projeto

Conceda o privilégio CAN MANAGE para permitir a criação de bancos de dados, funções e outras operações do projeto.

Permissões de banco de dados

SQL
-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');

-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";

-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO "analyst@databricks.com";

-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";

Isso concede:

  • Acesso de leitura a todas as tabelas
  • visualizar estrutura do banco de dados
  • Não é possível modificar os dados (sem INSERT, UPDATE ou DELETE).
  • Não é possível criar tabelas ou outros objetos.

Trabalhando com grupos e entidade de serviço

Você pode seguir o mesmo processo para conceder acesso a grupos Databricks e à entidade de serviço. Conceda permissões de projeto através da interface do usuário do aplicativo Lakebase, crie funções OAuth usando databricks_create_role() e conceda permissões de banco de dados. Para mais informações, veja Grupos e entidade de serviço.

Utilizando funções de senha nativas do Postgres

Como alternativa às funções OAuth , você pode criar funções de senha nativas do Postgres para aplicativos que não podem refresh tokens a cada hora, processos de longa duração ou ferramentas externas que não oferecem suporte OAuth. Para obter instruções sobre como criar e gerenciar funções de senha, consulte Gerenciar funções do Postgres.

Próximos passos