encrypt-dev est un outil en ligne de commande pour gérer et partager des variables d'environnement de manière sécurisée. Il chiffre un fichier .env dans un fichier .encryptenv (avec AES-256-CBC) que vous pouvez inclure dans votre dépôt Git. Les développeurs accèdent aux variables en déchiffrant .encryptenv avec une passphrase sécurisée, partagée via un QR code ou un gestionnaire de secrets. La commande rotate-key permet de changer la passphrase en cas de compromission, sans modifier les variables.
- Fonctionnalités
- Installation
- Configuration initiale
- Commandes
- init
- generate-key
- encrypt
- decrypt
- status
- rotate-key
- Partage des variables d'environnement
- Gestion d'une clé compromise
- Bonnes pratiques de sécurité
- Dépannage
- Contribuer
- Licence
- Chiffrement sécurisé : Protège les variables d'environnement avec AES-256-CBC.
- Partage via Git : Stocke
.encryptenvdans le dépôt pour un accès facile. - Génération de clés : Crée des passphrases sécurisées et des QR codes.
- Rotation de clés : Met à jour la passphrase sans changer les variables.
- Vérification de synchronisation : Confirme la cohérence entre
.envet.encryptenv. - Interface intuitive : Prompts interactifs pour une utilisation simple.
-
Prérequis :
- Node.js (version 16 ou supérieure)
- npm (inclus avec Node.js)
-
Installer globalement (recommandé pour une utilisation en CLI) :
npm install -g encrypt-dev
-
Vérifier l'installation :
envsync --help
Cela affiche la liste des commandes disponibles.
-
Installer localement (optionnel, pour un projet spécifique) :
npm install encrypt-dev
-
Exécutez les commandes via
npx:npx envsync --help
-
Configurez encrypt-dev dans votre projet pour gérer les variables d'environnement.
-
Créer un fichier
.env:echo "API_KEY=xyz123\nDB_PASSWORD=secret\nPORT=3000" > .env
-
Initialiser la configuration :
envsync init
-
Prompts :
- Chemin du fichier source :
.env(par défaut) - Chemin du fichier chiffré :
.encryptenv(par défaut) - Algorithme de chiffrement :
aes-256-cbc(par défaut) - Indice de clé (facultatif) : Un mémo pour la passphrase (par exemple,
prod-key).
- Chemin du fichier source :
-
Résultat : Crée
envsync.config.json, par exemple :{ "source": ".env", "encrypted": ".encryptenv", "encryption": "aes-256-cbc", "key_hint": "prod-key" }
-
-
Générer une passphrase :
npx envsync generate-key
- Sortie : Une passphrase hexadécimale (par exemple,
6ec8f388997aad6c738afd072e7812696ed1115fa5d442b440edf35bfef1ab52) et un QR code. - Action : Notez la passphrase et partagez-la via un canal sécurisé (voir Partage des variables d'environnement).
- Sortie : Une passphrase hexadécimale (par exemple,
-
Chiffrer les variables :
npx envsync encrypt
-
Entrez la passphrase.
-
Résultat : Crée
.encryptenv, par exemple :{ "iv": "fa7c2c2f33b1683f1a4bb6e56a0fe200", "salt": "73b5eb3e7e90c23b1a7fdd36b397a9ad", "hash": "b7326389778812552eb7b181d198074058eb44bebf6ae86c3b7efad6bbed5da5", "content": "11bfe603806aa5d59ba1dbd0873051cc" }
-
-
Ajouter
.encryptenvau dépôt :git add .encryptenv envsync.config.json git commit -m "Add encrypted environment file and config" git push
Note : Assurez-vous que .env est dans .gitignore :
# .gitignore
.env
node_modules/Crée envsync.config.json pour configurer le CLI.
envsync init- Prompts : Chemin du fichier source, fichier chiffré, algorithme, indice de clé.
- Résultat : Génère
envsync.config.json.
Génère une passphrase sécurisée et un QR code.
envsync generate-key-
Sortie :
Generated Key: 6ec8f388997aad6c738afd072e7812696ed1115fa5d442b440edf35bfef1ab52 QR Code: ██████████████ ██ ░░░░░░ ██ ██ ██████ ██ ... -
Utilisation : Copiez la passphrase ou partagez le QR code.
Chiffre .env en .encryptenv.
envsync encrypt- Prompt : Passphrase.
- Résultat : Crée/mise à jour
.encryptenv.
Déchiffre .encryptenv pour recréer .env.
envsync decrypt- Prompt : Passphrase.
- Résultat : Crée/mise à jour
.env.
Vérifie la synchronisation entre .env et .encryptenv.
envsync status- Prompt : Passphrase.
- Sortie :
- Synchronisés :
Files are synchronized. - Non synchronisés :
Files are out of sync. Run 'encrypt' to update .encryptenv or 'decrypt' to update .env.
- Synchronisés :
Change la passphrase de .encryptenv.
envsync rotate-key- Prompts : Ancienne passphrase, nouvelle passphrase.
- Résultat : Met à jour
.encryptenvavec la nouvelle passphrase.
Le fichier .encryptenv est inclus dans le dépôt Git pour partager les variables chiffrées. Les développeurs utilisent la passphrase pour déchiffrer les variables.
-
Installer
encrypt-dev:npm install -g encrypt-dev
-
Cloner le projet :
git clone <url-du-projet> cd <projet>
-
Obtenir la passphrase :
- QR code : Scanner le QR code partagé par l'équipe.
- Gestionnaire de secrets : Accéder à Vault, 1Password, etc.
- Messagerie chiffrée : Recevoir via Signal, Keybase, ou GPG.
-
Déchiffrer
.encryptenv:npx envsync decrypt
- Entrez la passphrase.
- Résultat : Crée
.env.
-
Vérifier :
envsync status cat .env
- Méthodes :
- QR Code : Partagez via une réunion ou une messagerie chiffrée.
- Gestionnaire de secrets : Stockez dans Vault, AWS Secrets Manager, ou 1Password.
- Messagerie chiffrée : Utilisez Signal, Keybase, ou email GPG.
- À éviter : Ne partagez pas la passphrase dans le dépôt Git ou via des canaux non sécurisés.
Pour différents environnements :
- Créez
.encryptenv.dev,.encryptenv.prod, etc. - Configurez
envsync.config.jsonou passez des options spécifiques (si implémenté). - Utilisez des passphrases distinctes par environnement.
En cas de compromission de la passphrase :
-
Changer la passphrase :
envsync rotate-key
- Entrez l'ancienne et la nouvelle passphrase.
- Mise à jour de
.encryptenv.
-
Mettre à jour le dépôt :
git add .encryptenv git commit -m "Rotate encryption key" git push -
Partager la nouvelle passphrase :
-
Générez un nouveau QR code :
envsync generate-key
-
Partagez via un canal sécurisé.
-
-
Vérifier :
npx envsync decrypt
- Dépôt privé : Limitez l'accès au dépôt Git.
- Passphrase sécurisée : Utilisez
envsync generate-keypour des passphrases robustes. - Rotation régulière : Changez la passphrase tous les 3-6 mois.
- Surveillance : Vérifiez les accès au dépôt.
- Gestionnaire de secrets : Préférez Vault ou 1Password.
- Sauvegarde : Stockez la passphrase en lieu sûr.
- Erreur :
File not found: Vérifiez la présence de.encryptenvetenvsync.config.json. - Erreur :
Decryption failed: Passphrase incorrecte. Contactez l'équipe. - Commande
envsyncintrouvable : Installez globalement avecnpm install -g encrypt-dev. - Fichiers non synchronisés : Exécutez
envsync statuset mettez à jour avecencryptoudecrypt.
Pour plus d'aide, ouvrez une issue sur GitHub.
- Forkez le dépôt :
https://github.com/adandeigor/encrypt-dev. - Créez une branche :
git checkout -b feature/<nom>. - Ajoutez des tests et exécutez :
npm test. - Soumettez une pull request.
Voir CONTRIBUTING.md pour plus de détails.
MIT License. Voir LICENSE pour plus d'informations.