Set-OPS-Public/roles
Daniel Allaire dea7769ff3 keycloak : verifier la signature PGP contre une empreinte epinglee
« J'ai besoin d'une confiance reelle. Keycloak est probablement l'element le
plus dangereux de cet ecosysteme. » C'est exact : il signe les jetons de TOUT
l'ecosysteme, une archive substituee la et l'identite entiere tombe.

CORRECTION D'ABORD. J'avais ecrit que Keycloak ne publie aucune somme de
controle. Faux, et l'exploitant l'a releve. Mesure : .sha1 et .md5 existaient
jusqu'a 26.6.2 puis ont disparu a partir de 26.7.0 ; le .asc, lui, est present
sur toutes les versions — et je l'avais rate, sans meme le chercher. Une somme
prouve qu'un fichier n'est pas corrompu ; une signature prouve QUI l'a produit.

ETABLI : la meme cle 861AB50E...6FD6EEBA a signe 26.0.7 (alors en production),
26.3.0, 26.6.2 et 26.7.1. NON ETABLI : aucune source independante ne publie
cette empreinte — ni keycloak.org, ni SECURITY.md, ni un fichier KEYS ; absente
de keys.openpgp.org, trouvee sur keyserver.ubuntu.com qui n'est pas une
autorite. On prouve la continuite, pas l'origine. L'ancre reste une decision
humaine — desormais ecrite, versionnee, et verifiee a chaque telechargement.

scripts/verifier_signature.py impose trois choses, chacune contre un
contournement precis : la cle publique vit DANS LE DEPOT (aucun serveur de
cles au deploiement) ; l'empreinte est EPINGLEE, donc une rotation amont
devient un echec bruyant ; trousseau JETABLE, donc le resultat ne depend pas
du trousseau personnel. Il lit VALIDSIG et compare l'empreinte du signataire
REEL — « bonne signature » seule laisserait passer une signature valide faite
par une autre cle du trousseau.

Eprouve sur cinq cas : nominal 0 ; artefact altere d'un octet 1 ; empreinte
differente 1 ; cle du depot corrompue 1 ; signature absente 1.

Ce que ca ne prouve PAS : que l'empreinte epinglee soit la bonne. Aucune
machine ne peut l'etablir ; le script garantit qu'on ne s'en ecarte plus sans
le voir.

