Ir para o conteúdo

3.2. Criação de Usuários e Atribuição de Permissões

No PostgreSQL, os usuários são utilizados para autenticação e gerenciamento de acessos aos bancos de dados. É importante criar usuários e atribuir as permissões adequadas para garantir a segurança e controle de acesso ao seu sistema de banco de dados.

Acessando o psql

Antes de criar usuários e atribuir permissões, certifique-se de que está conectado à interface de linha de comando do PostgreSQL (psql). Você pode seguir as etapas descritas na seção anterior para acessar o psql localmente ou remotamente, conforme necessário.

Criando um Usuário

Para criar um novo usuário no PostgreSQL, você pode usar o comando CREATE USER, seguido pelo nome do usuário e suas opções. Aqui está a sintaxe básica do comando:

CREATE USER <nome_do_usuario> [OPTIONS];

Substitua <nome_do_usuario> pelo nome do usuário que você deseja criar. Você pode especificar opções adicionais, como senha, atribuições de grupo, permissões, entre outros.

Por exemplo, para criar um usuário chamado "usuario_dono" com uma senha, você pode executar o seguinte comando:

CREATE USER usuario_dono WITH PASSWORD 'minha_senha';

Isso criará um novo usuário com o nome "usuario_dono" e a senha especificada.

Atribuindo Permissões aos Usuários

Após criar um usuário, você pode atribuir permissões específicas a ele. O PostgreSQL usa o conceito de "funções" para controlar as permissões de usuários. Uma função pode ser um usuário individual, um grupo de usuários ou até mesmo um papel especial.

Para atribuir permissões a um usuário, você pode usar o comando GRANT. Aqui está a sintaxe básica do comando:

GRANT <permissão> ON <objeto> TO <nome_do_usuario>;

Substitua <permissão> pela permissão que você deseja conceder, <objeto> pelo objeto ao qual a permissão se aplica e <nome_do_usuario> pelo nome do usuário ao qual você deseja atribuir a permissão.

Por exemplo, para conceder ao usuário "usuario_dono" permissão para criar tabelas em um determinado banco de dados ("meu_db"), você pode executar o seguinte comando:

Importante

Para este exemplo, é necessário criar um banco de dados para testes. Caso ainda não tenha feito isso, você pode criá-lo agora utilizando o comando abaixo:

CREATE DATABASE meu_db;

Antes de prosseguir, suponhamos que você esteja acessando o psql como superusuário. Antes de atribuir permissões aos usuários, é importante garantir que você esteja acessando o banco de dados correto. Caso contrário, você pode acabar atribuindo permissões ao banco de dados padrão, o "postgres", o que causará dois problemas:

  1. Atribuir permissões a um banco de dados que, por boas práticas, não deve ser manipulado diretamente.
  2. O banco de dados que realmente deveria receber as atribuições de permissão não as receberá.

Portanto, certifique-se sempre de estar conectado ao banco de dados correto antes de atribuir permissões aos usuários. Você pode alternar entre os bancos de dados disponíveis através do comando:

\c <nome_do_banco_de_dados>;

Em nosso caso, substituindo <nome_do_banco_de_dados> pelo nome correto do banco de dados, o comando ficaria assim:

\c meu_db;

Perceba que o prompt de comando deverá ter uma aparência similar a esta:

meu_db=#

Ao seguir essas orientações e garantir que você esteja conectado ao banco de dados adequado antes de prosseguir com a atribuição de permissões, você evitará problemas de segurança e manterá boas práticas no gerenciamento de seu banco de dados PostgreSQL.

Agora sim, acessando o banco de dados "meu_db", podemos conceder a permissão de criar tabelas ao usuário "usuario_dono":

GRANT CREATE ON SCHEMA public TO usuario_dono;

Você pode conceder várias permissões a um usuário e também revogar permissões usando o comando REVOKE. Aqui está a sintaxe básica do comando REVOKE:

REVOKE <permissão> ON <objeto> FROM <nome_do_usuario>;

Substitua <permissão> pela permissão que você deseja revogar, <objeto> pelo objeto ao qual a permissão se aplica e <nome_do_usuario> pelo nome do usuário do qual você deseja revogar a permissão.

Por exemplo, para revogar a permissão de criação de tabelas do usuário "usuario_dono", você pode executar o seguinte comando:

REVOKE CREATE ON SCHEMA public FROM usuario_dono;

Isso revogará a permissão de criação de tabelas do usuário "usuario_dono" no banco de dados "meu_db".

Permissões mais comuns

