Descripción del rol rds_superuser - Amazon Relational Database Service

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 en la documentación de PostgreSQL.

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 rol rds_superuser.

  • Conceder (y revocar) el rol rds_password a usuarios de bases de datos que no tengan el rol rds_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 mediante pg_terminate_backend o pg_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 en la documentación de PostgreSQL.

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 rol rds_superuser. A partir de la versión 14 de RDS para PostgreSQL, el rol rds_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 rol rds_superuser pueden realizar estas acciones en otros usuarios con el rol rds_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.