feat(deploy): image, chart Helm et surcouche compose de ra-console - #68
Open
PhilippeVienne wants to merge 2 commits into
Open
PhilippeVienne wants to merge 2 commits into
PhilippeVienne wants to merge 2 commits into
Conversation
TODO §1, docs/WEBUI.md §16-17 : ra-console devient déployable, sans changement de son code. - Image deploy/ra-console/Dockerfile, construite avec `-p ra-console` seul (cryptoki non lié, garde no_pkcs11.rs), sans SoftHSM ; ajoutée aux matrices de construction/scan et de publication de la CI. La vérification de démarrage accepte `--version` (la console n'a ni PIN ni sous-commande `version`). - Entrypoint : au premier démarrage, certificat de la CA émettrice (/api/v1/ca.pem, conservé) puis certificat client internal_client (`ra-console internal-cert`, attend l'approbation). - Helm, désactivé par défaut (raConsole.enabled) et refusé au rendu sans ca.internal.enabled : Deployment (volume d'état, sondes), Service, HTTPRoute optionnelle, NetworkPolicy (entrée : namespace de la Gateway seul ; sortie : DNS, PostgreSQL, CA), Job hook post-install/post-upgrade qui applique ra_console_grants.sql (copie dans files/, identité vérifiée par la CI) : les identifiants d'administration de la base n'entrent jamais dans le pod de la console. Réutilise la Relying Party WebAuthn et la liste blanche de la CA. Deux clés au Secret généré. - docker-compose.console.yml : surcouche opt-in (liste blanche de modèles requise), jamais chargée par `make up` ni la CI. - CI et `make helm-lint` : rendu avec la console, refus sans lien interne (vérifié par mutation), identité du script des droits. - Docs : README du chart, docs/RA-CONSOLE.md. Co-authored-by: Claude <noreply@anthropic.com>
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 37113203 | Triggered | Generic Password | 4b3ccbb | deploy/helm/open-eidas/templates/secrets/generated.yaml | View secret |
| 37665449 | Triggered | Generic Password | 4b3ccbb | docker-compose.console.yml | View secret |
| 37113205 | Triggered | Generic Password | 4b3ccbb | docker-compose.console.yml | View secret |
| 37665552 | Triggered | Generic Password | d8daeec | docker-compose.console.yml | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secrets safely. Learn here the best practices.
- Revoke and rotate these secrets.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
6 tasks
…console GitGuardian signalait les valeurs de repli des mots de passe de la surcouche docker-compose.console.yml. Pour une surcouche opt-in, mieux vaut exiger des secrets explicites qu'en fournir de démonstration : OPENEIDAS_DB_PASSWORD, OPENEIDAS_RA_DB_PASSWORD et OPENEIDAS_LOGIN_DECOY_SECRET sont désormais obligatoires (`:?`), avec un exemple de génération en tête du fichier. docker-compose.yml seul n'est pas concerné. Co-authored-by: Claude <noreply@anthropic.com>
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
TODO §1,
docs/WEBUI.md§16-17 : rendrera-consoledéployable, sans changement de son code Rust. Empilée sur #67 (feat/ra-console-quorum) → #66 → #65 → #64. Ordre de merge : #64, #65, #66, #67, cette PR.deploy/ra-console/Dockerfile:cargo build -p ra-consoleseul (l'unification des features du workspace réactiveraitcryptoki;no_pkcs11.rsen est la garde), ni SoftHSM ni opensc, utilisateur non-root 10004. Ajoutée aux matrices construction + scan Trivy et publication GHCR (open-eidas-ra-console, image par défaut du chart). La vérification « le binaire démarre » accepte--version(la console n'a ni PIN ni sous-commandeversion)./api/v1/ca.pemde l'API interne de la CA, premier certificat = émettrice, conservé ensuite), puisra-console internal-cert, qui attend l'approbation (sidecar en démo, opérateur nommé en production).raConsole.enabled: falsepar défaut (aucun déploiement existant ne change, hormis deux clés ajoutées au Secret généré) ; rendu refusé siraConsole.enabledsansca.internal.enabled. Réutilise la Relying Party WebAuthn et la liste blanche de modèles de la CA (une seule configuration). Deployment (volume d'état RWO, sondes : prête = base + lien, vivante = écoute), Service, HTTPRoute optionnelle (Gateway interne), NetworkPolicy (entrée : namespace de la Gateway seul ; sortie : DNS, PostgreSQL, CA ports public et interne).post-install/post-upgrade(image postgres) qui attend les migrations deca-server, appliquera_console_grants.sqlet pose le mot de passe du rôle (par variable psql, jamais en ligne de commande). Pourquoi un Job et pas un initContainer : les identifiants d'administration de la base n'entrent jamais dans le pod de la console, le composant le plus exposé (§16). Rejoué à chaque mise à jour : les nouveaux droits (ex.SELECTsuractions, feat(ra-console): double contrôle, co-signature et salle d'attente (étape 4b) #67) arrivent sans geste manuel. Le script est copié dansfiles/(Helm ne lit rien hors du chart) ; la CI vérifie qu'il est identique à l'original. Un initContainer de la console attend son rôle avec ses propres identifiants.docker-compose.console.yml(lien interne de la CA, service one-shot des droits, console), jamais chargée parmake upni par la CI : elle exige une liste blanche de modèles (deploy/ra-console/models.json) qu'aucune valeur par défaut ne peut fournir. Ledocker-compose.ymlde la démo n'est pas modifié.make helm-lint: lint et rendu avecci/ra-console-values.yaml, refus sans lien interne, identité du script des droits..helmignoreexclutci/du chart.docs/RA-CONSOLE.md(déploiement, variables complètes).Décisions à valider
dev(sinon l'image par défaut du chart n'existe pas). Un package GHCR créé parGITHUB_TOKENpeut naître privé (voir le commentaire du jobpublish). Pas d'épinglage sur le staging.postgres.userpuisse créer un rôle (CREATEROLE) ; à vérifier surotspi/deployavant d'activer la console en staging.OPENEIDAS_ENROLL_HMAC_KEYdans le pod de la console (nécessaire àinternal-cert) : une console compromise pourrait déposer des demandes d'enrôlement — qui restent soumises à approbation, comme pour la TSA.NetworkPolicyd'entrée vide sans Gateway : la plupart des CNI laissent passer le trafic du nœud (sondes) ; à confirmer sur le CNI du cluster cible.Limites
Vérifications
helm lintethelm template: défaut, avec la console (ci/ra-console-values.yaml, avec et sans Gateway), cas de refus ; 26 documents rendus relus par un analyseur YAML.make helm-lintvert.fail,make helm-lintéchoue. Le premier jet du contrôle ne l'aurait pas vu (le rendu échouait déjà faute derpId) : le cas de refus fournit désormais des valeurs complètes, seule la garde peut le faire échouer.docker build -f deploy/ra-console/Dockerfile .: OK ;--versionOK ;ldd: seules libssl/libcrypto/libc ; utilisateurra(10004) ; l'entrypoint refuse clairement sans configuration. Trivy non disponible ici (la CI le lance).docker compose -f docker-compose.yml [-f docker-compose.console.yml] config -q: OK.cargo fmt --check,cargo clippy --workspace --all-targets -- -D warnings(1.97 et 1.98.1),cargo test -p ra-consoleavec PostgreSQL (dontno_pkcs11.rs) : verts.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é