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
O usuário postgres
é o usuário de banco de dados mais privilegiado no cluster de banco de dados do Aurora 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 Aurora PostgreSQL. Para obter mais informações, consulte Trabalhar com extensões e invólucros de dados externos.
-
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 perfilrds_superuser
.Conceda (e revogue) o perfil
rds_password
a usuários de banco de dados que não têm o perfilrds_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 usandopg_terminate_backend
oupg_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 Aurora 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 Aurora.
Para obter mais informações sobre como conceder privilégios, consulte GRANT
O perfil rds_superuser
é um dos vários perfis predefinidos em um cluster de banco de dados do Aurora 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 cluster de banco de dados do Aurora 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 perfilrds_superuser
. Para versões do RDS para PostgreSQL 14 e posteriores, o perfilrds_password
pode alterar senhas e configurar restrições de senha somente para usuários de banco de dados. Somente usuários com o perfilrds_superuser
podem realizar essas ações em outros usuários com o perfilrds_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 Aurora PostgreSQL para várias tarefas de gerenciamento.
Para ver todos os perfis predefinidos, conecte-se à instância do cluster de banco de dados primário do Aurora 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.
nota
O Aurora PostgreSQL versões 15.2 e 14.7 introduziram um comportamento restritivo do perfil de rds_superuser
. Um usuário do Aurora PostgreSQL precisa receber o privilégio CONNECT
no banco de dados correspondente para se conectar, mesmo que ele receba o perfil de rds_superuser
. Antes das versões 14.7 e 15.2 do Aurora PostgreSQL, um usuário podia se conectar a qualquer banco de dados e tabela do sistema se recebesse o perfil de rds_superuser
. Esse comportamento restritivo alinha-se com a AWS e os compromissos do Amazon Aurora com a melhoria contínua da segurança.
Atualize a respectiva lógica nas aplicações se o aprimoramento acima tiver algum impacto.