Gerenciando permissões de banco de dados
O dimensionamento automático do Lakebase está disponível nas seguintes regiões: us-east-1, us-east-2, eu-central-1, eu-west-1, eu-west-2, ap-south-1, ap-southeast-1, ap-southeast-2.
O Lakebase autoscale é a versão mais recente do Lakebase com recursos como autoscale compute, escala-to-zero, branching e instant restore. Para comparação de recursos com o provisionamento do Lakebase, veja escolhendo entre versões.
Aprenda como conceder permissões de banco de dados para funções do Postgres em seu projeto Lakebase.
Pré-requisito: Antes de conceder permissões, você deve ter criado uma função do Postgres. Você pode criar funções OAuth para identidades Databricks usando a extensão databricks_auth ou criar funções de senha nativas do Postgres usando a interface do usuário do Lakebase. Consulte Criar funções do Postgres.
Esta página aborda as permissões de banco de dados (comando GRANT do Postgres). Para permissões de projeto (gerenciamento de infraestrutura), consulte Permissões de projeto. Para um tutorial sobre como configurar ambos, consulte o tutorial: Conceder acesso ao projeto e ao banco de dados a um novo usuário.
Funções pré-criadas e permissões default
Ao criar um projeto, 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 defaultdatabricks_postgres. Membro dedatabricks_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.EXECUTEempg_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 existentes em 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;
Conceder permissões em tabelas futuras em um esquema:
-- Grants permissions on future tables created by the current user.
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO role_name;
-- Grants permissions on future tables created by table_creator_role_name.
-- Note that only members of table_creator_role_name can run this command.
ALTER DEFAULT PRIVILEGES FOR ROLE table_creator_role_name 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 do banco 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.
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 para verificar hierarquias de herança de funções, view matrizes de permissões detalhadas e encontrar administradores de funções, consulte "Gerenciar funções do Postgres" na documentação de provisionamento do Lakebase.