处理密码、API 密钥或个人用户信息等敏感数据时,安全存储它们至关重要。在源代码中硬编码机密或将其保存在纯文本文件中是一种危险的方法。这就是 HashiCorp Vault 发挥作用的地方。 Vault 是一个用于管理机密的开源工具,例如凭证、API 密钥和敏感配置。
在本教程中,我将引导您完成以下过程:
在 Windows 上安装 HashiCorp Vault
将其与 Node.js 应用程序集成
使用 Vault 中存储的电子邮件密码对执行基本 CRUD 操作(创建、读取、更新、删除)。
先决条件
在我们深入之前,请确保您具备以下条件:
Node.js 安装在您的系统上。
对 JavaScript 和 Node.js 有基本了解。
已安装 HashiCorp Vault。
第 1 步:在 Windows 上安装 HashiCorp Vault
让我们首先在本地计算机上设置 Vault。
下载金库
前往官方 Vault 下载页面并下载 Windows 二进制文件。
解压下载的文件并将vault.exe文件移至某个目录(例如C:vault)。
将保管库添加到路径
打开“开始”菜单并搜索环境变量。
在系统变量中,找到 Path 并单击编辑。
将vault.exe所在目录(C:vault)添加到列表中。
打开新的命令提示符并通过运行验证安装:
vault --版本
在开发模式下启动 Vault
使用以下命令在开发模式下启动 Vault 服务器:
保管库服务器-dev
此命令将在本地启动 Vault,您应该会看到终端中显示一个根令牌。保存起来供以后使用;您需要它来进行身份验证。
第 2 步:设置 Node.js 项目
现在 Vault 正在运行,我们将设置一个 Node.js 项目来与 Vault 交互。
初始化一个新的 Node.js 项目
为您的项目创建一个新目录并导航到其中:
mkdirVault-node-app cdVault-node-app
第 3 步:将 Vault 与 Node.js 集成
配置环境变量
在项目根目录中创建一个 .env 文件来存储 Vault 配置:
VAULT_ADDR=http://127.0.0.1:8200
VAULT_TOKEN=
替换为在开发模式下启动 Vault 时显示的根令牌。
创建 Node.js 脚本
在项目目录中创建一个新的index.js文件并粘贴以下代码:
require('dotenv').config();
constVault = require('node-vault')({
api版本: 'v1',
端点:process.env.VAULT_ADDR,
令牌:process.env.VAULT_TOKEN
});
const SECRET_PATH = '秘密/数据/用户'; // 存储用户秘密的路径
// 保存电子邮件和密码
异步函数 saveCredentials(电子邮件、密码) {
尝试{
const 结果 = 等待Vault.write(SECRET_PATH, {
数据:{
[电子邮件]:{ 密码 }
}
});
console.log(为 ${email} 保存的凭据:, 结果);
} catch (错误) {
console.error('保存凭据时出错:', error);
}
}
// 通过电子邮件更新凭据
异步函数 updateCredentials(email, newPassword) {
尝试{
const 结果 = 等待Vault.write(SECRET_PATH, {
数据:{
[电子邮件]:{ 密码:新密码 }
}
});
console.log(${email}的凭据已更新:,结果);
} catch (错误) {
console.error('更新凭据时出错:', error);
}
}
// 通过电子邮件获取凭证
异步函数 getCredentials(email) {
尝试{
const result =等待vault.read(SECRET_PATH);
const userData = result.data.data[email];
if (用户数据) {
console.log(已检索 ${email}:, userData 的凭据);
} 其他 {
console.log(未找到 ${email} 的凭据);
}
} catch (错误) {
console.error('检索凭据时出错:', error);
}
}
// 通过电子邮件删除凭证
异步函数deleteCredentials(email) {
尝试{
const result =等待vault.delete(SECRET_PATH);
console.log(${email} 的凭据已删除);
} catch (错误) {
console.error('删除凭据时出错:', error);
}
}
// 用法示例
(异步()=> {
等待 saveCredentials('test@example.com', 'password123');
等待 getCredentials('test@example.com');
等待 updateCredentials('test@example.com', 'newpassword456');
等待 getCredentials('test@example.com');
等待deleteCredentials('test@example.com');
})();
代码说明
保存凭据:在保险柜中存储电子邮件和密码。
更新凭据:更新所提供电子邮件的密码。
检索凭据:使用电子邮件获取存储的凭据。
删除凭据:删除给定电子邮件的凭据。
我们使用Vault中的secret/data/users路径来存储和管理用户数据。
第 4 步:运行应用程序
要运行该应用程序,请使用以下命令:
节点index.js
该脚本将:
将电子邮件和密码保存到保险柜。
使用电子邮件检索凭据。
更新密码。
检索更新的凭据。
删除存储的凭据。
结论
通过遵循本教程,您现在拥有一个与 HashiCorp Vault 集成的功能齐全的 Node.js 应用程序。此设置为您提供了一种安全且可扩展的方式来管理敏感信息,例如应用程序中的电子邮件密码对。
HashiCorp Vault 是一个用于存储机密的强大工具,并且使用 node-vault 库与 Node.js 的集成相对简单。您可以扩展此设置以存储其他机密,例如 API 密钥、令牌等。
如果您正在构建任何需要敏感数据管理的应用程序,强烈建议采用 Vault 这样的安全存储机制来降低安全风险。
以上是如何将 HashiCorp Vault 与 Node.js 集成:安全管理敏感数据的详细内容。更多信息请关注PHP中文网其他相关文章!