Pular para o conteúdo principal

Gerenciando permissões de banco de dados

info

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.

nota

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

<project_owner_role>

databricks_superuser

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. EXECUTE em 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:

SQL
GRANT SELECT ON TABLE schema_name.table_name TO role_name;

Conceda permissão de escrita a uma tabela:

SQL
GRANT INSERT, UPDATE, DELETE ON TABLE schema_name.table_name TO role_name;

Conceder todos os privilégios em um banco de dados:

SQL
GRANT ALL PRIVILEGES ON DATABASE database_name TO role_name;

Conceder permissões em nível de esquema:

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

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

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

SQL
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 PRIVILEGES no 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 default databricks_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:

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

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

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

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

SQL
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.

Próximos passos