Verifie : role applique de bout en bout sur idm-01, ansible-lint production,
prouver.py 35 OK.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:35:32 -04:00
..
amorcage_acces identite : une declaration de politique de mot de passe, deux executants 2026-08-08 06:28:10 -04:00
apparmor Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
auditd Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
chrony Découplage instance : realm centralisé + vars génériques 2026-07-05 00:47:44 -04:00
client_backup docs : un README par rôle (12 manquants) + carte remise à l'état du code 2026-07-29 11:32:06 -04:00
client_journal get_url : plus aucun sans garde — la dependance externe tombe a zero 2026-08-09 14:05:25 -04:00
client_metrique metriques : node_exporter mourait a chaque renouvellement de certificat 2026-08-09 14:14:16 -04:00
client_pki get_url : plus aucun sans garde — la dependance externe tombe a zero 2026-08-09 14:05:25 -04:00
client_smtp Reconstruction propre : orchestrateur ordonné, registre des flux + pare-feu 2026-07-07 03:08:09 -04:00
client_unbound client_unbound : survivre a la perte de connexion sans la masquer 2026-08-09 11:55:41 -04:00
cloud_init Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
common_packages deploiement : deux attentes de premier demarrage, et trois defauts leves 2026-08-07 09:30:48 -04:00
core_dumps Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
fail2ban_ssh Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
hardening_packages Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
hosts_statiques docs : un README par rôle (12 manquants) + carte remise à l'état du code 2026-07-29 11:32:06 -04:00
journald Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
motd Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
nftables_baseline Reconstruction propre : orchestrateur ordonné, registre des flux + pare-feu 2026-07-07 03:08:09 -04:00
qemu_guest_agent Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
resoudre_annuaire annuaire : l'hote se derive du plan, il ne s'ecrit plus 2026-08-07 12:46:48 -04:00
resoudre_base deploiement : deux attentes de premier demarrage, et trois defauts leves 2026-08-07 09:30:48 -04:00
resoudre_idp resoudre_idp : le nom invente etait dans QUATRE roles 2026-08-07 15:33:32 -04:00
resoudre_politique_mdp identite : une declaration de politique de mot de passe, deux executants 2026-08-08 06:28:10 -04:00
serveur_backup P33 / D-73 : aucune collision de port entre roles co-localises 2026-08-09 09:46:17 -04:00
serveur_collabora empreintes muettes, courses de premier demarrage, collision de noms 2026-08-07 16:22:38 -04:00
serveur_debian authentification : chaque rôle déclare sa position, gardé par P29 2026-08-03 17:05:43 -04:00
serveur_dovecot courriel : routage local par identifiant, et la livraison interne remise en marche 2026-08-08 09:42:45 -04:00
serveur_forgejo artefacts : le controleur telecharge et pousse, la cible ne tire plus 2026-08-10 20:58:58 -04:00
serveur_grafana keycloak : un jeton frais la ou on s'en sert ; grafana : un echec lisible 2026-08-10 20:19:50 -04:00
serveur_icinga get_url : plus aucun sans garde — la dependance externe tombe a zero 2026-08-09 14:05:25 -04:00
serveur_icingaweb2 icingaweb2 : habilitation par groupe d'annuaire, plus par liste d'uid 2026-08-07 19:54:41 -04:00
serveur_keycloak keycloak : verifier la signature PGP contre une empreinte epinglee 2026-08-10 23:35:32 -04:00
serveur_loki get_url : plus aucun sans garde — la dependance externe tombe a zero 2026-08-09 14:05:25 -04:00
serveur_nextcloud nextcloud : epingle 34.0.2 (correctif amont) 2026-08-10 23:12:19 -04:00
serveur_nginx nginx : dimensionner les tampons d'en-tetes pour les sessions OIDC 2026-08-08 11:06:05 -04:00
serveur_oauth2_proxy artefacts : le controleur telecharge et pousse, la cible ne tire plus 2026-08-10 20:58:58 -04:00
serveur_openldap identite : une declaration de politique de mot de passe, deux executants 2026-08-08 06:28:10 -04:00
serveur_postfix frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
serveur_postgresql authentification : chaque rôle déclare sa position, gardé par P29 2026-08-03 17:05:43 -04:00
serveur_powerdns D-71 : PKI et DNS debout avant tout, et la zone inverse manquait 2026-08-08 15:29:57 -04:00
serveur_prometheus idempotence : Prometheus trie ses cibles, Forgejo conserve son secret JWT 2026-08-09 14:44:03 -04:00
serveur_redis authentification : chaque rôle déclare sa position, gardé par P29 2026-08-03 17:05:43 -04:00
serveur_rspamd authentification : chaque rôle déclare sa position, gardé par P29 2026-08-03 17:05:43 -04:00
serveur_step_ca get_url : plus aucun sans garde — la dependance externe tombe a zero 2026-08-09 14:05:25 -04:00
serveur_web_dorsal empreintes muettes, courses de premier demarrage, collision de noms 2026-08-07 16:22:38 -04:00
serveur_web_frontal empreintes muettes, courses de premier demarrage, collision de noms 2026-08-07 16:22:38 -04:00
ssh_baseline Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
ssh_hardening reconstruction complete sans echec, et correction : ssh_hardening declarait deja 2026-08-09 13:45:24 -04:00
sudo_ansible Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
sysctl_hardening Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
systemd_ssh_auto Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
template_cleanup gabarit recapture : copie de travail preparee, nettoyee, convertie 2026-08-09 11:29:51 -04:00
unattended_upgrades Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00