Traqueur : sécurité renforcée

Téléchargement du traqueur pour PostgreSQL 12, 13, 14, 15, 16
Téléchargement du traqueur pour PostgreSQL 11
Téléchargement du traqueur pour PostgreSQL 10
Téléchargement du traqueur pour PostgreSQL 9.6
Téléchargement du traqueur pour PostgreSQL 9.5
Téléchargement du traqueur pour PostgreSQL 9.4
Téléchargement du traqueur pour PostgreSQL 9.3
Journal des changements
Signalement de bugs via le forum
Licence identique à celle de PostgreSQL, open source type BSD
Dossier des versions

Sécurité renforcée en mode interactif (collecte des données et présentation des résultats)

      Avec PostgreSQL en version 10 ou supérieure et le traqueur en version 2.04.00 ou supérieure, il n'est plus nécessaire d'utiliser un rôle possédant l'attribut SUPERUSER pour effectuer une session de traque en interactif.
      Une unique session de traque en tant que superuser est nécessaire afin de créer les extensions dans la base de travail (par défaut traqueur).
      La solution consiste ensuite à créer un utilisateur tirant parti du rôle pg_monitor avec l'option -q role puis à toujours se connecter avec cet utilisateur via l'option -c. Seule restriction : cet utilisateur ne peut pas utiliser l'option -p qui exécute du code en plpythonu (untrusted).
      Exemple :

-- creation d'une base de travail avec un superuser (postgres) psql select version(); version -------------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 10.3 (Ubuntu 10.3-1.pgdg16.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609, 64-bit (1 ligne) create database traqueur; CREATE DATABASE REVOKE ALL PRIVILEGES ON DATABASE traqueur FROM public; REVOKE \q -- premiere utilisation du traqueur avec un superuser (postgres) ./traqueur.sh -d 0 traqueur 2.04.00 - outil de diagnostic performance pour PostgreSQL 9.3 => 11 INFORMATION, pas d'options de connexions indiquees, utilisation de la base dediee detectee ... INFORMATION, connecte a la base traqueur INFORMATION, version de PostgreSQL detectee : 100003 INFORMATION, preparation de la collecte ... INFORMATION, execution de la collecte et presentation des resultats ... busy_pc | distinct_exe | db | pid | pg_user | client_ip | application | query | wait_event_type | blockers ---------+--------------+----------+-------+----------+-----------+-------------+--------------------------+-----------------+---------- 100 | 1 / 1 | postgres | 12115 | postgres | | psql | select pg_sleep(100000); | Timeout | (1 ligne) -- creation d'un utilisateur traqueur_interactif avec un superuser (postgres) ./traqueur.sh -q traqueur_interactif traqueur 2.04.00 - outil de diagnostic performance pour PostgreSQL 9.3 => 11 INFORMATION, pas d'options de connexions indiquees, utilisation de la base dediee detectee ... INFORMATION, connecte a la base traqueur INFORMATION, version de PostgreSQL detectee : 100003 INFORMATION, creation de l'utilisateur interactif de monitoring ... -- changement du mot de passe par defaut de l'utilisateur traqueur_interactif avec un superuser (postgres) psql alter role traqueur_interactif password 'ara465e4r444'; ALTER ROLE -- utilisation du traqueur avec le role traqueur_interactif -- (pour eviter de saisir N fois le mot de passe, renseigner prealablement un .pgpass (droits 600) avec une ligne d'informations serveur:port:base:utilisateur:mot_de_passe) ./t -c "-p 5432 -d traqueur -U traqueur_interactif -h localhost" traqueur 2.04.00 - outil de diagnostic performance pour PostgreSQL 9.3 => 11 INFORMATION, connecte a la base traqueur INFORMATION, version de PostgreSQL detectee : 100003 INFORMATION, preparation de la collecte ... INFORMATION, execution de la collecte et presentation des resultats ... busy_pc | distinct_exe | db | pid | pg_user | client_ip | application | query | wait_event_type | blockers ---------+--------------+----------+-------+----------+-----------+-------------+--------------------------+-----------------+---------- 100 | 1 / 50 | postgres | 12115 | postgres | | psql | select pg_sleep(100000); | Timeout | (1 ligne)

Sécurité renforcée en mode batch (collecte des données)

      L'utilisation de plpython rend complexe et même dangereux d'autoriser l'exécution de la collecte des informations en mode batch par des utilisateurs non superuser.
      La collecte doit être exécutée localement sur le serveur par un superuser. Il convient de manière générale d'interdire (ou au moins de restreindre au strict nécessaire) TOUS les accès superuser distants.
      Dans ces conditions, "postgres" qui est à la fois un utilisateur Unix et un superuser PostgreSQL peut être utilisé pour faire tourner le traqueur localement.

Sécurité renforcée en mode batch (présentation des résultats)

      Analyser l'activité avec le traqueur tournant en mode batch ne nécessite ni accès SUPERUSER distant, ni rôle pg_monitor ni accès aux tables du catalogue. Les seuls privilèges requis sont ceux permettant de lire les tables du traqueur. Il faut noter que ces tables peuvent être stockées dans une base d'un cluster distinct du cluster à analyser si l'option -b F a été utilisée. Exemple :

-- connecte postgres psql -d traqueur create user traqueur_dashboard password 'trqd01300'; CREATE ROLE grant connect on database traqueur to traqueur_dashboard; GRANT grant usage on schema traqueur to traqueur_dashboard; GRANT grant select on all tables in schema traqueur to traqueur_dashboard; GRANT alter default privileges in schema traqueur grant select on tables to traqueur_dashboard; ALTER DEFAULT PRIVILEGES alter role traqueur_dashboard set search_path=traqueur; ALTER ROLE -- l'utilisateur traqueur_dashboard peut ensuite etre utilisé pour afficher et analyser l'activité en mode graphique avec grafana, en mode texte avec l'option -r du traqueur etc. -- il est possible de creer des vues etc. afin de restreindre davantage l'acces aux informations -- les requetes stockees dans la colonne query de traqueur_sessions_actives peuvent notamment contenir des donnees utilisateur

Mise à jour : 18/09/2019