Aqui estão algumas das permissões mais comumente usadas no PostgreSQL:

  • SELECT: Permite selecionar (consultar) dados de uma tabela ou visualização.
  • INSERT: Permite inserir novos dados em uma tabela.
  • UPDATE: Permite atualizar os dados existentes em uma tabela.
  • DELETE: Permite excluir dados de uma tabela.
  • REFERENCES: Permite criar uma restrição de chave estrangeira em uma tabela.
  • TRIGGER: Permite criar gatilhos (triggers) em uma tabela.
  • CREATE: Permite criar novos objetos no banco de dados, como tabelas, índices, visualizações, etc.
  • ALTER: Permite realizar alterações em objetos existentes no banco de dados, como renomear tabelas, adicionar colunas, etc.
  • DROP: Permite excluir objetos do banco de dados, como tabelas, índices, etc.
  • GRANT: Permite conceder permissões a outros usuários.
  • USAGE: Permite usar objetos do banco de dados, como sequências (sequences), tipos (types), etc.

Essas são apenas algumas das permissões disponíveis no PostgreSQL. O PostgreSQL oferece um sistema de permissões muito flexível, permitindo que você conceda permissões específicas a usuários e grupos de usuários em objetos individuais ou em níveis mais amplos, como esquemas e bancos de dados inteiros.

ALL PRIVILEGES

No PostgreSQL, a palavra-chave ALL pode ser usada para conceder ou revogar todas as permissões disponíveis em um determinado nível de objeto. Ao conceder ALL PRIVILEGES, você está concedendo todas as permissões disponíveis para o objeto especificado.

Por exemplo, ao conceder ALL PRIVILEGES em uma tabela, você está concedendo permissões como SELECT, INSERT, UPDATE, DELETE, REFERENCES, TRIGGER, entre outras. Isso permite que o usuário tenha controle total sobre a tabela, podendo realizar qualquer operação nela.

A sintaxe para conceder todas as permissões é a seguinte:

GRANT ALL PRIVILEGES ON <objeto> TO <nome_do_usuario>;

Substitua <objeto> pelo objeto específico (tabela, esquema, banco de dados, etc.) e <nome_do_usuario> pelo nome do usuário ao qual você deseja conceder as permissões.

Da mesma forma, ao revogar ALL PRIVILEGES, você está revogando todas as permissões concedidas anteriormente para o objeto específico.

REVOKE ALL PRIVILEGES ON <objeto> FROM <nome_do_usuario>;

É importante usar o comando ALL PRIVILEGES com cautela, pois ele concede ou revoga todas as permissões, dando ao usuário controle total sobre o objeto. Portanto, verifique se o usuário realmente precisa de todas as permissões antes de usá-lo.

Além disso, é possível usar ALL sem a palavra-chave PRIVILEGES para conceder ou revogar todas as permissões disponíveis em um determinado nível. Por exemplo, GRANT ALL ON TABLE ou REVOKE ALL ON SCHEMA.

Lembre-se de que, ao conceder permissões, você precisa garantir que os usuários tenham apenas as permissões necessárias para realizar suas tarefas. Conceder permissões em excesso pode levar a problemas de segurança e acesso não autorizado aos dados.

Para obter mais detalhes sobre as permissões no PostgreSQL e todas as opções disponíveis, recomendo consultar a documentação oficial do PostgreSQL sobre permissões.

Listando Usuários e Permissões

Para listar todos os usuários existentes no PostgreSQL, você pode usar o comando \du dentro do psql. Isso exibirá uma lista de usuários, juntamente com suas atribuições de grupo e outras informações relevantes.

\du

Além disso, você pode usar o comando \l para listar todos os bancos de dados disponíveis e as permissões concedidas a cada usuário.

Excluindo um Usuário

Se por algum motivo você precisar excluir um usuário, pode usar o comando DROP USER seguido pelo nome do usuário. Aqui está a sintaxe básica do comando:

DROP USER <nome_do_usuario>;

Cuidado!

Lembre-se de ter cuidado ao usar o comando DROP USER, pois isso excluirá permanentemente o usuário e todas as suas associações e permissões.

Dicas Úteis

Aqui estão algumas dicas úteis ao trabalhar com usuários e permissões no PostgreSQL:

  • Use nomes de usuário descritivos e significativos para facilitar a identificação e o gerenciamento.
  • Gerencie cuidadosamente as permissões dos usuários para garantir a segurança e a integridade dos seus dados.
  • Revise regularmente as permissões concedidas aos usuários e faça ajustes conforme necessário.
  • Faça backup das permissões e configurações importantes do usuário para evitar perdas de dados.

Agora você sabe como criar usuários e atribuir permissões no PostgreSQL. Você pode continuar explorando os recursos de segurança e controle de acesso do PostgreSQL para garantir a integridade dos seus dados e a segurança do seu sistema de banco de dados. Click aqui para acesso a documentação oficial.

Espero que este guia seja útil para você.