En fait, je ne recommanderais pas de stocker des valeurs de configuration comme les informations de connexion à la base de données, les mots de passe, les jetons d'accès, etc. à l'intérieur du code de l'application pour les raisons suivantes :
-
Le fait de coder en dur ces valeurs rend difficile leur modification ultérieure. Vous devrez publier une nouvelle version de l'application pour modifier ces valeurs.
-
Il s'agit d'une violation sérieuse de la sécurité, car les données de configuration de qualité de production et les mots de passe ne devraient pas être stockés dans le code. Il est très facile de divulguer ces données sensibles.
La meilleure approche serait d'externaliser ces données et de les passer à votre application pendant l'exécution. Cela se fait généralement au moyen de variables d'environnement. Vous devez simplement définir une variable d'environnement unique pour chaque donnée qui doit être modifiable entre différents environnements.
Par exemple : DB_HOST
, DB_USER
, DB_PASSWORD
. Ensuite, vous pourriez passer ces valeurs à votre application en production de cette manière :
$ NODE_ENV=production DB_HOST=1.2.3.4 DB_USER=someusername DB_PASSWORD=somerandompassword /bin/node app.js
En réalité, ces valeurs pourraient être chiffrées et ajoutées au code, puis décryptées lors du déploiement. Cependant, assurez-vous que la clé de décryptage est stockée de manière sécurisée dans le système de déploiement ou fournie de manière interactive par l'ingénieur de déploiement. Shippable permet de le faire directement.
Environnement de développement, c'est plus simple, car vous pouvez utiliser le très pratique dotenv
module. Il vous suffit de créer un fichier .env
dans le répertoire racine de votre projet et d'y ajouter toutes les variables :
DB_HOST=1.2.3.4
DB_USER=someusername
DB_PASSWORD=somerandompassword
Mais, veillez à l'exclure de votre VCS, car chaque développeur voudra probablement avoir sa propre configuration. Vous pouvez créer un fichier .env.dist
pour contenir la configuration par défaut, qui pourrait ensuite être utilisée comme modèle : cp .env.dist .env
.