首頁  >  文章  >  web前端  >  如何將 HashiCorp Vault 與 Node.js 整合:安全管理敏感數據

如何將 HashiCorp Vault 與 Node.js 整合:安全管理敏感數據

Susan Sarandon
Susan Sarandon原創
2024-10-29 18:40:08978瀏覽

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

處理密碼、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

  1. 初始化一個新的 Node.js 專案: npm init -y
  2. 安裝所需的依賴項: npm 安裝 node-vault dotenv node-vault:這是 Vault 的官方 Node.js 客戶端。 dotenv:管理環境變數。

第 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn