Maison  >  Article  >  interface Web  >  Comment intégrer HashiCorp Vault à Node.js : gérer en toute sécurité les données sensibles

Comment intégrer HashiCorp Vault à Node.js : gérer en toute sécurité les données sensibles

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 18:40:08982parcourir

How to Integrate HashiCorp Vault with Node.js: Securely Manage Sensitive Data

Lorsque vous travaillez avec des données sensibles telles que des mots de passe, des clés API ou des informations personnelles sur les utilisateurs, il est essentiel de les stocker en toute sécurité. Coder en dur des secrets dans votre code source ou les conserver dans des fichiers en texte brut est une approche risquée. C'est là qu'HashiCorp Vault entre en jeu. Vault est un outil open source permettant de gérer les secrets, tels que les informations d'identification, les clés API et les configurations sensibles.
Dans ce tutoriel, je vais vous guider à travers le processus de :
Installation de HashiCorp Vault sur Windows
L'intégrer à une application Node.js
Effectuer des opérations CRUD de base (Créer, Lire, Mettre à jour, Supprimer) avec des paires e-mail-mot de passe stockées dans Vault.

Prérequis
Avant de plonger, assurez-vous d'avoir les éléments suivants :
Node.js installé sur votre système.
Une compréhension de base de JavaScript et de Node.js.
HashiCorp Vault installé.


Étape 1 : Installer HashiCorp Vault sur Windows
Commençons par configurer Vault sur votre ordinateur local.
Télécharger le coffre-fort
Accédez à la page officielle de téléchargement de Vault et téléchargez le binaire Windows.
Décompressez le fichier téléchargé et déplacez le fichier vault.exe vers un répertoire (par exemple, C:vault).

Ajouter un coffre-fort à PATH
Ouvrez le menu Démarrer et recherchez les variables d'environnement.
Dans Variables système, recherchez Chemin et cliquez sur Modifier.
Ajoutez le répertoire où se trouve vault.exe (C:vault) à la liste.
Ouvrez une nouvelle invite de commande et vérifiez l'installation en exécutant :

coffre-fort --version
Démarrez Vault en mode développement
Démarrez le serveur Vault en mode développement à l'aide de cette commande :
serveur de coffre-fort -dev
Cette commande lancera Vault localement et vous devriez voir un jeton racine affiché dans le terminal. Gardez-le pour plus tard ; vous en aurez besoin pour vous authentifier.


Étape 2 : Configuration d'un projet Node.js
Maintenant que Vault est exécuté, nous allons configurer un projet Node.js pour interagir avec Vault.
Initialiser un nouveau projet Node.js
Créez un nouveau répertoire pour votre projet et accédez-y :

mkdir vault-node-app cd vault-node-app

  1. Initialiser un nouveau projet Node.js : npm init -y
  2. Installez les dépendances requises : npm installer node-vault dotenv node-vault : Il s'agit du client Node.js officiel pour Vault. dotenv : Pour gérer les variables d'environnement.

Étape 3 : Intégrer Vault à Node.js
Configurer les variables d'environnement
Créez un fichier .env dans le répertoire racine de votre projet pour stocker les configurations Vault :
VAULT_ADDR=http://127.0.0.1:8200
VAULT_TOKEN=
Remplacez par le jeton racine affiché lorsque vous avez démarré Vault en mode développement.
Créez le script Node.js
Créez un nouveau fichier index.js dans le répertoire de votre projet et collez le code suivant :
require('dotenv').config();
const vault = require('node-vault')({
apiVersion : 'v1',
point de terminaison : process.env.VAULT_ADDR,
jeton : process.env.VAULT_TOKEN
});
const SECRET_PATH = 'secret/données/utilisateurs'; // Chemin pour stocker les secrets des utilisateurs
// Enregistrer l'e-mail et le mot de passe
fonction asynchrone saveCredentials (e-mail, mot de passe) {
essayez {
résultat const = attendre vault.write(SECRET_PATH, {
données : {
[e-mail] : { mot de passe }
>
});
console.log(Identifiants enregistrés pour ${email} :, résultat);
} attraper (erreur) {
console.error('Erreur lors de l'enregistrement des informations d'identification :', erreur);
>
>
// Mettre à jour les identifiants par email
fonction asynchrone updateCredentials (email, newPassword) {
essayez {
résultat const = attendre vault.write(SECRET_PATH, {
données : {
[e-mail] : { mot de passe : nouveauMot de passe }
>
});
console.log(Identifiants mis à jour pour ${email} :, résultat);
} attraper (erreur) {
console.error('Erreur lors de la mise à jour des informations d'identification :', erreur);
>
>
// Obtenez les identifiants par email
fonction asynchrone getCredentials (email) {
essayez {
résultat const = attendre vault.read(SECRET_PATH);
const userData = result.data.data[email];
si (données utilisateur) {
console.log (Identifiants récupérés pour ${email} :, userData);
} autre {
console.log(Aucune information d'identification trouvée pour ${email});
>
} attraper (erreur) {
console.error('Erreur lors de la récupération des informations d'identification :', erreur);
>
>
// Supprimer les identifiants par email
fonction asynchrone deleteCredentials (email) {
essayez {
résultat const = attendre vault.delete(SECRET_PATH);
console.log(Identifiants supprimés pour ${email});
} attraper (erreur) {
console.error('Erreur lors de la suppression des informations d'identification :', erreur);
>
>
// Exemple d'utilisation
(async() => {
wait saveCredentials('test@example.com', 'password123');
wait getCredentials('test@example.com');
wait updateCredentials('test@example.com', 'newpassword456');
wait getCredentials('test@example.com');
wait deleteCredentials('test@example.com');
})();
Explication du code
Enregistrer les informations d'identification : stocke une adresse e-mail et un mot de passe dans Vault.
Mettre à jour les informations d'identification : met à jour le mot de passe de l'e-mail fourni.
Récupérer les informations d'identification : récupère les informations d'identification stockées à l'aide de l'e-mail.
Supprimer les informations d'identification : supprime les informations d'identification pour l'e-mail donné.

Nous utilisons le chemin secret/data/users dans Vault pour stocker et gérer les données utilisateur.


Étape 4 : Exécuter l'application
Pour exécuter l'application, utilisez la commande suivante :
nœud index.js
Le script :
Enregistrez l'e-mail et le mot de passe dans Vault.
Récupérez les informations d'identification à l'aide de l'e-mail.
Mettez à jour le mot de passe.
Récupérez les informations d'identification mises à jour.
Supprimez les informations d'identification stockées.


Conclusion
En suivant ce didacticiel, vous disposez désormais d'une application Node.js entièrement fonctionnelle qui s'intègre à HashiCorp Vault. Cette configuration vous offre un moyen sécurisé et évolutif de gérer les informations sensibles telles que les paires e-mail-mot de passe dans votre application.
HashiCorp Vault est un outil puissant pour stocker des secrets, et son intégration avec Node.js est relativement simple à l'aide de la bibliothèque node-vault. Vous pouvez étendre cette configuration pour stocker d'autres secrets tels que des clés API, des jetons, etc.
Si vous créez une application nécessitant une gestion de données sensibles, il est fortement recommandé d'adopter un mécanisme de stockage sécurisé tel que Vault pour réduire les risques de sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn