👻

Postman Pre-request スクリプトでVaultのシークレットとローカル変数を操作する

に公開

今日はPostman コレクションのPre-requestスクリプトからVaultに保存されているシークレットを読み取りローカル変数にセットする手順を見てみます。

Postman Vault

Postman Vautはシークレットを安全に格納できるローカルストアでPostmanクラウド環境に保存されない定数を管理できます。
https://zenn.dev/kameoncloud/articles/30314193fa7b9e

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