docs(openbao) : la métadonnée d'un secret_id ne dit pas si c'est un conteneur #39

Merged
thystips merged 1 commit from docs/approle-metadata-does-not-say-container into main 2026-08-14 21:40:05 +02:00
Owner

Ce que la page disait, et pourquoi c'est dangereux

Le README du rôle openbao décrit le dernier geste du démontage des coffres de nœuds : révoquer sur ca1 les quatre secret_id de l'AppRole dn42-node-cert qui appartenaient aux nœuds. Il affirmait qu'ils étaient « distinguables de ceux des conteneurs par leur métadonnée, écrite à l'amorçage ».

Ils ne le sont pas. La métadonnée ne porte que {"node": "fr-rbx1"} — rien sur la nature de l'hôte. Il y a huit accessors pour quatre nœuds, et chaque nœud apparaît donc deux fois :

08097782-…  {"md":{"node":"fr-rbx1"},"cidr":[],"created":"2026-08-07T21:59:22Z"}
57d3c9ff-…  {"md":{"node":"fr-rbx1"},"cidr":[],"created":"2026-08-09T21:40:04Z"}

Suivre la phrase à la lettre revient à choisir au hasard entre les deux. Et la panne est silencieuse : le certificat en place reste valide, l'erreur n'apparaît qu'au renouvellement suivant, 90 jours plus tard, loin de sa cause.

Ce qui apparie réellement

La date de création côté ca1 et le mtime du fichier secret-id du conteneur, à quelques secondes l'un de l'autre et dans le même ordre :

ca1 (création) conteneur (mtime du fichier)
bod2 21:40:03.264 21:40:07.806
bod1 21:40:03.285 21:40:07.915
rbx2 21:40:04.142 21:40:10.902
rbx1 21:40:04.080 21:40:10.979

Les quatre autres datent du 07/08 entre 21:59 et 22:08, espacés de plusieurs minutes — l'amorçage manuel nœud par nœud, dix minutes après le merge de la #12. Ce sont eux, les nœuds.

⚠ La seule chronologie git n'aurait pas suffi à trancher : les secret_id du 09/08 sont antérieurs au commit qui pose le coffre en conteneur (263d98f, 23:30). Ils ont été émis pendant les essais, avant le merge. C'est le mtime sur les conteneurs qui fait la preuve, pas l'historique.

Ce que la page gagne

  • la commande de tri qui affiche les huit d'un coup, et son pendant côté dépôt (ansible container_openbao -m raw -a "stat …")
  • le contrôle d'après-destruction : redémarrer openbao-cert-agent sur un conteneur et vérifier qu'il obtient toujours un certificat. C'est ce qui ramène la détection de l'erreur de 90 jours à une minute
  • une note sur le cidr_list vide de ces secret_id, là où le cluster DN42 restreint. C'est ce qui a fait que le renumérotage des conteneurs des 13-14/08 n'a rien cassé côté ca1 — commodité d'un côté, faiblesse de l'autre. Signalé comme une différence de posture entre les deux coffres qui n'a jamais été tranchée, pas corrigé ici.

Portée

Documentation seule, aucun changement de comportement. Indépendante de la #38 : branchée sur main, elle ne touche aucun fichier qu'elle modifie.

./.ci/lint.sh : OK: every available check passed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FGwvXLVXJ2PrRFwJTB3Xp9

