Noções básicas sobre o perfil rds_superuser - Amazon Relational Database Service

Noções básicas sobre o perfil rds_superuser

No PostgreSQL, um perfil pode definir um usuário, um grupo ou um conjunto de permissões específicas concedidas a um grupo ou usuário a vários objetos no banco de dados. Os comandos do PostgreSQL para CREATE USER e CREATE GROUP foram substituídos pelo comando mais geral CREATE ROLE com propriedades específicas para distinguir usuários de banco de dados. Um usuário de banco de dados pode ser considerado um perfil com o privilégio LOGIN.

nota

Os comandos CREATE USER e CREATE GROUP ainda podem ser usados. Para obter mais informações, consulte Database Roles (Perfis de banco de dados) na documentação do PostgreSQL.

O usuário postgres é o usuário de banco de dados mais privilegiado na instância de banco de dados do RDS para PostgreSQL. Ele tem as características definidas pela seguinte instrução CREATE ROLE.

CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION VALID UNTIL 'infinity'

As propriedades NOSUPERUSER, NOREPLICATION, INHERIT e VALID UNTIL 'infinity' são as opções padrão da instrução CREATE ROLE, a menos que especificado de outra forma.

Por padrão, postgres tem privilégios concedidos à função rds_superuser e permissões para criar funções e bancos de dados. O perfil rds_superuser permite que o usuário postgres faça o seguinte:

  • Adicione as extensões que estão disponíveis para o uso com o Amazon RDS. Para obter mais informações, consulte Trabalhar com recursos do PostgreSQL compatíveis com o Amazon RDS para PostgreSQL

  • Crie funções para usuários e conceda privilégios aos usuários. Para obter mais informações, consulte CREATE ROLE e GRANT na documentação do PostgreSQL.

  • Crie bancos de dados. Para obter mais informações, consulte CREATE DATABASE na documentação do PostgreSQL.

  • Conceda privilégios de rds_superuser a outras funções de usuário que não têm esses privilégios e revogue esses privilégios conforme necessário. Recomendamos que você conceda esse perfil somente aos usuários que executam tarefas de superusuário. Em outras palavras, você pode conceder esse perfil a administradores de banco de dados (DBAs) ou administradores de sistema.

  • Conceda (e revogue) o perfil rds_replication a usuários de banco de dados que não têm o perfil rds_superuser.

  • Conceda (e revogue) o perfil rds_password a usuários de banco de dados que não têm o perfil rds_superuser.

  • Obtenha informações de status sobre todas as conexões de banco de dados usando a visualização pg_stat_activity. Quando necessário, rds_superuser pode interromper qualquer conexão usando pg_terminate_backend ou pg_cancel_backend.

Na instrução CREATE ROLE postgres..., é possível ver que o perfil do usuário postgres não autoriza especificamente as permissões de superuser do PostgreSQL. O RDS para PostgreSQL é um serviço gerenciado, portanto, você não pode acessar o sistema operacional host nem se conectar usando a conta superuser do PostgreSQL. Muitas das tarefas que exigem o acesso de superuser em um PostgreSQL autônomo são gerenciadas automaticamente pelo Amazon RDS.

Para obter mais informações sobre como conceder privilégios, consulte GRANT na documentação do PostgreSQL.

O perfil rds_superuser é um dos vários perfis predefinidos em um Instância de banco de dados do RDS para PostgreSQL.

nota

No PostgreSQL 13 e em versões anteriores, os perfis predefinidos são conhecidos como perfis padrão.

Na lista a seguir, você encontra alguns dos outros perfis predefinidos que são criados automaticamente para um novo Instância de banco de dados do RDS para PostgreSQL. Os perfis predefinidos e seus privilégios não podem ser alterados. Não é possível descartar, renomear ou modificar os privilégios desses perfis predefinidos. Qualquer tentativa de fazer isso gerará um erro.

  • rds_password: um perfil que pode alterar senhas e configurar restrições de senha para usuários de bancos de dados. O perfil rds_superuser recebe esse perfil por padrão e pode concedê-lo aos usuários do banco de dados. Para ter mais informações, consulte Controlar o acesso de usuários ao banco de dados PostgreSQL.

    • Para versões do RDS para PostgreSQL anteriores à 14, o perfil rds_password pode alterar senhas e configurar restrições de senha para usuários de bancos de dados e usuários com o perfil rds_superuser. Para versões do RDS para PostgreSQL 14 e posteriores, o perfil rds_password pode alterar senhas e configurar restrições de senha somente para usuários de banco de dados. Somente usuários com o perfil rds_superuser podem realizar essas ações em outros usuários com o perfil rds_superuser.

  • rdsadmin: um perfil criado para lidar com muitas das tarefas de gerenciamento que o administrador com privilégios de superuser executaria em um banco de dados PostgreSQL autônomo. Esse perfil é usado internamente pelo RDS para PostgreSQL para várias tarefas de gerenciamento.

  • rdstopmgr: um perfil usado internamente pelo Amazon RDS para comportar implantações multi-AZ.

Para ver todos os perfis predefinidos, conecte-se à instância de banco de dados do RDS para PostgreSQL e use o metacomando psql \du. A saída é semelhante à seguinte:

List of roles Role name | Attributes | Member of --------------+-----------------------------------+------------------------------------ postgres | Create role, Create DB +| {rds_superuser} | Password valid until infinity | rds_superuser | Cannot login | {pg_monitor,pg_signal_backend, | +| rds_replication,rds_password} ...

Na saída, é possível ver que rds_superuser não é um perfil de usuário de banco de dados (não pode fazer login), mas tem os privilégios de muitos outros perfis. Também é possível ver que esse usuário do banco de dados postgres é membro do perfil rds_superuser. Como mencionado anteriormente, postgres é o valor padrão na página Create database (Criar banco de dados) do console do Amazon RDS. Se você escolheu outro nome, esse nome será mostrado na lista de perfis.