¿Cómo ver la consulta de otra sesión en pg_stat_activity sin ser superusuario?


13

Tengo una base de datos Postgresql 9.2. Se crean dos usuarios en esta base de datos. Cuando realizo la siguiente consulta como superusuario, puedo ver todo.

select * from pg_stat_activity

Sin embargo, ¿es posible lograr el mismo resultado sin estar conectado como superusuario?

¿Qué privilegio / rol debo otorgar / crear para tener los resultados que un superusuario puede ver?


En este punto, no hay derecho a otorgar, está codificado como superusuario. Eso se ha discutido en la lista de correo últimamente, y puede cambiar en 9.5 si alguien encuentra el tiempo para trabajar en ello.
Craig Ringer

Respuestas:


20

En este punto, no hay derecho a otorgar, está codificado como superusuario. Eso se ha discutido en la lista de correo últimamente, y puede cambiar en 9.5 si alguien encuentra el tiempo para trabajar en ello.

Como solución alternativa, puede crear una SECURITY DEFINERfunción que sea propiedad del superusuario y ejecute la consulta que desee. Esto permitirá a los no superusuarios ver el contenido pg_stat_activityllamando a la función.

Por ejemplo, ejecutar como superusuario:

CREATE FUNCTION get_sa() RETURNS SETOF pg_stat_activity AS
$$ SELECT * FROM pg_catalog.pg_stat_activity; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;

CREATE VIEW pg_stat_activity_allusers AS SELECT * FROM get_sa();

GRANT SELECT ON pg_stat_activity_allusers TO public;

Tenga en cuenta que el acceso gratuito a pg_stat_activityestá restringido por una razón. Es posible espiar información confidencial de las consultas de otras personas; imagine, por ejemplo, si otro usuario estaba usando pgcrypto. En lugar de otorgarle derechos public, debe otorgarlos solo a un usuario o rol específico que actuará como usuario sustituto para el monitoreo.


¡Gracias! Solo estaba tratando de descubrir cómo dar permiso a una cuenta de monitor para leer de pg_stat_activity sin otorgar SUPERUSER.
epic_fil

3

Comenzando con PostgreSQL 10, puede otorgar el rol pg_read_all_statspara lograr el resultado deseado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.