Pular para o conteúdo principal

gerenciar permissões

info

Visualização

Este recurso está em Pré-visualização Pública nas seguintes regiões: us-east-1, us-west-2, eu-west-1.

O Lakebase autoscale é a nova versão 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 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.

nota

O Lakebase Postgres utiliza duas camadas de permissões:

  • As permissões do projeto controlam ações em nível de plataforma, como a criação de ramificações ou o gerenciamento de recursos computacionais. A permissão CAN MANAGE inclui todas as funcionalidades do CAN CREATE, além do controle administrativo completo.
  • Os papéis do Postgres controlam o acesso aos dados dentro do próprio banco de dados.

Essas permissões são independentes e podem ser concedidas separadamente, com base nas necessidades da sua empresa.

Esta página aborda o gerenciamento de permissões de banco de dados por meio de funções do Postgres. Para obter informações sobre permissões de projeto , consulte Gerenciar permissões de projeto.

Para um tutorial passo a passo sobre como configurar o acesso para novos usuários, 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 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.

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