Partilhar via


Tutorial: Conceder acesso a projetos e bases de dados a um novo utilizador

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.

Aprenda como configurar um novo utilizador com acesso ao seu projeto e base de dados Lakebase. Este tutorial cobre tanto permissões ao nível do projeto (para gerir recursos do Lakebase) como permissões ao nível da base de dados (para aceder a dados através do Postgres).

Sobre os dois sistemas de permissões

O Lakebase Postgres utiliza duas camadas de permissões:

  1. Permissões de projeto (ACLs): Controla ações ao nível da plataforma, como criar ramos, gerir computações e gerir definições do projeto. Estas são geridas através da aplicação Lakebase.

  2. Permissões de função do Postgres: Controla o acesso aos dados dentro da própria base de dados. Estes são geridos através de comandos Postgres GRANT padrão.

Estes sistemas não têm sincronização automática. Pode conceder estas permissões de forma independente ou conjunta, dependendo dos requisitos da sua organização:

  • Conceda ambas as camadas a utilizadores que necessitem de acesso à plataforma e à base de dados.
  • Conceda permissões de projeto apenas a utilizadores que gerem a infraestrutura, mas que não precisam de consultar dados.
  • Conceda acesso à base de dados apenas aos utilizadores que precisam de consultar dados, mas não precisam de gerir os recursos do Lakebase (eles podem conectar-se usando ferramentas como psql com detalhes de ligação).

Este tutorial mostra como configurar ambas as camadas de acesso:

  • Conceder permissões de projeto para que os utilizadores possam trabalhar com os recursos da plataforma Lakebase (este tutorial utiliza o CAN MANAGE para acesso total)
  • Crie um papel Postgres com privilégios de base de dados adequados para ligação e consulta à base de dados

Permissões padrão

Todos os utilizadores do espaço de trabalho herdam a permissão PODER CRIAR por defeito, o que permite a visualização e a criação de projetos. Para conceder acesso adicional aos recursos e bases de dados do seu projeto, deve atribuir explicitamente permissões adicionais.

Pré-requisitos

  • Um projeto Lakebase com uma base de dados
  • Permissão de administrador de espaço de trabalho ou permissão para gerir no projeto
  • Identidade Azure Databricks do utilizador (endereço de email) no mesmo espaço de trabalho onde o projeto foi criado

Cenário: Adicionar um analista de dados com acesso de leitura e escrita

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

  • Capacidade de criar e gerir ramificações, recursos computacionais e bases de dados (PODE GERIR)
  • Acesso de leitura e escrita às tabelas do esquema public da base de dados Postgres
  • Capacidade de criar novas tabelas para análise

Passo 1: Conceder permissões de projeto

Primeiro, conceda ao utilizador permissão PODE GERIR para que possa realizar ações de gestão de projetos.

  1. Navegue até ao seu projeto na aplicação Lakebase.
  2. Clique em Definições na barra lateral esquerda.
  3. Desça até à secção de permissões do projeto .
  4. Clica em Conceder permissão.
  5. Procure e selecione o utilizador.
  6. Selecione a permissão CAN MANAGE.
  7. Clique em Conceder.

Conceder a permissão PODE GERIR

O que o CAN MANAGE permite:

  • ** Criar e eliminar ramificações
  • Gerir cálculos e configurar as definições do projeto
  • Criar e gerir bases de dados e funções Postgres
  • Controlo total sobre as operações do projeto

Observação

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

Passo 2: Criar um papel Postgres para o utilizador

Agora crie um papel OAuth que permita ao Alex autenticar usando a sua identidade Azure Databricks com tokens OAuth. Como proprietário do projeto, tens as permissões necessárias para criar papéis.

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

  2. Crie a databricks_auth extensão (se ainda não estiver ativada):

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

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

Isto define uma função OAuth que:

  • Tem o mesmo nome da sua identidade do Azure Databricks (alex.lopez@databricks.com)
  • Pode autenticar usando tokens OAuth
  • Tem os privilégios de LOGIN
  • Ainda não tem permissões para a base de dados (vamos concedê-las a seguir)

Observação

Sobre as funções OAuth:

  • Os papéis OAuth autenticam-se usando tokens com limite de tempo (expiram após 1 hora)
  • Os utilizadores obtêm tokens através do diálogo de ligação da aplicação Lakebase
  • Ideal para sessões interativas e fluxos de trabalho integrados no espaço de trabalho
  • Para mais informações, consulte Sobre autenticação

Passo 3: Conceder permissões à base de dados do Postgres

Agora concede ao Alex as permissões de base de dados de que precisa. Vamos dar-lhes acesso de leitura e escrita ao esquema de base de dados public.

-- 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 estas permissões permitem:

  • CONNECT: Liga-te à base de dados
  • USAGE on schema: Aceder a objetos dentro do esquema
  • CREATE no esquema: Criar novas tabelas, vistas, funções
  • SELECT, INSERT, UPDATE, DELETE em tabelas: Ler e escrever dados
  • Permissões de sequência: Usar colunas com auto-incremento

Passo 4: Testa a ligação

Peça a Alex para verificar se consegue ligar-se e aceder à base de dados.

Usando o Editor SQL do Lakebase:

  1. O Alex abre a aplicação Lakebase e navega até ao seu projeto.

  2. O Alex abre o Editor SQL do Lakebase.

  3. No Editor SQL, o Alex deverá ser capaz de executar as seguintes consultas para verificar permissões:

    -- 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:

O Alex também pode ligar-se a partir de ferramentas externas como psql:

  1. No painel do projeto, clique em Conectar.
  2. Selecione o ramo, o cálculo e a base de dados.
  3. No menu suspenso de Funções, selecione alex.lopez@databricks.com.
  4. Copie o fragmento de ligação psql.
  5. Clique em Copiar Token OAuth para obter um token de autenticação.
  6. Ligue-se usando o comando copiado psql e introduza o token OAuth quando solicitado a palavra-passe.
  7. Execute as mesmas consultas de verificação mostradas acima.

Alternativa: Acesso apenas de leitura a base de dados

Para utilizadores que só precisam de consultar dados sem os modificar, concedam as mesmas permissões de projeto mas utilizem permissões de base de dados mais restritivas:

Permissões do projeto

Conceda PODE GERIR para permitir a criação de bases de dados, funções e outras operações de projeto.

Permissões de banco de dados

-- 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";

Isto concede:

  • Acesso de leitura a todas as tabelas
  • Ver estrutura da base de dados
  • Não é possível modificar dados (sem INSERT, UPDATE, ELIMINAR)
  • Não é possível criar tabelas ou outros objetos

Trabalhar com grupos e diretores de serviços

Pode seguir o mesmo processo para conceder acesso aos grupos e principais de serviço do Azure Databricks. Conceder permissões de projeto através da interface da aplicação Lakebase, criar funções OAuth usando databricks_create_role(), e conceder permissões à base de dados. Para mais informações, consulte Grupos e Princípios de Serviços.

Utilização de roles nativas de senha do Postgres

Como alternativa aos papéis OAuth, podes criar papéis nativos de palavra-passe Postgres para aplicações que não conseguem atualizar tokens a cada hora, processos de longa duração ou ferramentas externas que não suportam OAuth. Para instruções sobre como criar e gerir funções de palavra-passe, consulte Gerir funções Postgres.

Próximos passos