Descripción del rol rds_superuser
En PostgreSQL, un rol puede definir un usuario, un grupo o un conjunto de permisos específicos concedidos a un grupo o usuario para varios objetos de la base de datos. Comandos de PostgreSQL para CREATE USER
y CREATE GROUP
se han sustituidos por los más generales, CREATE ROLE
con propiedades específicas para distinguir a los usuarios de bases de datos. Un usuario de base de datos se puede concebir como un rol con el privilegio LOGIN.
nota
Los comandos CREATE USER
y CREATE GROUP
se pueden seguir utilizando. Para obtener más información, consulte Roles de base de datos
El usuario postgres
es el usuario de base de datos más privilegiado de la instancia de base de datos de RDS for PostgreSQL. Tiene las características definidas mediante la siguiente instrucción CREATE ROLE
.
CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION VALID UNTIL 'infinity'
Las propiedades NOSUPERUSER
, NOREPLICATION
, INHERIT
y VALID UNTIL 'infinity'
son las opciones predeterminadas de CREATE ROLE, a menos que se especifique lo contrario.
De forma predeterminada, postgres
tiene privilegios otorgados al rol rds_superuser
y permisos para crear roles y bases de datos. El rol rds_superuser
permite al usuario postgres
hacer lo siguiente:
Añadir extensiones que estén disponibles para el uso con Amazon RDS. Para obtener más información, consulte Uso de las características de PostgreSQL admitidas por Amazon RDS para PostgreSQL
-
Cree roles para los usuarios y conceder privilegios a los usuarios. Para obtener más información, consulte CREATE ROLE
y GRANT en la documentación de PostgreSQL. -
Creación de bases de datos Para obtener más información, consulte CREATE DATABASE
en la documentación de PostgreSQL. Conceder privilegios de
rds_superuser
a los roles de usuario que no tengan estos privilegios y revocarlos según sea necesario. Le recomendamos que conceda este rol solo a los usuarios que realizan tareas de superusuario. En otras palabras, puede conceder este rol a los administradores de bases de datos (DBA) o a los administradores del sistema.Conceda (y revoque) el rol
rds_replication
a usuarios de bases de datos que no tengan el rolrds_superuser
.Conceder (y revocar) el rol
rds_password
a usuarios de bases de datos que no tengan el rolrds_superuser
.Obtener información de estado sobre todas las conexiones de base de datos mediante la vista
pg_stat_activity
. Cuando sea necesario,rds_superuser
puede detener cualquier conexión mediantepg_terminate_backend
opg_cancel_backend
.
En la instrucción CREATE ROLE postgres...
, se puede ver que el rol de usuario postgres
no permite específicamente permisos superuser
de PostgreSQL. RDS for PostgreSQL es un servicio administrado, por lo que no puede acceder al sistema operativo host y no puede conectarse con la cuenta superuser
de PostgreSQL. Muchas de las tareas que requieren acceso superuser
en un PostgreSQL independiente se administra automáticamente mediante Amazon RDS.
Para obtener más información sobre la concesión de privilegios, consulte GRANT
El rol rds_superuser
es uno de varios roles predefinidos en un Instancia de base de datos RDS for PostgreSQL.
nota
En PostgreSQL 13 y versiones anteriores, los roles predefinidos se denominan roles predeterminados.
En la siguiente lista encontrará algunos de los otros roles predefinidos que se crean automáticamente para un nuevo Instancia de base de datos RDS para PostgreSQL Los roles predefinidos y sus privilegios no se pueden cambiar. No se pueden eliminar, cambiar de nombre ni modificar los privilegios de estos roles predefinidos. Intentar realizar una de estas operaciones producirá un error.
rds_password: rol que puede cambiar las contraseñas y configurar restricciones de contraseña para los usuarios de bases de datos. Al rol
rds_superuser
se le otorga este rol de forma predeterminada y puede otorgarlo a los usuarios de la base de datos. Para obtener más información, consulte Control del acceso de los usuarios a la base de datos de PostgreSQL.En las versiones de RDS para PostgreSQL anteriores a la 14, el rol
rds_password
puede cambiar las contraseñas y establecer restricciones de contraseña para los usuarios de la base de datos y los usuarios con el rolrds_superuser
. A partir de la versión 14 de RDS para PostgreSQL, el rolrds_password
puede cambiar las contraseñas y establecer restricciones de contraseña solo para los usuarios de la base de datos. Solo los usuarios con el rolrds_superuser
pueden realizar estas acciones en otros usuarios con el rolrds_superuser
.
rdsadmin: rol creado para administrar muchas de las tareas de administración que el administrador con privilegios de
superuser
realizaría en una base de datos PostgreSQL independiente. Este rol lo utiliza internamente RDS for PostgreSQLpara muchas tareas de administración.rdstopmgr: rol que Amazon RDS utiliza internamente para admitir implementaciones multi-AZ.
Para ver todos los roles predefinidos, puede conectarse a su instancia de base de datos de RDS for PostgreSQL y utilizar el metacomando psql \du
. El resultado es el siguiente:
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}
...
En la salida, puede ver que rds_superuser
no es un rol de usuario de base de datos (no puede iniciar sesión), pero tiene los privilegios de muchos otros roles. También puede ver que el usuario de la base de datos postgres
es miembro del rol rds_superuser
. Como se ha mencionado anteriormente, postgres
es el valor predeterminado de Create database (Crear base de datos) de la consola de Amazon RDS. Si ha elegido otro nombre, ese nombre se muestra en la lista de roles.