Cree uid=sysadmin et cn=sysadmin dans LDAP. Prouve sur idm-01 : le compte
s'authentifie, et le second passage ne touche a rien (changed=0, 7 taches
sautees) — idempotence par EXISTENCE, pas par conformite (D-67).
Il suit l'annuaire au lieu de se declarer au plan : il ecrit par `ldapi:///` et
doit tourner sur cet hote. Le declarer comme groupe obligerait chaque instance a
le poser sur le bon hote, et elles ne le nomment pas pareil (idm-01 ici,
id-ldap-01 chez Technolibre) — je l'ai d'abord pose sur infra-pki-01 par erreur.
Trois defauts trouves en le construisant :
1. `pwdReset` n'existe pas dans ce schema (overlay ppolicy non charge) :
l'entree entiere etait rejetee et `no_log` masquait la cause. J'avais suppose
un mecanisme sans verifier. Le role le DETECTE maintenant, et la doctrine ne
promet plus un changement force qui n'a pas lieu.
2. Le mot de passe aurait ete stocke EN CLAIR : `ldap_entry` ecrit userPassword
litteralement. Hache par `slappasswd -h {SSHA}` desormais.
3. `voute.py` ne scannait que roles/<groupe> : un role applique par un playbook
sans etre un groupe echappait au recensement, ce que D-20 interdit. Il suit
maintenant les listes `roles:` des playbooks.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1.8 KiB
amorcage_acces — l'accès initial du sysadmin
Crée un compte (uid=sysadmin) et un groupe (cn=sysadmin) dans LDAP, une
seule fois, pour que l'exploitant puisse prendre la main. Puis se retire.
Ce qu'il ne fait pas
Ce n'est pas un gestionnaire de comptes. Après son passage, créer, suspendre ou
réaffecter relève d'une personne — pas du dépôt (D-67, docs/autorisation.md).
Idempotence par existence, pas par conformité
C'est ce qui distingue ce rôle de tous les autres du dépôt.
compte absent → créé, secret généré en voûte, changement forcé
compte présent → AUCUNE action, quel que soit son état
Un compte présent est laissé strictement intact : ni mot de passe, ni groupes, ni attributs. Il a pu être renommé, promu, déplacé — c'est le droit de celui qui exploite.
Partout ailleurs dans Set-OPS, un écart entre le déclaré et le réel est un défaut à corriger. Ici, l'écart est le travail du sysadmin. Réconcilier effacerait le compte créé la veille pour un nouvel employé.
Le secret d'amorçage
vault_sysadmin_amorcage est généré — le dépôt en est la source, puisque personne
n'existe encore pour le choisir. Mais ce n'est jamais le mot de passe de quelqu'un :
pwdReset impose son changement à la première ouverture.
Sans ce changement, l'auteur du déploiement connaîtrait le mot de passe du sysadmin.
Où il s'exécute
Sur l'hôte qui porte serveur_openldap — il écrit par ldapi:///, socket locale. La
connexion à l'annuaire est dérivée par resoudre_annuaire, jamais écrite.
Après
docs/autorisation.md §6 est le runbook de reprise : où administrer quoi, comment se
rouvrir si on se ferme dehors, et ce qu'il faut régénérer pour que la livraison soit un
vrai transfert.