Secrets
Kazzle dispose d’un coffre-fort chiffré intégré pour stocker les clés API, identifiants de base de données, tokens et autres valeurs sensibles dont votre app a besoin. Les secrets sont chiffrés au repos avec AES-256-GCM en utilisant des clés de chiffrement de données enveloppées par KMS — les valeurs en clair ne touchent jamais la base de données.Concepts
Les Collections regroupent les secrets connexes (par ex.stripe-keys, database-credentials). Chaque collection a un slug (minuscules, tirets) que vous référencez dans les fichiers de config et les commandes CLI.
Les Environnements sont des portées optionnelles au sein d’une collection (par ex. production, staging). Les secrets peuvent être limités à un environnement spécifique ou rester au niveau de la collection comme valeurs par défaut.
Ordre de résolution : lors de la résolution des secrets pour une collection + environnement donnés, les secrets spécifiques à l’environnement remplacent les secrets au niveau de la collection portant le même nom. Cela vous permet de partager la plupart des secrets entre environnements tout en remplaçant des valeurs spécifiques par environnement.
Gérer les secrets
Dans l’app
Ouvrez Paramètres > Vault pour créer des collections, environnements et secrets via l’interface.Avec l’IA
L’IA peut créer des collections, créer des environnements, stocker des secrets, les déplacer entre portées et les supprimer pour vous. L’IA voit les noms et métadonnées des secrets mais pas les valeurs chiffrées.Avec la CLI
Référencer les secrets depuis votre app
Pointez la propriétéenv d’un composant vers une collection et environnement de secrets dans kazzle.config.ts. Chaque secret dans cette portée est injecté comme variable d’env de processus dont le nom correspond au nom du secret :
env.collection et env.environment sont des slugs, pas des noms d’affichage. Utilisez env.include pour injecter uniquement un sous-ensemble des secrets de la collection :
Comment les secrets deviennent des variables d’env
Quand les secrets sont résolus pour un composant :- La collection est trouvée par slug dans votre espace
- Les secrets limités à l’environnement spécifié sont chargés
- Les secrets au niveau de la collection (sans environnement) sont inclus comme valeurs par défaut
- Les secrets spécifiques à l’environnement remplacent ceux au niveau de la collection portant le même nom
- Les références de secrets à l’intérieur des valeurs sont résolues
- Les noms de secrets sont convertis au format de variable d’env : majuscules, les caractères non alphanumériques deviennent des tirets bas
Stripe Secret Key devient STRIPE_SECRET_KEY.
Chaque secret a un mode de corps qui détermine comment il est injecté :
- Les secrets
string(clés API, tokens, URI) sont injectés comme chaînes scalaires simples - Les secrets
json(config structurée) sont injectés comme chaînes JSON - Les secrets
fields(identifiants de connexion, sacs de champs typés) sont injectés comme chaînes JSON
Quand les secrets sont injectés
| Contexte | Injecté ? | Détails |
|---|---|---|
| Deploy (composant process) | Oui | Ajouté comme variables d’env d’exécution en production |
| Deploy (composant UI) | Partiel | Seuls les secrets préfixés VITE_* sont passés au moment de la compilation |
CLI (kazzle run) | Oui | Injecté dans l’environnement de la commande |
CLI (secrets.export) | Oui | Exporté sous forme de lignes KEY=value |
| Aperçu dev | Pas encore | Le starter d’aperçu ne résout pas encore l’env du composant — utilisez kazzle run pour l’instant |
Références de template
Les valeurs de secrets peuvent référencer d’autres champs de secrets avec la même syntaxe que Kazzle utilise ailleurs :${secret.<uuid>.<field>}— champ spécifique ou chemin JSON. Utilisez ce format pour l’env/config de l’app.${secret.<uuid>}— corps entier du secret. À utiliser uniquement quand un outil demande explicitement le secret brut entier ; ne l’utilisez pas dans l’env/config de l’app.