Controlar o acesso de usuários ao banco de dados PostgreSQL - Amazon Relational Database Service

Controlar o acesso de usuários ao banco de dados PostgreSQL

Os novos bancos de dados no PostgreSQL são sempre criados com um conjunto padrão de privilégios no esquema public do banco de dados que permite que todos os usuários e perfis do banco de dados criem objetos. Esses privilégios permitem que os usuários do banco de dados se conectem ao banco de dados, por exemplo, e criem tabelas temporárias durante a conexão.

Para controlar melhor o acesso dos usuários às instâncias de bancos de dados que você cria na instância de banco de dados do RDS para PostgreSQL, recomendamos que você revogue esses privilégios de public padrão. Depois disso, conceda privilégios específicos aos usuários do banco de dados de forma mais granular, conforme mostrado no procedimento a seguir.

Como configurar perfis e privilégios para uma nova instância de banco de dados

Suponha que você esteja configurando um banco de dados em uma instância de banco de dados do RDS para PostgreSQL recém-criada para uso por vários pesquisadores que precisam de acesso de leitura-gravação ao banco de dados.

  1. Use o psql (ou o pgAdmin) para se conectar à na instância de banco de dados do RDS para PostgreSQL:

    psql --host=your-db-instance.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password

    Insira sua senha quando for solicitado. O cliente psql conecta-se e exibe o banco de dados de conexão administrativa padrão, postgres=>, como o prompt.

  2. Para evitar que os usuários do banco de dados criem objetos no esquema public, faça o seguinte:

    postgres=> REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE
  3. Em seguida, crie uma nova instância de banco de dados:

    postgres=> CREATE DATABASE lab_db; CREATE DATABASE
  4. Revogue todos os privilégios do esquema PUBLIC nesse novo banco de dados.

    postgres=> REVOKE ALL ON DATABASE lab_db FROM public; REVOKE
  5. Crie um perfil para os usuários do banco de dados.

    postgres=> CREATE ROLE lab_tech; CREATE ROLE
  6. Permita que os usuários do banco de dados que têm esse perfil conectem-se ao banco de dados.

    postgres=> GRANT CONNECT ON DATABASE lab_db TO lab_tech; GRANT
  7. Conceda a todos os usuários com o perfil lab_tech todos os privilégios nesse banco de dados.

    postgres=> GRANT ALL PRIVILEGES ON DATABASE lab_db TO lab_tech; GRANT
  8. Crie os usuários do banco de dados, da seguinte forma:

    postgres=> CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me'; CREATE ROLE postgres=> CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me'; CREATE ROLE
  9. Conceda a esses dois usuários os privilégios associados ao perfil lab_tech:

    postgres=> GRANT lab_tech TO lab_user1; GRANT ROLE postgres=> GRANT lab_tech TO lab_user2; GRANT ROLE

Neste ponto, o lab_user1 e o lab_user2 podem conectar-se ao banco de dados lab_db. Este exemplo não segue as práticas recomendadas para uso corporativo, o que pode incluir a criação de várias instâncias de banco de dados, esquemas diferentes e concessão de permissões limitadas. Para obter informações mais completas e cenários adicionais, consulte Managing PostgreSQL Users and Roles (Gerenciar usuários e perfis do PostgreSQL).

Para obter mais informações sobre privilégios nos bancos de dados PostgreSQL, consulte o comando GRANT na documentação do PostgreSQL.