パスワード、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 など) に移動します。
Vault を PATH に追加
[スタート] メニューを開き、環境変数を検索します。
「システム環境変数」で「パス」を見つけて「編集」をクリックします。
vault.exe が存在するディレクトリ (C:vault) をリストに追加します。
新しいコマンド プロンプトを開き、次のコマンドを実行してインストールを確認します。
vault --version
Vault を開発モードで起動します
次のコマンドを使用して、Vault サーバーを開発モードで起動します:
ボールトサーバー -dev
このコマンドにより Vault がローカルで起動され、ターミナルにルート トークンが表示されるはずです。後で使用できるように保存しておいてください。認証に必要になります。
ステップ 2: Node.js プロジェクトをセットアップする
Vault が実行されているので、Vault と対話する Node.js プロジェクトをセットアップします。
新しい Node.js プロジェクトを初期化する
プロジェクト用に新しいディレクトリを作成し、そこに移動します:
mkdir vault-node-app cd vault-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();
const vault = require('node-vault')({
apiVersion: 'v1'、
エンドポイント: process.env.VAULT_ADDR、
トークン: process.env.VAULT_TOKEN
});
const SECRET_PATH = '秘密/データ/ユーザー'; // ユーザーシークレットを保存するパス
// メールアドレスとパスワードを保存
非同期関数 saveCredentials(メールアドレス、パスワード) {
{
を試してください
const result = await vault.write(SECRET_PATH, {
データ: {
[メールアドレス]: { パスワード }
}
});
console.log(${email}: の認証情報が保存されました:、結果);
} キャッチ (エラー) {
console.error('認証情報の保存中にエラーが発生しました:', error);
}
}
// 認証情報をメールで更新します
非同期関数 updateCredentials(email, newPassword) {
{
を試してください
const result = await vault.write(SECRET_PATH, {
データ: {
[メール]: { パスワード: newPassword }
}
});
console.log(${email}: の資格情報が更新されました:、結果);
} キャッチ (エラー) {
console.error('認証情報の更新中にエラーが発生しました:', error);
}
}
// 資格情報を電子メールで取得します
非同期関数 getCredentials(email) {
{
を試してください
const result = await vault.read(SECRET_PATH);
const userData = result.data.data[メール];
if (userData) {
console.log(${email}:, userData の認証情報を取得しました);
} else {
console.log(${email} の資格情報が見つかりません);
}
} キャッチ (エラー) {
console.error('認証情報の取得エラー:', error);
}
}
// メールで認証情報を削除します
非同期関数 deleteCredentials(email) {
{
を試してください
const result = await vault.delete(SECRET_PATH);
console.log(${email} の認証情報が削除されました);
} キャッチ (エラー) {
console.error('認証情報の削除中にエラーが発生しました:', error);
}
}
// 使用例
(async () => {
await saveCredentials('test@example.com', 'password123');
await getCredentials('test@example.com');
await updateCredentials('test@example.com', 'newpassword456');
await getCredentials('test@example.com');
await deleteCredentials('test@example.com');
})();
コードの説明
資格情報の保存: 電子メールとパスワードを Vault に保存します。
資格情報の更新: 指定された電子メールのパスワードを更新します。
資格情報の取得: 電子メールを使用して、保存されている資格情報を取得します。
資格情報の削除: 指定された電子メールの資格情報を削除します。
ユーザー データの保存と管理には、Vault の Secret/data/users パスを使用しています。
ステップ 4: アプリケーションの実行
アプリケーションを実行するには、次のコマンドを使用します:
ノードインデックス.js
スクリプトは次のようになります:
電子メールとパスワードを Vault に保存します。
電子メールを使用して資格情報を取得します。
パスワードを更新してください。
更新された認証情報を取得します。
保存されている認証情報を削除します。
結論
このチュートリアルに従うことで、HashiCorp Vault と統合された完全に機能する Node.js アプリケーションが完成します。この設定により、アプリケーション内の電子メールとパスワードのペアなどの機密情報を管理するための安全かつスケーラブルな方法が提供されます。
HashiCorp Vault はシークレットを保存するための強力なツールであり、Node.js との統合は、node-vault ライブラリを使用することで比較的簡単です。この設定を拡張して、API キーやトークンなどの他のシークレットを保存できます。
機密データの管理が必要なアプリケーションを構築している場合は、セキュリティ リスクを軽減するために、Vault などの安全なストレージ メカニズムを採用することを強くお勧めします。
以上がHashiCorp Vault を Node.js と統合する方法: 機密データを安全に管理するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。