Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL GRANT

O PostgreSQL é um sistema de gerenciamento de banco de dados relacional de código aberto conhecido por sua robustez e desempenho. O comando `GRANT` no PostgreSQL é usado para definir privilégios de acesso para usuários e grupos em objetos de banco de dados, como tabelas, visualizações, sequências, esquemas, funções e procedimentos.

Uso

O comando `GRANT` especifica quais usuários ou grupos podem executar determinadas operações em objetos de banco de dados específicos. Ele é essencial para gerenciar a segurança e o controle de acesso em um banco de dados PostgreSQL.

sql
GRANT privilege [, ...]
ON object_type object_name [, ...]
TO { user_name | GROUP group_name | PUBLIC } [, ...]
[WITH GRANT OPTION];

Nessa sintaxe, `GRANT` especifica o(s) privilégio(s) a ser(em) atribuído(s), `ON` identifica o objeto de destino e `TO` indica o usuário ou grupo que receberá os privilégios. `PUBLIC` pode ser usado para conceder privilégios a todos os usuários, o que traz implicações significativas de segurança e deve ser usado com cautela.

Exemplos

1. Conceder privilégio de seleção

sql
GRANT SELECT ON TABLE employees TO user_a;

Este exemplo concede a permissão `SELECT` na tabela `employees` ao `user_a`, permitindo que você leia os dados dessa tabela.

2. Conceder vários privilégios

sql
GRANT INSERT, UPDATE ON TABLE sales TO user_b;

Aqui, o `user_b` recebe privilégios `INSERT` e `UPDATE` na tabela `sales`, o que lhe permite adicionar e modificar registros.

3. Concessão com opção de concessão

sql
GRANT ALL PRIVILEGES ON DATABASE my_database TO admin_user WITH GRANT OPTION;

Este exemplo dá ao `admin_user` controle total sobre o `my_database` e permite que ele conceda esses privilégios a outros usuários. Tenha cuidado ao conceder `ALL PRIVILEGES`, especialmente em ambientes de produção, pois isso pode representar riscos à segurança.

4. Conceder privilégios a uma função

sql
CREATE ROLE analytics_team;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO analytics_team;

Neste exemplo, os privilégios são atribuídos a uma função, que pode ser concedida a usuários individuais, simplificando o gerenciamento de privilégios.

Revogação de privilégios

Para complementar o comando `GRANT`, o comando `REVOKE` é usado para remover privilégios de usuários ou funções.

sql
REVOKE SELECT ON TABLE employees FROM user_a;

Este exemplo revoga o privilégio `SELECT` na tabela `employees` de `user_a`.

Dicas e práticas recomendadas

  • Limite os privilégios à necessidade. Conceda apenas os privilégios mínimos necessários aos usuários para manter a segurança do banco de dados.
  • Revise regularmente as permissões. Verifique e atualize periodicamente os privilégios concedidos para garantir que eles ainda sejam apropriados.
  • Use funções para facilitar o gerenciamento. Atribua privilégios a funções em vez de usuários individuais para um gerenciamento de privilégios mais eficiente.
  • Seja cauteloso com a opção `WITH GRANT OPTION`. Evite usar essa opção a menos que seja absolutamente necessário, pois ela permite que os usuários estendam seus privilégios a outras pessoas.
  • Considere as implicações do uso do `PUBLIC`. A concessão de privilégios a `PUBLIC` deve ser evitada, a menos que todos os usuários tenham acesso, pois se aplica a todos no ambiente do banco de dados.