evcs_lecture n est pas en lecture seule, contrairement a ce que j ecrivais

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
Tallagrand Thierry
2026-09-13 17:21:58 +02:00
parent 095d86d146
commit a6d70321a0

View File

@@ -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 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 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 **n'est pas affiché** : il va du générateur au fichier, donc rien à recopier et
rien à exposer dans une capture. 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 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 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 ### ⚠️ Ce que `--dry-run` ne peut pas vérifier