Set-OPS-Public/roles/client_pki/meta/integration.yml

30 lines
1.8 KiB
YAML
Raw Normal View History

intégrations : le rôle déclare sa politique ; le cluster passe à l'hébergeur Deux corrections de propriété, l'une dans le plan, l'autre dans les intrants. 1. Intégrations universelles (D-33/D-34, P26) Le plan portait 57 lignes d'intégration écrites à la main, dont 28 disaient oui à quelque chose de vrai pour tous les hôtes. Elles n'existaient que pour être oubliées — et elles l'avaient été : dans Chezlepro, backup-01 et infra-pki-01 n'étaient ni supervisés, ni journalisés, ni certifiés. Le rôle déclare désormais sa politique une fois, dans meta/integration.yml ; le plan ne garde que les vrais choix et refuse la recopie. Les exemptions se dérivent du service rendu (sauf_role), jamais d'un nom d'hôte : l'AC ne s'enrôle pas auprès d'elle-même, et l'exemption suit step-ca si on le déplace. Une seule fonction de résolution — integrations_de() — lue par l'inventaire, la voûte et le panneau. Sans le passage par la voûte, les secrets des intégrations universelles auraient cessé d'être exigés et P18 serait passé au vert sur une voûte incomplète. Vérifié : diff vide sur Technolibre (la politique reproduit exactement les 41 lignes retirées) ; sur Chezlepro, exactement les groupes manquants, et pas client_pki sur infra-pki-01. 2. Vue Intégrations : la matrice La fiche montrait les intégrations d'UN serveur ; le trou de Chezlepro n'a pas été trouvé par le panneau mais par le devis de pare-feu. Matrice serveurs x intégrations : colonnes de politique en lecture seule, facultatives cochables sur place, ligne de couverture n/N qui rend le motif visible sans le juger. 3. Propriété des intrants (D-35/D-36, P27) Le cluster Proxmox appartient à l'hébergeur, comme sa fabric et sa frontière. Recopié chez chaque tenant, son inventaire avait déjà divergé : deux listes de stockages contradictoires pour le même matériel. API/nœuds/stockages/ponts vont dans proxmox-hebergeur.yml, à côté d'underlay.yml, dont le chemin se dérive — l'hébergeur reste non déclaré (D-17). Restent au tenant son golden template et ses défauts de placement. Le panneau nomme désormais le propriétaire de chaque section : éditer une section « hébergeur » vaut pour tous ses tenants, et l'écran ne le disait pas. 26 preuves OK, 0 échec. --syntax-check des deux playbooks Proxmox. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 14:09:22 -04:00
---
# Politique d'integration. Voir roles/client_metrique/meta/integration.yml pour le
# raisonnement, et docs/decisions-architecture.md (D-33).
integration:
site : quatre zones d'autorite, et l'ordre inscrit dans les integrations Le site n'est plus un /24 plat. Une zone par nature d'autorite — pilotage, autorite, genome, service — chacune son VLAN et sa patte sur la frontiere. L'inversion corrigee, mesuree : les cinq VM du site n'avaient AUCUN filtrage est-ouest, contre policy_in=DROP sur une machine de tenant. La plus autoritaire etait la moins protegee. Filtrage nord-sud par choix de l'exploitant : un seul point de police, un seul devis. 90 -> 117 regles. Chaque flux `flotte` produit une regle par zone SOURCE, destination nommee — ce qui etait gratuit devient police. L'ORDRE FAIT PARTIE DE L'INTEGRATION. client_pki tournait en parallele sur tous les hotes ; sur celui qui porte l'autorite il recharge step-ca, et les quatre autres echouaient dans cette fenetre sur `TLS handshake timeout` — un message qui accuse le reseau. Chaque integration declare desormais sa dependance dans meta/integration.yml, les playbooks en sont le miroir genere, et P44 refuse l'ecart (4 controles negatifs). `serveur: ~` est une reponse valable : client_metrique pose un exportateur qu'on vient LIRE. Autres defauts du meme soir : - le plancher /etc/hosts venait APRES le premier apt, qui vise le cache par son NOM : boucle fermee des que les adresses changent. Il ne s'installe pas, il rend installable. - dns_amorcage ecrit en dur a eu tort deux fois ; il se derive de serveur_resolveur. - l'ACL du resolveur derivait d'un seul sous-reseau : trois zones refusees sur quatre. ET UNE ERREUR A MOI : j'ai diagnostique un trou noir de MTU et declare 1450. Faux — pas de VXLAN sur ce chemin, tout est a 1500 de bout en bout. Ma mesure etait reelle, mon interpretation non : je venais de debrancher la carte a chaud, et chaque `ip link set mtu` reconfigurait l'interface. C'est la reconfiguration qui debloquait, pas la valeur. 44 preuves vertes, ansible-lint profil production. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 17:31:07 -04:00
# DE QUI CETTE INTEGRATION DEPEND, ET POURQUOI L'ORDRE COMPTE.
#
# L'AC doit exister ET repondre avant qu'un hote lui demande un certificat. Sur l'hote
# qui la porte, le role recharge `step-ca` en reemettant son propre certificat :
# pendant cette fenetre, elle ne repond plus. Mesure du 2026-08-25 : quatre clients en
# echec simultane, message `TLS handshake timeout` — qui accuse le reseau, pas l'ordre.
#
# Le playbook de groupe applique l'hote qui porte ce serveur AVANT ceux qui s'y
# adressent, et la preuve P44 refuse tout ecart entre cette declaration et lui.
serveur: serveur_step_ca
intégrations : le rôle déclare sa politique ; le cluster passe à l'hébergeur Deux corrections de propriété, l'une dans le plan, l'autre dans les intrants. 1. Intégrations universelles (D-33/D-34, P26) Le plan portait 57 lignes d'intégration écrites à la main, dont 28 disaient oui à quelque chose de vrai pour tous les hôtes. Elles n'existaient que pour être oubliées — et elles l'avaient été : dans Chezlepro, backup-01 et infra-pki-01 n'étaient ni supervisés, ni journalisés, ni certifiés. Le rôle déclare désormais sa politique une fois, dans meta/integration.yml ; le plan ne garde que les vrais choix et refuse la recopie. Les exemptions se dérivent du service rendu (sauf_role), jamais d'un nom d'hôte : l'AC ne s'enrôle pas auprès d'elle-même, et l'exemption suit step-ca si on le déplace. Une seule fonction de résolution — integrations_de() — lue par l'inventaire, la voûte et le panneau. Sans le passage par la voûte, les secrets des intégrations universelles auraient cessé d'être exigés et P18 serait passé au vert sur une voûte incomplète. Vérifié : diff vide sur Technolibre (la politique reproduit exactement les 41 lignes retirées) ; sur Chezlepro, exactement les groupes manquants, et pas client_pki sur infra-pki-01. 2. Vue Intégrations : la matrice La fiche montrait les intégrations d'UN serveur ; le trou de Chezlepro n'a pas été trouvé par le panneau mais par le devis de pare-feu. Matrice serveurs x intégrations : colonnes de politique en lecture seule, facultatives cochables sur place, ligne de couverture n/N qui rend le motif visible sans le juger. 3. Propriété des intrants (D-35/D-36, P27) Le cluster Proxmox appartient à l'hébergeur, comme sa fabric et sa frontière. Recopié chez chaque tenant, son inventaire avait déjà divergé : deux listes de stockages contradictoires pour le même matériel. API/nœuds/stockages/ponts vont dans proxmox-hebergeur.yml, à côté d'underlay.yml, dont le chemin se dérive — l'hébergeur reste non déclaré (D-17). Restent au tenant son golden template et ses défauts de placement. Le panneau nomme désormais le propriétaire de chaque section : éditer une section « hébergeur » vaut pour tous ses tenants, et l'écran ne le disait pas. 26 preuves OK, 0 échec. --syntax-check des deux playbooks Proxmox. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 14:09:22 -04:00
universelle: true
raison: >-
Tout hote fait confiance a l'AC interne et porte un certificat : c'est le
prerequis du chiffrement est-ouest (voir docs/zero-confiance.md). Un hote sans
certificat ne peut ni presenter ni verifier — il retombe en clair en silence.
# AUCUNE exemption, et l'autorite non plus. Elle ne s'ENROLE pas aupres d'elle-meme —
# sa racine est deja sur son disque — mais elle a besoin de CERTIFICATS comme tout le
# monde : sans eux, ses propres services restent en clair et `client_metrique` echoue
# sur la seule machine qu'on ne peut pas se permettre de ne pas mesurer.
#
# Le role distingue donc les deux : bootstrap pour les autres, EMISSION LOCALE sur
# l'AC (voir tasks/main.yml). Exempter l'hote entier confondait « ne pas s'enroler »
# avec « ne pas avoir de certificat », et laissait un angle mort au coeur du systeme.
# Constate le 2026-08-06 : `client_pki` exemptait l'AC, `client_metrique` exigeait un
# certificat, et les deux politiques avaient raison separement.