8.1 KiB
8.1 KiB
Politique de Centralisation des Variables d'Environnement
Vue d'ensemble
Ce document définit la politique de gestion des variables d'environnement pour le projet 4NK. La nouvelle architecture sépare les variables par projet tout en maintenant une approche centralisée et sécurisée.
Structure Actuelle (Depuis 2024-09-27)
Architecture Séparée par Projet
4NK_env/
├── env/
│ ├── lecoffre_node/.env # Variables du nœud principal
│ ├── sdk_relay/.env # Variables du service relay
│ ├── sdk_storage/.env # Variables du service storage
│ ├── ihm_client/.env # Variables de l'interface client
│ ├── lecoffre-front/.env # Variables du frontend
│ ├── blindbit-oracle/.env # Variables de l'oracle BlindBit
│ ├── monitoring/.env # Variables de monitoring
│ └── sdk_signer/.env # Variables du service signer
└── .env.master # Conservé pour compatibilité
Principes de Gestion
1. Séparation par Responsabilité
- Chaque service a ses propres variables d'environnement
- Isolation des configurations sensibles
- Réduction des risques de fuite de données
2. Conservation des Valeurs
- JAMAIS modifier les valeurs des variables existantes
- Toutes les valeurs du
.env.master
original sont préservées - Seule la structure d'organisation change
3. Sécurité Renforcée
- Variables sensibles isolées par service
- Identification claire des données sensibles
- Préfixe
FAKE-DATA-IA-
pour les données de test
4. Compatibilité Maintenue
- Fichier
.env.master
conservé pour compatibilité - Scripts mis à jour progressivement
- Migration transparente
Classification des Variables
Variables Sensibles (Critiques)
# ================== /!\ sensible =========================
IDNOT_API_KEY=...
IDNOT_CLIENT_SECRET=...
VITE_JWT_SECRET_KEY=...
SIGNER_API_KEY=...
GRAFANA_ADMIN_PASSWORD=...
Variables de Configuration (Importantes)
# Configuration des domaines et URLs
DOMAIN=dev4.4nkweb.com
API_BASE_URL=https://${DOMAIN}/api
STORAGE_URL=https://${DOMAIN}/storage
Variables de Développement (Optionnelles)
# Variables pour le développement et les tests
RUST_LOG=DEBUG
NODE_OPTIONS=--max-old-space-size=2048
Règles de Gestion
Règle 1: Ne Jamais Modifier les Valeurs
- Toutes les valeurs du
.env.master
original sont préservées - Seule l'organisation en fichiers séparés est modifiée
- Validation obligatoire avant toute modification
Règle 2: Utiliser les Scripts Officiels
# Ajout de variables manquantes
./scripts/add-missing-env-vars-new.sh
# Test de configuration
./scripts/test-env-config.sh
# Démarrage des services
./scripts/lecoffre_node/start.sh
Règle 3: Documentation Obligatoire
- Toute nouvelle variable doit être documentée
- Mise à jour des fichiers de documentation
- Explication de l'utilisation et de la sensibilité
Règle 4: Test Avant Déploiement
- Validation de la configuration avec les scripts
- Test de démarrage des services
- Vérification de la cohérence des variables
Processus de Migration
Étape 1: Création de la Structure
mkdir -p /home/debian/4NK_env/env/{lecoffre_node,sdk_relay,sdk_storage,ihm_client,lecoffre-front,blindbit-oracle,monitoring,sdk_signer}
Étape 2: Séparation des Variables
- Analyse du
.env.master
original - Répartition par projet selon l'utilisation
- Conservation de toutes les valeurs
Étape 3: Mise à Jour des Configurations
- Modification du
docker-compose.yml
- Mise à jour des scripts de gestion
- Adaptation des fichiers de configuration
Étape 4: Tests et Validation
- Exécution des scripts de test
- Vérification du démarrage des services
- Validation de la cohérence
Étape 5: Documentation
- Création de la documentation de la nouvelle structure
- Mise à jour des guides existants
- Formation des équipes
Gestion des Variables par Projet
lecoffre_node
- Responsabilité: Configuration générale et nœud principal
- Variables clés: DOMAIN, GIT_TOKEN, IDNOT_*, API_BASE_URL
- Sensibilité: Élevée (tokens et clés API)
sdk_relay
- Responsabilité: Service de relay WebSocket
- Variables clés: SDK_RELAY_*, CORE_URL, WS_URL
- Sensibilité: Moyenne (configuration réseau)
sdk_storage
- Responsabilité: Service de stockage
- Variables clés: STORAGE_URL, STORAGE_PORT
- Sensibilité: Faible (configuration technique)
ihm_client
- Responsabilité: Interface utilisateur
- Variables clés: VITE_*, JWT_SECRET_KEY
- Sensibilité: Élevée (secret JWT)
lecoffre-front
- Responsabilité: Frontend Next.js
- Variables clés: NEXT_PUBLIC_*, IDNOT_CLIENT_ID
- Sensibilité: Moyenne (client ID)
blindbit-oracle
- Responsabilité: Oracle BlindBit
- Variables clés: BLINDBIT_API_PORT, BITCOIN_RPC_URL
- Sensibilité: Faible (configuration technique)
monitoring
- Responsabilité: Surveillance et logs
- Variables clés: GRAFANA_, LOKI_, STATUS_API_*
- Sensibilité: Moyenne (mots de passe admin)
sdk_signer
- Responsabilité: Service de signature
- Variables clés: SIGNER_*, API_KEY
- Sensibilité: Élevée (clé API de signature)
Scripts de Gestion
add-missing-env-vars-new.sh
- Ajoute les variables manquantes dans la nouvelle structure
- Crée des sauvegardes automatiques
- Validation des variables par projet
test-env-config.sh
- Teste la cohérence de la configuration
- Vérifie la présence des fichiers .env
- Valide le chargement des variables
start.sh (lecoffre_node)
- Démarre les services avec la nouvelle structure
- Vérifie les variables par service
- Gestion des erreurs et diagnostics
Sécurité
Bonnes Pratiques
- Isolation: Chaque service n'accède qu'à ses variables
- Sensibilité: Identification claire des données sensibles
- Audit: Traçabilité des modifications
- Sauvegarde: Sauvegarde automatique avant modifications
Variables Sensibles
- Utilisation du préfixe
FAKE-DATA-IA-
pour les données de test - Section dédiée
# ================== /!\ sensible =========================
- Documentation de la sensibilité dans les commentaires
Maintenance
Ajout d'un Nouveau Service
- Créer le dossier
env/<nouveau_service>/
- Définir les variables nécessaires
- Mettre à jour les scripts et configurations
- Documenter dans ce fichier
Modification d'une Variable
- Identifier le service concerné
- Modifier uniquement le fichier correspondant
- Tester la configuration
- Mettre à jour la documentation
Suppression d'un Service
- Sauvegarder le fichier .env
- Supprimer le dossier du service
- Mettre à jour les configurations
- Nettoyer la documentation
Monitoring et Alertes
Variables Critiques à Surveiller
IDNOT_API_KEY
: Clé API IDNotVITE_JWT_SECRET_KEY
: Secret JWTSIGNER_API_KEY
: Clé API SignerGRAFANA_ADMIN_PASSWORD
: Mot de passe Grafana
Alertes Recommandées
- Modification de variables sensibles
- Absence de fichiers .env
- Échec de chargement des variables
- Incohérence entre fichiers
Formation et Documentation
Équipe de Développement
- Formation sur la nouvelle structure
- Documentation des procédures
- Scripts de gestion et de test
Équipe DevOps
- Procédures de déploiement
- Gestion des variables sensibles
- Monitoring et alertes
Équipe de Sécurité
- Audit des variables sensibles
- Validation des procédures
- Contrôle d'accès aux fichiers
Conclusion
La nouvelle structure des variables d'environnement améliore la sécurité, la maintenabilité et la modularité du projet 4NK. Cette politique garantit une gestion cohérente et sécurisée des configurations tout en préservant la compatibilité avec l'existant.