👻
Postman Pre-request スクリプトでVaultのシークレットとローカル変数を操作する
今日はPostman コレクションのPre-requestスクリプトからVaultに保存されているシークレットを読み取りローカル変数にセットする手順を見てみます。
Postman Vault
Postman Vautはシークレットを安全に格納できるローカルストアでPostmanクラウド環境に保存されない定数を管理できます。
Vaultに保存された値はヘッダーやボディなどでパラメータとして使用することができます。今日は直接指定する前にVaultの値をさらにスクリプトで操作する手順を見ていきます。
さっそくやってみる
1. Pre-requestの設定

この環境だとtestというローカル変数とvault:secretというvaultに保存されているシークレットがそれぞれポストされます。
ではPre-requestに以下のスクリプトを挿入します。
// Pre-request Script
(async () => {
try {
const secret = await pm.vault.get("secret"); // Vaultのキー名
pm.environment.set("test", secret + "from vault"); // URL等でも確実に解決されるよう環境変数に
console.log("Vault 値を環境変数 test にセット:", pm.environment.get("test"));
} catch (err) {
console.error("Vault からの取得に失敗:", err);
// 失敗時のフォールバック(必要なら)
// pm.environment.set("test", "fallback");
}
})();
Vaultの値はエディターが自動で補完してくれます。

2. Vault のスクリプトによる呼び出し許可
画面右下からVaultを起動します。

設定の歯車アイコンをクリックします。

スクリプトでのサポートを有効化するのトグルをオンにします。
is.com/zenn-user-upload/892e857496f1-20251004.png)
3. コレクションの実行
コレクションを実行するとVaultへのアクセスを許可するダイアログが表示されます。

以下の値が想定通りPOSTされています。
POST /?test=secretfrom%20vault&vaulttest=secret HTTP/1.1
Host: kameda.requestcatcher.com
Accept: */*
Accept-Encoding: gzip, deflate, br
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 0
Content-Type: application/json
Postman-Token: 0538ee29-00ec-481c-95ec-deb8d0f44837
User-Agent: PostmanRuntime/7.48.0
async / await
Vaultから値を取得して操作するスクリプトはasync await を使う必要があります。
以下のスクリプトでは処理が間に合わずtestが空欄のままPOSTが実行されてしまいます。
// Vault から "mySecret" というキーの値を取得して test というローカル変数に代入
pm.vault.get("secret", function (err, secret) {
if (err) {
console.error("Vault からの取得に失敗しました:", err);
} else {
pm.variables.set("test", secret);
console.log("Vault 値を test にセット:", secret);
}
});
Discussion