Files
khadhroony-solana-project/deltas/0.1.4/pre.013.md
2026-08-16 16:51:11 +02:00

4.2 KiB

Delta 0.1.4-pre.013 — Secrets privilégiés

Statut

Tranche livrée pour validation locale.

0.1.4-pre.012-fix.001 est considérée validée : fmt, check, clippy, les 34 tests Config Desk, les 87 tests Config, les cinq audits ownership et les 12 tests d'API publique sont propres. Les flux de suppression via modal Bootstrap couvrent annulation et confirmation, et le scénario réel de shadowing process > .env retourne source_changed=true, effective_changed=false, shadowed_by_process_environment=true, reload_required=false.

Objectif

Introduire la frontière explicite et privilégiée permettant de révéler temporairement une valeur KSP_SECRET_* / KSPB_SECRET_*, tout en maintenant la redaction des DTO ordinaires et en évitant toute conservation/logging accidentel de la valeur réelle.

Modifications

Backend

  • nouveau module secrets.rs séparé de la projection ordinaire Environnement ;
  • DTO TS-RS dédiés :
    • SecretRevealRequestDto ;
    • SecretRevealResponseDto ;
  • le response DTO ne dérive volontairement ni Clone ni Debug ;
  • nouvelle commande Tauri centralisée reveal_environment_value ;
  • policy backend :
    • nom obligatoirement validé par ConfigSensitivity::from_variable_name() ;
    • reveal refusé pour Public et Internal ;
    • sources autorisées strictement effective ou dotenv ;
  • délégation exclusive à :
    • ConfigManagement::reveal_effective_environment_value() ;
    • ConfigManagement::reveal_dotenv_value() ;
  • aucune valeur révélée n'est stockée dans AppState ;
  • logging limité au nom de variable, à la source et à value_present, jamais à la valeur.

Frontend

  • nouveau module secret_reveal.ts ;
  • boutons Révéler effective et Révéler .env disponibles uniquement lorsque l'éditeur cible un namespace Secret ;
  • modal Bootstrap de confirmation explicite avant l'appel Tauri ;
  • affichage transitoire dans un champ password, masqué par défaut ;
  • bascule locale Afficher / Masquer ;
  • effacement du contrôle à la fermeture du modal ;
  • effacement/hide forcé lorsqu'on quitte la vue Environnement ;
  • aucune persistence localStorage / sessionStorage ;
  • aucune valeur réelle recopiée dans les logs frontend.

Tests

  • la policy accepte les deux sources uniquement pour KSP_SECRET_* / KSPB_SECRET_* ;
  • les namespaces Public/Internal/externes et les sources inconnues sont rejetés ;
  • le DTO response reste un contrat minimal explicitement non-Debug/non-Clone.

Documentation

  • pre.012 marquée réalisée dans le plan ;
  • pre.013 marquée en cours ;
  • README/USAGE/TODO alignés sur le reveal privilégié et transitoire.

Threat model borné

Cette tranche vise la prévention de divulgation accidentelle dans les DTO généraux, snapshots, diagnostics, logs et état frontend durable. Elle ne prétend pas fournir une ré-authentification forte contre une WebView/session desktop déjà compromise. Une authentification OS/keychain éventuelle reste hors scope de 0.1.4.

Scénarios de validation

  1. créer temporairement une variable KSP_SECRET_TEST via le management .env ;
  2. sélectionner cette ligne : les deux boutons reveal doivent s'activer tandis que la table reste ******** ;
  3. Révéler .env : annuler d'abord le modal, puis recommencer et confirmer ;
  4. la valeur réelle doit apparaître masquée par défaut ; Afficher/Masquer doit fonctionner ;
  5. fermer le modal puis le rouvrir : la valeur précédente ne doit plus être présente avant une nouvelle confirmation ;
  6. tester Révéler effective ; avec absence de shadowing elle doit correspondre à .env ;
  7. avec une variable Public/Internal sélectionnée, les boutons reveal restent désactivés ;
  8. vérifier dans la console qu'aucune valeur Secret réelle n'apparaît dans les événements de reveal.

Version technique

workspace.package.version = "0.1.4-pre.13"

Validation locale demandée

cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-app-config-desk
cargo test -p ksp-config-lib
cargo tree -p ksp-app-config-desk
cargo tauri dev -c crates/ksp-app-config-desk/tauri.conf.json