feat(ca): provenance des décisions RA et des révocations (R-1) - #58
Open
PhilippeVienne wants to merge 1 commit into
Open
PhilippeVienne wants to merge 1 commit into
PhilippeVienne wants to merge 1 commit into
Conversation
Constat R-1 de l'audit du 2026-09-25 (EN 319 411-1 GEN-6.5.5-04, CSS-6.5.5-06 ; EN 319 401 REQ-7.4.1-11/-12) et docs/WEBUI.md §20 : le CLI reste la voie de secours, mais ses décisions ne se distinguaient pas des décisions signées. - oe-ca-core : nouveau module provenance (Via : WebAuthn, Cli, Automatic ; SystemIdentity relevée par le système : UID réel, utilisateur, hôte). Issuer::revoke prend la voie en paramètre, fixée par l'appelant. - oe-raflow : Decider::approve|reject aussi ; la révocation superseded du renouvellement est Via::Automatic. - Journal : `authenticated_via` (webauthn|cli|automatique) sur ca.request_approved|rejected et ca.certificate_revoked ; pour le CLI, `identite_systeme` marquée `authentifiee: false`. - Voie de secours : commentaire obligatoire (clap et bibliothèque), refusé avant toute écriture. - oe-actions et le Revoker de ca-server : Via::WebAuthn. Co-authored-by: Claude <noreply@anthropic.com>
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objet
Constat R-1 de l'audit du 2026-09-25 (EN 319 411-1
GEN-6.5.5-04,CSS-6.5.5-06,REG-6.3.2-01; EN 319 401REQ-7.4.1-05/-11/-12), tranche B du découpage validé (A : #57 → B : cette PR → C : revue a posteriori). Basedev.Décision de l'utilisateur, conforme à
docs/WEBUI.md§20 : le CLIra approve|reject/revokereste comme voie de secours (une panne dera-consolene doit jamais empêcher une révocation d'urgence), sans PIN ; ses décisions sont désormais distinguées et tracées, pas reconstruites après coup.oe_ca_core::provenance:Via(WebAuthn,Cli(SystemIdentity),Automatic) ;SystemIdentity::current()relève l'UID réel (/proc/self/status), le nom d'utilisateur (/etc/passwd) et l'hôte (nom du pod sous Kubernetes). Ce qui ne peut être lu reste vide.Issuer::revoke(…, via),Decider::approve|reject(…, via). CLI →Via::Cli;oe-actionset leRevokerdeca-server(branché sur la seule action signée) →Via::WebAuthn; révocationsupersededdu renouvellement →Via::Automatic.ca.request_approved|rejectedetca.certificate_revokedgagnent"authenticated_via": "webauthn"|"cli"|"automatique"(nom de §20) ; pour le CLI,"identite_systeme": {"authentifiee": false, "uid", "utilisateur", "hote"}.clapet par la bibliothèque, avant toute écriture (la demande restePENDING, le certificat reste émis).docs/CA.md: voie de secours, champs du journal, et le fait que derrièrekubectl execla personne n'apparaît que dans le journal d'audit de l'API Kubernetes (le contrôle réel est le RBACexec).Limites et ordre de merge
ra-autoapprovepassent par le CLI : elles sont consignéescliavec le nom de son pod, ce qui est exact.Issuer,main.rsetissuance.rs. Celle qui est mergée en second devra être rebasée ; après feat(ca): révocation de l'autorité émettrice et ARL de la racine (C-1) #56,ca.authority_revoked(RootAuthority::revoke_authority, CLI uniquement) recevra la même annotationVia::Cli— non fait ici, le code n'existe pas encore surdev.cli(décision O4) est la tranche C.Vérifications
cargo fmt --check,cargo clippy --workspace --all-targets -- -D warnings(1.97 et 1.98.1),cargo test --workspaceavec PostgreSQL,cargo audit --ignore RUSTSEC-2023-0071: verts.each_decision_records_how_its_operator_was_identified(les trois voies au journal, dontautomatiquesur un vrai renouvellement),a_cli_decision_without_a_comment_is_refused_before_the_request_changes,a_cli_revocation_without_a_comment_is_refused_before_the_store_is_touched, tests unitaires deprovenance.check_commentdansDeciderou dansIssuer::revoke, sansannotate, etVia::Automaticremplacé parWebAuthnau renouvellement.ca-server ra approve <tx> <op>sans commentaire : refusé parclap.Revue humaine obligatoire
Voir PROVENANCE.md. Chaque case est cochée par le
contributeur humain qui valide la PR, après l'avoir fait lui-même.
make licenses)Assistance par IA
Co-authored-by: Claude <noreply@anthropic.com>, auteur et committer restent humains, etscripts/provenance.py archivea été lancé