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;
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_monitorpg_read_all_settingspg_read_all_statspg_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_datapg_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_filespg_write_server_filespg_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.