Variables d’environnement app
OpenFactory peut stocker valeurs d’environnement au scope app et compte, les chiffrer au repos et les rendre dans une VM app candidate lors du deploy. C’est un début de magasin secret fichier, pas un vault géré.
Périmètre et priorité
- Les valeurs compte sont des défauts réutilisables pour chaque app possédée par ce compte.
- Les valeurs app remplacent valeurs compte de même nom.
- Les valeurs gérées sont écrites par un jeton producteur configuré et enregistrent le producteur propriétaire de la clé.
- Une valeur modifiée incrémente
env_version; un deploy réussi enregistre la version appliquée. Une différence signifie qu’un redeploy est requis.
Les noms doivent être identifiants d’environnement majuscules, sont limités à 128 caractères et ne peuvent pas utiliser le préfixe réservé OPENFACTORY_. Les valeurs utilisateur sont limitées à 8 Kio et une app est limitée à 100 clés.
Workflow MCP
Les opérations list masquent toujours les valeurs. Révélez une valeur seulement si nécessaire :
set_app_env(
app_id="550e8400-e29b-41d4-a716-446655440000",
set={"API_BASE_URL": "https://api.example.internal"}
)
list_app_env(app_id="550e8400-e29b-41d4-a716-446655440000")
reveal_app_env(
app_id="550e8400-e29b-41d4-a716-446655440000",
name="API_BASE_URL"
)Le même motif existe en set_account_env, list_account_env et reveal_account_env. Les opérations set/delete app renvoient env_version et redeploy_hint ; définir une valeur ne mute pas une VM en cours.
Surface REST
| Méthode | Chemin | Rôle |
|---|---|---|
GET | /api/apps/{app_id}/env | Liste clés app masquées et état version |
PUT | /api/apps/{app_id}/env | Set/delete transactionnel pour clés app |
POST | /api/apps/{app_id}/env/reveal | Révélation plaintext auditée d’une clé app |
GET | /api/account/env | Liste clés compte masquées |
PUT | /api/account/env | Set/delete transactionnel pour clés compte |
POST | /api/account/env/reveal | Révélation plaintext auditée d’une clé compte |
PUT | /api/apps/{app_id}/env/managed | Producteur configuré publie clés gérées |
DELETE | /api/apps/{app_id}/env/managed/{name} | Producteur retire une clé gérée qu’il possède |
Les surfaces utilisateur appliquent le contexte propriétaire résolu. Les endpoints gérés utilisent un identifiant bearer <kid>.<secret> depuis le fichier jeton producteur configuré opérateur ; sans ce fichier l’API producteur renvoie indisponible.
Comportement deploy
Pendant deploy, le backend déchiffre valeurs compte, superpose valeurs app, ajoute champs runtime plateforme et écrit /etc/openfactory/app.env dans la VM avec mode 0600. Le processus démarre avec ce fichier comme environnement. Si déchiffrement, livraison fichier ou démarrage échoue, le candidat n’est pas promu.
Frontière de sécurité
- Les valeurs stockées utilisent chiffrement Fernet. L’opérateur doit fournir et protéger
OPENFACTORY_ENV_MASTER_KEY; la perdre ou la remplacer rend valeurs existantes indéchiffrables. - Les réponses list sont masquées. Révélations et mutations explicites ajoutent un événement audit JSONL.
- Stockage et piste d’audit actuels sont fichiers locaux. Ils ne fournissent pas clés matérielles, approbation multi-parties, journalisation inviolable, rotation automatique ni garantie disaster-recovery.
- Journaux application et deploy ne fournissent pas encore une frontière complète de redaction secret. Un processus qui imprime son environnement, une URL porteuse d’identifiant ou un secret dans une erreur peut l’exposer dans journaux et preuves test.
Pour cette raison, n’utilisez pas ce magasin aperçu pour identifiants production tant que votre déploiement n’a pas contrôles d’accès indépendants, tests backup/restore, validation redaction journaux, règles rétention et procédure documentée rotation clés. Ne placez jamais secrets dans recettes, code source, commandes, URL, descriptions test ou attentes d’assertion.
Voir Déploiement app pour le flux de promotion candidat.