fix(db): moindre privilege pour le user applicatif (drop GRANT ALL) #24
No reviewers
Labels
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: AcadeNice/corentin_wakdo#24
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/db-least-privilege"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding MEDIUM (audit 2026-06-16)
Le user applicatif
wakdoavaitGRANT ALL PRIVILEGES ON wakdo.*(comportement par defaut de l'image quand MARIADB_USER est defini), alors que la doc (compose + backup-db.sh) decrivait un moindre privilege jamais applique. Le code back-office expose tournait donc avec DDL/DROP/GRANT inutiles (les migrations tournent en root, pas avec ce user).Correctif
db/init/10-scope-app-user.sh: script d'init MariaDB execute sur volume vierge (/docker-entrypoint-initdb.d). REVOKE ALL puis GRANT le set restreint :SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, TRIGGER, LOCK TABLESsur la base (DML applicatif + besoinsmysqldump). Parametre surMARIADB_USER/MARIADB_DATABASE. Sans DDL, sans GRANT OPTION, sans DROP.docker-compose.yml: montage de./db/initen initdb.d (ro).backup-db.sh: commentaire aligne sur le set reel.Verification
SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, SHOW VIEW, TRIGGER(plus de ALL PRIVILEGES)./api/health= 200 (SELECT) et les 13 tests d'integration passent (DML create/update/delete en tant quewakdo).Note : la base dev existante a ete scopee manuellement (le script init ne rejoue pas sur un volume deja initialise). Pas de label auto-merge.