## Ce que la page disait, et pourquoi c'est dangereux Le README du rôle `openbao` décrit le dernier geste du démontage des coffres de nœuds : révoquer sur `ca1` les quatre `secret_id` de l'AppRole `dn42-node-cert` qui appartenaient aux **nœuds**. Il affirmait qu'ils étaient *« distinguables de ceux des conteneurs par leur métadonnée, écrite à l'amorçage »*. Ils ne le sont pas. La métadonnée ne porte que `{"node": "fr-rbx1"}` — rien sur la nature de l'hôte. Il y a **huit** accessors pour quatre nœuds, et chaque nœud apparaît donc **deux fois** : ``` 08097782-… {"md":{"node":"fr-rbx1"},"cidr":[],"created":"2026-08-07T21:59:22Z"} 57d3c9ff-… {"md":{"node":"fr-rbx1"},"cidr":[],"created":"2026-08-09T21:40:04Z"} ``` Suivre la phrase à la lettre revient à choisir au hasard entre les deux. Et la panne est silencieuse : le certificat en place reste valide, l'erreur n'apparaît qu'au renouvellement suivant, **90 jours plus tard**, loin de sa cause. ## Ce qui apparie réellement La date de création côté `ca1` et le `mtime` du fichier `secret-id` du conteneur, à quelques secondes l'un de l'autre et dans le même ordre : | | `ca1` (création) | conteneur (`mtime` du fichier) | |---|---|---| | bod2 | 21:40:03.264 | 21:40:07.806 | | bod1 | 21:40:03.285 | 21:40:07.915 | | rbx2 | 21:40:04.142 | 21:40:10.902 | | rbx1 | 21:40:04.080 | 21:40:10.979 | Les quatre autres datent du 07/08 entre 21:59 et 22:08, espacés de plusieurs minutes — l'amorçage manuel nœud par nœud, dix minutes après le merge de la #12. Ce sont eux, les nœuds. ⚠ La seule chronologie git n'aurait pas suffi à trancher : les `secret_id` du 09/08 sont **antérieurs** au commit qui pose le coffre en conteneur (`263d98f`, 23:30). Ils ont été émis pendant les essais, avant le merge. C'est le `mtime` sur les conteneurs qui fait la preuve, pas l'historique. ## Ce que la page gagne - la commande de tri qui affiche les huit d'un coup, et son pendant côté dépôt (`ansible container_openbao -m raw -a "stat …"`) - **le contrôle d'après-destruction** : redémarrer `openbao-cert-agent` sur un conteneur et vérifier qu'il obtient toujours un certificat. C'est ce qui ramène la détection de l'erreur de 90 jours à une minute - une note sur le `cidr_list` **vide** de ces `secret_id`, là où le cluster DN42 restreint. C'est ce qui a fait que le renumérotage des conteneurs des 13-14/08 n'a rien cassé côté `ca1` — commodité d'un côté, faiblesse de l'autre. Signalé comme une différence de posture entre les deux coffres qui n'a jamais été tranchée, **pas corrigé ici**. ## Portée Documentation seule, aucun changement de comportement. Indépendante de la #38 : branchée sur `main`, elle ne touche aucun fichier qu'elle modifie. `./.ci/lint.sh` : `OK: every available check passed`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01FGwvXLVXJ2PrRFwJTB3Xp9
Le README affirmait que les secret_id des nœuds étaient distinguables de ceux
des conteneurs par leur métadonnée. Ils ne le sont pas : elle ne porte que
`{"node": …}`, donc chaque nœud apparaît deux fois dans la liste des accessors.
Une révocation faite sur cette phrase détruit un accessor sur deux au hasard,
et la panne n'apparaît qu'au renouvellement suivant, 90 jours plus tard.

Ce qui apparie réellement est la date de création côté ca1 et le mtime du
fichier secret-id du conteneur, à quelques secondes l'un de l'autre et dans le
même ordre. La commande de tri et le contrôle d'après-destruction remplacent la
phrase fausse.

Au passage : le cidr_list de ces secret_id est vide, là où le cluster DN42
restreint. C'est ce qui a fait que le renumérotage des conteneurs n'a rien
cassé côté ca1 — noté comme une différence de posture non tranchée, pas
corrigé ici.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGwvXLVXJ2PrRFwJTB3Xp9
thystips deleted branch docs/approle-metadata-does-not-say-container 2026-08-14 21:40:05 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ThysTips_dn42/infra-dn42!39
No description provided.