From a6d70321a01152ca7910ee0c210d9e9de0ece00f Mon Sep 17 00:00:00 2001 From: Tallagrand Thierry Date: Sun, 13 Sep 2026 17:21:58 +0200 Subject: [PATCH] evcs_lecture n est pas en lecture seule, contrairement a ce que j ecrivais MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Verification des droits reels : SELECT sur toutes les tables, plus INSERT sur `evenement` — un octroi deliberé et documente plus haut dans ce meme README (les annotations qu aucun service ne peut deviner s ecrivent a la main), mais que deux autres passages decrivaient comme « lecture seule ». Je l ai moi-meme affirme a un pair qui prepare un acces pour un agent externe. La consequence est concrete : confier ce role a un tiers lui donnerait l ecriture sur le journal qui alimente les annotations Grafana, le rapport de nuit et l attribution des transitions — et ses lignes y seraient indiscernables des notres. Pour un tiers : un role dedie, SELECT sur les seules tables necessaires. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj --- deploy/historisation/README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/deploy/historisation/README.md b/deploy/historisation/README.md index 29031f2..8e36005 100644 --- a/deploy/historisation/README.md +++ b/deploy/historisation/README.md @@ -152,7 +152,7 @@ qu'on attend d'un journal, et ça laisse les tables de mesure hors de portée. sudo bash creer-role-lecture.sh ``` -Crée le rôle `evcs_lecture` en **lecture seule** et dépose son mot de passe dans +Crée le rôle `evcs_lecture` et dépose son mot de passe dans le `.env` à la racine du dépôt. Le mot de passe est généré, jamais choisi, et **n'est pas affiché** : il va du générateur au fichier, donc rien à recopier et rien à exposer dans une capture. @@ -286,7 +286,23 @@ quel tableau de bord en crée une copie personnelle et modifiable. Il ne **stocke** rien : il interroge les deux bases à la demande. Le perdre ne perd aucune mesure. Il n'écrit rien non plus — sa connexion PostgreSQL utilise -le rôle `evcs_lecture`, en lecture seule. +le rôle `evcs_lecture`. + +⚠️ **`evcs_lecture` N'EST PLUS EN LECTURE SEULE**, et ce README l'a longtemps +écrit à tort. Il porte un `INSERT` sur `evenement` (voir plus haut, annotations +manuelles) : SELECT partout, plus INSERT sur cette seule table. Vérifiable : + +```sh +psql -U evcs_lecture -d evcs -c "select table_name, privilege_type + from information_schema.table_privileges where grantee='evcs_lecture'" +``` + +Conséquence pratique : **ne pas confier ce rôle à un tiers** — un agent, un +service externe, un tableau de bord hébergé ailleurs. Le journal `evenement` +alimente les annotations Grafana, le rapport de nuit et l'attribution des +transitions ; une écriture venue d'ailleurs y serait indiscernable d'une nôtre. +Pour un tiers, créer un rôle dédié avec `SELECT` sur les seules tables dont il +a besoin. ### ⚠️ Ce que `--dry-run` ne peut pas vérifier