gerenciar permissões
Beta
O Lakebase Postgres (beta com escalonamento automático) é 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ê.
Aprenda como conceder permissões de banco de dados para funções do Postgres em seu projeto de banco de dados Lakebase.
Pré-requisito: Antes de conceder permissões, você deve ter criado uma função do Postgres. Você pode criar funções de senha nativas do Postgres usando a interface do usuário do Lakebase ou criar funções OAuth para identidades do Databricks usando a extensão databricks_auth . Consulte Criar funções do Postgres.
Acesso ao nível do projeto em versão Beta
O recurso Autoscale Beta do Lakebase não oferece suporte a ACLs (Listas de Controle de Acesso) para projetos de banco de dados. Qualquer identidade Databricks com acesso ao workspace pode acessar e administrar projetos de banco de dados por meio da interface do usuário do aplicativo Lakebase.
No entanto, para conectar-se através do Postgres (usando psql, JDBC, etc.), os usuários precisam de:
- Uma função Postgres correspondente
- Permissões explícitas de banco de dados concedidas a essa função.
Funções pré-criadas e permissões default
Ao criar um projeto de banco de dados, o Lakebase cria automaticamente várias funções do Postgres com diferentes níveis de acesso. Compreender essas funções default ajuda você a decidir quando conceder permissões adicionais.
Funções pré-criadas:
| Função | CONECTE-SE | CRIADOB | CREATEROLE | REPLICAÇÃO | BYPASSRLS | 
|---|---|---|---|---|---|
| 
 | ✅ | ✅ | ✅ | ✅ | ✅ | 
| 
 | — | ✅ | ✅ | — | ✅ | 
privilégios padrão:
- <project_owner_role>: A identidade Databricks do criador do projeto (por exemplo,- user@databricks.com). Possui o banco de dados default- databricks_postgres. Membro de- databricks_superuser(herda os privilégios CREATEDB, CREATEROLE e BYPASSRLS). Possui também permissões de LOGIN e REPLICAÇÃO.
- databricks_superuser: Função administrativa com todos os privilégios (com concessão) em todos os bancos de dados, esquemas, tabelas e sequências.- EXECUTEem- pg_stat_statements_reset(). Possui as permissões CREATEDB, CREATEROLE e BYPASSRLS. Não foi possível efetuar o login (NOLOGIN). Esta função não deve ser usada em aplicações automatizadas.
Saiba mais: Funções pré-criadas
Conceder permissões a funções do Postgres
Após criar uma função do Postgres, você deve conceder permissões de banco de dados para permitir que a função acesse bancos de dados, esquemas e tabelas específicos. Por default, uma função Postgres recém-criada não possui permissões de banco de dados.
Use o comando padrão do Postgres GRANT para atribuir permissões:
Conceder acesso de leitura a uma tabela:
GRANT SELECT ON TABLE schema_name.table_name TO role_name;
Conceda permissão de escrita a uma tabela:
GRANT INSERT, UPDATE, DELETE ON TABLE schema_name.table_name TO role_name;
Conceder todos os privilégios em um banco de dados:
GRANT ALL PRIVILEGES ON DATABASE database_name TO role_name;
Conceder permissões em nível de esquema:
-- Allow creating objects in a schema
GRANT CREATE ON SCHEMA schema_name TO role_name;
-- Allow using a schema (required to access objects within it)
GRANT USAGE ON SCHEMA schema_name TO role_name;
Conceder permissões em todas as tabelas de um esquema:
-- Grant read access to all existing tables in a schema
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO role_name;
-- Grant write access to all existing tables in a schema
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA schema_name TO role_name;
-- Automatically grant permissions on future tables in a schema
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO role_name;
Revogar permissões:
REVOKE CONNECT ON DATABASE database_name FROM role_name;
Saiba mais: Documentação sobre privilégios do PostgreSQL
Propriedade do banco de dados
No Postgres, o proprietário do banco de dados é a função que criou o banco de dados ou à qual a propriedade foi atribuída. A propriedade do banco de dados concede privilégios abrangentes:
Privilégios concedidos aos proprietários de bancos de dados:
- Controle total : Controle completo sobre o banco de dados, incluindo a capacidade de excluí-lo.
- Todos os privilégios : Automático ALL PRIVILEGESno banco de dados (CREATE,CONNECT,TEMPORARY)
- Conceder privilégios : Capacidade de conceder e revogar privilégios no banco de dados para outras funções.
- Criação de esquemas : É possível criar esquemas dentro do banco de dados.
- Propriedade do objeto : detém a propriedade de todos os objetos criados por default no banco de dados.
- Alterar banco de dados : Permite modificar as configurações e propriedades do banco de dados.
Em projetos Lakebase:
- Sua função de identidade Databricks (por exemplo, user@databricks.com) é proprietária do banco de dados defaultdatabricks_postgres
- Os proprietários de bancos de dados podem delegar privilégios a outras funções usando instruções GRANT
Saiba mais: Privilégios na documentação do PostgreSQL
Verificar permissões do Postgres
Utilize essas consultas SQL para verificar permissões e associações de funções em seu projeto de banco de dados.
Liste todas as funções e seus atributos.
Veja todas as funções no banco de dados e suas respectivas atribuições:
SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin
FROM pg_roles
ORDER BY rolname;
Verificar associações de funções
Veja a que funções um determinado usuário pertence:
SELECT r.rolname as "Role name"
FROM pg_roles r
JOIN pg_auth_members m ON r.oid = m.roleid
WHERE m.member = (SELECT oid FROM pg_roles WHERE rolname = '<your_role>');
Verifique as permissões da tabela para uma função.
Veja quais permissões uma função possui nas tabelas do esquema public :
SELECT
  schemaname,
  tablename,
  has_table_privilege('<your_role>', schemaname||'.'||tablename, 'SELECT') as can_select,
  has_table_privilege('<your_role>', schemaname||'.'||tablename, 'INSERT') as can_insert,
  has_table_privilege('<your_role>', schemaname||'.'||tablename, 'UPDATE') as can_update,
  has_table_privilege('<your_role>', schemaname||'.'||tablename, 'DELETE') as can_delete
FROM pg_tables
WHERE schemaname = 'public';
Verificar permissões de conexão com o banco de dados
Verificar se uma função pode se conectar a um banco de dados:
SELECT has_database_privilege('<your_role>', 'lakebase', 'CONNECT');
Listar os membros de uma função
Veja todas as funções que são membros de databricks_superuser:
SELECT
  pg_get_userbyid(member) as member_role
FROM pg_auth_members
WHERE roleid = (SELECT oid FROM pg_roles WHERE rolname = 'databricks_superuser');
Para consultas avançadas adicionais que permitam verificar hierarquias de herança de funções, view matrizes de permissões detalhadas e encontrar administradores de funções, consulte a documentação de pré-visualização pública do Lakebase para gerenciar funções do Postgres .
Próximos passos
- Gerenciar funções do Postgres - Criar funções adicionais do Postgres para acesso ao banco de dados
- Conecte-se ao seu projeto de banco de dados - Conecte-se ao seu banco de dados usando tokens OAuth ou senhas do Postgres.
- Consulte seus dados - Use o editor SQL, psql ou outras ferramentas do Postgres para consultar seu banco de dados.