21.5. Roles predefinidos #

PostgreSQL proporciona un conjunto de roles predefinidos que brindan acceso a ciertas capacidades y datos privilegiados que se necesitan con frecuencia. Los administradores (incluyendo los roles que tienen el privilegio CREATEROLE) pueden otorgar (GRANT) estos roles a usuarios y/u otros roles en su entorno, proporcionando a esos usuarios acceso a las capacidades y datos especificados. Por ejemplo:

GRANT pg_signal_backend TO admin_user;

Warning

Se debe tener cuidado al otorgar estos roles para asegurar que sólo se utilicen donde sea necesario y con el entendimiento de que estos roles otorgan acceso a información privilegiada.

Los roles predefinidos se describen a continuación. Ten en cuenta que los permisos específicos para cada uno de los roles pueden cambiar en el futuro a medida que se agreguen capacidades adicionales. Los administradores deben consultar las notas de lanzamiento para ver los cambios.

pg_checkpoint #

pg_checkpoint permite ejecutar el comando CHECKPOINT.

pg_create_subscription #

pg_create_subscription permite a los usuarios con permiso CREATE en la base de datos emitir el comando CREATE SUBSCRIPTION.

pg_database_owner #

pg_database_owner siempre tiene exactamente un miembro implícito: el propietario de la base de datos actual. No se le puede otorgar pertenencia en ningún rol, y a ningún rol se le puede otorgar pertenencia en pg_database_owner. Sin embargo, al igual que cualquier otro rol, puede poseer objetos y recibir concesiones de privilegios de acceso. En consecuencia, una vez que pg_database_owner tiene derechos dentro de una plantilla de base de datos, cada propietario de una base de datos instanciada a partir de esa plantilla poseerá esos derechos. Inicialmente, este rol posee el esquema public, por lo que cada propietario de base de datos gobierna el uso local de ese esquema.

pg_maintain #

pg_maintain permite ejecutar VACUUM, ANALYZE, CLUSTER, REFRESH MATERIALIZED VIEW, REINDEX y LOCK TABLE en todas las relaciones, como si se tuvieran derechos de MAINTAIN sobre esos objetos.

pg_monitor
pg_read_all_settings
pg_read_all_stats
pg_stat_scan_tables #

Estos roles están destinados a permitir a los administradores configurar fácilmente un rol con el fin de monitorear el servidor de la base de datos. Otorgan un conjunto de privilegios comunes que permiten al rol leer varias configuraciones útiles, estadísticas y otra información del sistema normalmente restringida a los superusuarios.

pg_monitor permite leer/ejecutar varias vistas y funciones de monitoreo. Este rol es miembro de pg_read_all_settings, pg_read_all_stats y pg_stat_scan_tables.

pg_read_all_settings permite leer todas las variables de configuración, incluso aquellas que normalmente sólo son visibles para los superusuarios.

pg_read_all_stats permite leer todas las vistas pg_stat_* y utilizar varias extensiones relacionadas con estadísticas, incluso aquellas que normalmente sólo son visibles para los superusuarios.

pg_stat_scan_tables permite ejecutar funciones de monitoreo que pueden tomar bloqueos ACCESS SHARE en las tablas, potencialmente por un tiempo prolongado (por ejemplo, pgrowlocks(text) en la extensión pgrowlocks).

pg_read_all_data
pg_write_all_data #

pg_read_all_data permite leer todos los datos (tablas, vistas, secuencias), como si se tuvieran derechos de SELECT sobre esos objetos y derechos de USAGE en todos los esquemas. Este rol no evade las políticas de seguridad a nivel de fila (RLS). Si se utiliza RLS, un administrador puede querer establecer BYPASSRLS en los roles a los que se les otorga este rol.

pg_write_all_data permite escribir todos los datos (tablas, vistas, secuencias), como si se tuvieran derechos de INSERT, UPDATE y DELETE sobre esos objetos y derechos de USAGE en todos los esquemas. Este rol no evade las políticas de seguridad a nivel de fila (RLS). Si se utiliza RLS, un administrador puede querer establecer BYPASSRLS en los roles a los que se les otorga este rol.

pg_read_server_files
pg_write_server_files
pg_execute_server_program #

Estos roles están diseñados para permitir que los administradores tengan roles de confianza, pero que no sean superusuarios, que puedan acceder a archivos y ejecutar programas en el servidor de la base de datos como el usuario con el que se ejecuta la base de datos. Evaden todos los controles de permisos a nivel de base de datos cuando acceden a archivos directamente y podrían usarse para obtener acceso a nivel de superusuario. Por lo tanto, se debe tener mucho cuidado al otorgar estos roles a los usuarios.

pg_read_server_files permite leer archivos desde cualquier ubicación a la que la base de datos pueda acceder en el servidor utilizando COPY y otras funciones de acceso a archivos.

pg_write_server_files permite escribir en archivos en cualquier ubicación a la que la base de datos pueda acceder en el servidor utilizando COPY y otras funciones de acceso a archivos.

pg_execute_server_program permite ejecutar programas en el servidor de la base de datos como el usuario con el que se ejecuta la base de datos utilizando COPY y otras funciones que permiten ejecutar un programa en el lado del servidor.

pg_signal_autovacuum_worker #

pg_signal_autovacuum_worker permite enviar señales a los trabajadores de autovacuum para cancelar el vacuum de la tabla actual o terminar su sesión. Consulta Section 9.28.2.

pg_signal_backend #

pg_signal_backend permite enviar señales a otro backend para cancelar una consulta o terminar su sesión. Ten en cuenta que este rol no permite enviar señales a los backends que pertenecen a un superusuario. Consulta Section 9.28.2.

pg_use_reserved_connections #

pg_use_reserved_connections permite el uso de ranuras de conexión reservadas mediante reserved_connections.