Skip to navigation

Integrate Postman Shared Vault with HashiCorp Vault

View as Markdown

This feature is available on Postman Enterprise plans with the Advanced Security Administration add-on. For more information, see the pricing page.

Connect Postman Shared Vault to HashiCorp Vault so linked keys can read their values from secrets your team already stores in HashiCorp Vault.

Postman stores only a reference to the secret, called the secret location: the secrets engine mount, KV version, secret path, and optional field and version. The value stays in HashiCorp Vault, and Postman fetches it when you send a request or run a monitor.

This page covers Postman Shared Vault, which an admin sets up once for the team. To set it up from your own vault instead, see Integrate Postman Local Vault with HashiCorp Vault.

Who does what

Setting up the integration and using it are two separate jobs, done by different people:

  • A user with Postman Admin, Super Admin, or Security Manager permission sets up the connection for the team. They also configure at least one authentication method (AppRole, OIDC, or both). This is a one-time task. Members still need read access in HashiCorp Vault to use linked keys in the desktop app.
  • Workspace Editors, Security Managers, and Super Admins create a linked key that resolves its value from a HashiCorp secret, then use it in requests. This happens on an ongoing basis, once per secret you want to use.
TaskWho does itHow often
Add the HashiCorp Vault connectionAdmin, Super Admin, or Security ManagerOnce per connection
Configure an authentication methodAdmin, Super Admin, or Security ManagerOnce per method. Revisit to rotate credentials.
Create a linked key from a HashiCorp secretWorkspace Editor, Security Manager, or Super AdminOnce per secret
Use the linked key in a requestAnyone the linked key is shared with: its workspace, specific people, or the whole teamOngoing

About the HashiCorp Vault integration

An integration has two parts:

  • A connection identifies which HashiCorp Vault server to read from, and optionally one namespace within it. One connection can read any secret your team’s access allows on that server. A connection belongs to your whole team, but the keys that use it live in individual workspaces, so one connection can serve linked keys in many workspaces.
  • An authentication method determines how Postman identifies itself to HashiCorp Vault when it reads a secret. A connection can have one, or both, of the following methods:
Authentication method:AppRole (machine)OIDC (per-user SSO)
Use it forMonitors and other unattended runsSending requests from the Postman desktop app
Identity usedThe connection’s AppRole identityThe team member’s own identity in HashiCorp Vault
Credentials Postman storesThe Role ID and Secret ID, stored encryptedNone

A connection with only one method can only do that method’s job. A connection with only the AppRole method can’t resolve secrets for requests members send themselves. A connection with only the OIDC method can’t resolve secrets in monitors. To support both, configure both methods.

How access works

The AppRole is the connection’s identity, not a person’s. Its ACL policy decides which secrets Postman can reach for your team. Postman decides who can use each one:

  • Permission to create linked keys decides who can bring one of those secrets into Postman.
  • A linked key’s sharing decides which members and runs can use it. Anyone who can use a linked key can read its value.
  • Allowed domains limit where the value can be sent.

The AppRole method reads secrets with the ACL policy attached to the AppRole, not the member’s. For this reason, grant the AppRole read access to only the secrets you want to share with your team. To have HashiCorp Vault check each member’s own access instead, configure only the OIDC method. Linked keys on that connection then don’t resolve in monitors, scheduled runs, the Postman CLI, or deployed flows.

Monitors, scheduled collection runs, performance tests, self-hosted runners, and deployed flows don’t run as a team member. In these, a linked key resolves only if it’s shared with your whole team, or if it was created in the same workspace as the monitor or run. A key that’s shared only with specific teammates doesn’t resolve in them.

Which authentication method resolves a linked key

The authentication method used to resolve a linked key’s value depends on where the request runs:

Where the request runsAuthentication method usedNotes
Postman desktop app: sending a request, running a flow from the canvas, or running a collection with the Collection RunnerOIDC (per-user)Resolves on your device, with your own HashiCorp Vault access. Postman’s servers don’t call HashiCorp Vault for this method.
Postman web appNot supportedThe variable shows This secret resolves only in the Postman desktop app, and the request uses an empty string or the literal {{variable-name}}.
Monitors, including ones that run on a runner in your own networkAppRole (machine)Resolves through Postman’s vault service, over TLS, and is never stored. A runner in your network also calls Postman’s vault service to resolve the secret.
Scheduled collection runs (Postman Cloud)AppRole (machine)Resolves through Postman’s vault service, over TLS, and is never stored.
Postman CLI (collection run, request, or environment get, with an API key or after postman login)AppRole (machine)Includes CLI runs in a CI pipeline. Postman checks that the user can use the linked key, then reads it with the AppRole. The user’s own HashiCorp Vault access isn’t checked.
Deployed flows and flow actions (Postman Cloud)AppRole (machine)Resolves through Postman’s vault service, over TLS.

Prepare HashiCorp Vault

Before you add the connection in Postman, complete the following setup in HashiCorp Vault.

You need the base URL of your HashiCorp Vault server, a KV secrets engine (version 1 or version 2) containing at least one secret, and an ACL policy that grants read access to the secret’s path. If you use Vault Enterprise or HCP Vault Dedicated, also note the namespace that contains them. Open source HashiCorp Vault doesn’t use namespaces.

Postman reads a KV version 2 secret at GET /v1/<mount>/data/<path>, and adds ?version=N when you pin a version. It reads a KV version 1 secret at GET /v1/<mount>/<path>. Grant read on the matching path. For KV version 2, the policy path includes a data/ segment. For example:

# KV version 2
path "secret/data/*" {
capabilities = ["read"]
}
# KV version 1
path "secret/*" {
capabilities = ["read"]
}

The AppRole method reads secrets from Postman’s cloud. For monitors, scheduled runs, performance tests, self-hosted runners, the Postman CLI, and deployed flows to resolve secrets, your HashiCorp Vault server must meet the following requirements:

  • The server is reachable from the public internet at a public IP address. Postman’s cloud has no published IP addresses. This also applies to runners in your own network, because Postman’s vault service, not the runner, reads the secret.
  • The server uses HTTPS with a certificate from a publicly trusted certificate authority. Self-signed certificates and private certificate authority certificates aren’t supported.

The OIDC method reads secrets from each member’s machine, so it works behind a firewall if members can reach the server, such as over a VPN.

Complete one of the following, depending on which authentication method you plan to configure.

AppRole method

To prepare HashiCorp Vault for the AppRole method, do the following:

  1. Enable HashiCorp Vault’s AppRole auth method if it isn’t already enabled. The default mount path is approle.
  2. Create an ACL policy that grants read on the secret’s path, as described above.
  3. Create an AppRole role whose token policies include that ACL policy, then generate a Role ID and Secret ID. Grant the role access to only the secrets you want to share with your team, because anyone who can create a linked key can pick any secret this AppRole can read.

Secret IDs can expire, depending on how the AppRole is configured. When one expires, generate a new Secret ID in HashiCorp Vault, then replace the credentials on the method.

OIDC method

The OIDC method lets each member resolve secrets with their own identity in HashiCorp Vault. It needs three things in your environment:

  • An OpenID Connect identity provider with a public client registered for Postman, such as a native app that uses PKCE and has no client secret. For your own provider, such as Okta or Microsoft Entra, add the Postman desktop app’s redirect URI exactly as shown, including the trailing slash: http://127.0.0.1:10534/. Most identity providers reject the sign-in if the registered URI differs in any way, such as localhost instead of 127.0.0.1.

  • A HashiCorp Vault JWT/OIDC auth method that trusts that provider, with its oidc_discovery_url set to the provider’s issuer URL.

  • A HashiCorp Vault role on that auth mount that maps a signed-in member to an ACL policy that grants read access, with bound_audiences set to the OIDC client ID and user_claim set to a claim such as sub.

If you use HashiCorp Vault’s own OIDC provider as your identity provider, each member also needs a HashiCorp Vault login to sign in with, such as a userpass account. A root token can’t sign in, because it has no HashiCorp Vault identity. With an external identity provider, such as Okta or Microsoft Entra, members sign in with their identity provider account.

Each authentication method resolves secrets with a different identity, so each one needs its own read access in HashiCorp Vault. An ACL policy that covers a member’s own identity in HashiCorp Vault doesn’t apply to the AppRole identity.

Add a HashiCorp Vault connection

As a Postman Admin, Super Admin, or Security Manager, you create the connection once for your team.

To add a HashiCorp Vault connection, do the following:

  1. Click Settings in the Postman header, then select Team settings.
  2. Under Security & Governance, click Shared vault, then select the External vault integrations tab. If you see Turn on instead, turn on Postman Shared Vault for your team first.
  3. Click Add connection.
  4. Select HashiCorp Vault from the Provider dropdown list.
  5. Enter a Display name to identify the connection in Postman. It must be unique in the team, ignoring case.
  6. Enter the Server URL of your HashiCorp Vault server, such as https://vault.example.com. Include the port if it isn’t standard, such as https://vault.example.com:8200. The URL must start with https://.
  7. (Optional) Enter a Namespace if you use Vault Enterprise or HCP Vault Dedicated. HCP Vault Dedicated uses the admin namespace or a namespace under it. Leave it blank for open source HashiCorp Vault.
  8. Click Create connection.

You can’t change a connection’s Server URL or display name after you create it. To point at a different server, delete the connection and create a new one.

The connection card shows its name, HashiCorp Vault with the server URL, and a section for each authentication method. A reachability status appears once someone on your team checks reachability. Until you configure an authentication method, the card reads Configure at least one method to enable secret resolution.

To check that Postman can reach your server, click Check reachability on the connection. Reachable means a server answered at that URL. It doesn’t confirm that the server is HashiCorp Vault, that it’s unsealed, or that any identity can read a secret.

To confirm that a secret resolves, send a request or run a monitor that uses a linked key.

Configure an authentication method

A new connection lists both authentication methods as Not configured, and it can’t resolve secrets until you configure at least one. Configure the method that matches how your team uses secrets, or configure both.

Team settings opens in your web browser, so you create and configure connections there. A connection or method change doesn’t reach a Postman desktop app that’s already open until members select Help > Clear Cache and Reload or restart Postman. Until then, members who are already signed in keep using the previous settings.

AppRole (machine)

Configure the AppRole method for machine use, such as monitors and other unattended runs. It uses the AppRole’s identity rather than an individual member’s.

To configure the AppRole method, do the following:

  1. Click Configure next to AppRole (machine) on the connection.
  2. Enter the Vault auth mount path where HashiCorp Vault’s AppRole auth method is enabled. The field defaults to approle.
  3. Enter the Role ID and Secret ID for the AppRole.
  4. Click Configure.

Postman doesn’t verify these credentials when you save them, and there’s no test action for an individual method. The first time they’re checked is when something reads a secret. If the Role ID or Secret ID is wrong, or the AppRole’s ACL policy doesn’t grant read access to the secret, the method still saves and resolution fails later.

Secret IDs can expire in HashiCorp Vault, depending on how the AppRole is configured. When one expires, generate a new Secret ID in HashiCorp Vault, then replace the credentials on the method. Postman stores the Role ID and Secret ID write-only and can’t display them, so you enter both values together when you rotate either one.

OIDC (per-user SSO)

Configure the OIDC method for per-user use, so each member resolves secrets with their own identity and ACL policies in HashiCorp Vault. No credentials are stored for this method.

To configure the OIDC method, do the following:

  1. Click Configure next to OIDC (per-user SSO) on the connection.
  2. Enter the OIDC issuer URL of your identity provider. Postman discovers its endpoints from /.well-known/openid-configuration.
  3. Enter the OIDC client ID registered with your identity provider for Postman.
  4. Enter the Vault auth mount path where HashiCorp Vault’s JWT/OIDC auth method is enabled. The field defaults to jwt.
  5. Enter the Vault role to authenticate with.
  6. (Optional) Enter Additional scopes as a space-separated list, such as profile email. Postman always requests the openid scope.
  7. Click Configure.

Once configured, the method’s status reads Available in the desktop app. Members sign in individually the first time they use a linked key.

Workspace Editors, Security Managers, and Super Admins can create a linked key that resolves from a HashiCorp secret. Each workspace has its own shared vault, so create the linked key in the workspace where you want to use it.

A HashiCorp reference is made up of several fields that locate the secret and, when needed, pick one field out of it. Before you link a key, note the secrets engine mount, the KV version, the secret path, and the field you want.

To create a linked key that resolves from a HashiCorp secret, do the following:

  1. In Postman, open a workspace.
  2. Click Vault in the footer, and select Shared Vault.
  3. Click the External vaults tab, next to Postman vault.
  4. Click Link external secret.
  5. Select a connection, then click Next. If only one connection is available, Postman skips this step.
  6. Enter a Key name to reference the secret by in Postman. No spaces, {, or }.
  7. (Optional) Enter Allowed domains to limit where the secret can be used, such as api.example.com, *.internal.example.com. By default, a linked key can be used in requests to any domain. To learn more, see Create and manage vault secrets.
  8. Enter the Secrets engine mount where the secret is stored, such as secret.
  9. Select the KV engine version that matches the secrets engine.
  10. Enter the Secret path, such as app/prod/db.
  11. (Optional) Enter a Field selector as a JSON Pointer to one field within the secret, such as /password.
  12. (Optional) Enter a Secret version to read a specific version, or leave it blank to read the latest version. This field appears only when you select KV version 2.
  13. Click Link secret.

A HashiCorp secret can hold more than one field. Field selector is required when the secret has multiple fields, because Postman resolves a key to a single value. The selector must start with a forward slash, and the field it points to must hold a single value, not an object or list.

The secrets engine mount is a single path segment, such as secret, so a nested mount such as team/kv isn’t supported. Secret path segments can contain letters, digits, periods, underscores, and hyphens.

Postman doesn’t contact HashiCorp Vault when you create a linked key, so it can’t check the location. A wrong mount, path, field, or version only fails later, when Postman tries to read the secret.

The linked key appears under its connection on the External vaults tab. To see which secret it points to, click View value. Postman shows the reference as the mount, the secret path, and the field, such as secret/app/prod/db/password, and notes that the value is resolved from your provider at run time and isn’t stored in Postman. If you pin a version, Postman adds it to the end, such as secret/app/prod/db/password @v3.

Use the linked key in a request

You use a linked key by setting it as the value of a secure variable, then referencing that variable in your requests.

To use a linked key in a request, do the following:

  1. Open a global, environment, or collection variable, then click Unlock icon Secure next to the variable name.
  2. Leave the value empty, then click the value cell and select the linked key from your workspace’s shared vault.
  3. To use the variable in the Postman Cloud, such as in a monitor, scheduled collection run, performance test, or the Postman CLI, hover over the value cell and click Share.
  4. Reference the variable in your request using the {{variable-name}} syntax.

When a linked key can’t be resolved, the request uses an empty string or the literal {{variable-name}} instead, and nothing reports an error. This happens if you haven’t signed in, if HashiCorp Vault denies access, if the secret doesn’t exist, or if you send the request from the Postman web app. The same applies in monitors, scheduled runs, the Postman CLI, and deployed flows. Sign in on your device in the Postman desktop app, and check the ACL policy of the member or the AppRole.

Sign in to resolve secrets on your device

Before you can resolve a linked key using the OIDC authentication method in the Postman desktop app, sign in to the connection that owns the key. The AppRole method isn’t used for requests you send from the desktop app. It only resolves linked keys in monitors, scheduled runs, the Postman CLI, and deployed flows.

Sign in from either of the following:

  • In your workspace’s shared vault, open the External vaults tab, then click Sign in on this device next to the connection.
  • Hover over the variable in your request. If you’re not signed in, a warning reads Sign in to resolve this secret, with options to sign in or open the shared vault.

Your browser opens your identity provider’s sign-in page. After you sign in and accept any consent prompt, the browser shows You’re authorized, and the connection’s group header shows Signed in with your account.

The following also apply:

  • The HashiCorp Vault token lives in the Postman desktop app’s memory only. It’s never written to disk and never reaches Postman.
  • Complete the sign-in within 5 minutes, or it times out and you start over.
  • Postman renews your HashiCorp Vault token for as long as the ID token from your identity provider sign-in is valid, within the limits of your HashiCorp Vault role. After that, sign in again. Restarting Postman or reloading the window also ends the session.
  • Signing out clears the token and every cached value for that connection.
  • Resolved values are cached on the device for up to 60 minutes, per secret path. Sign out and back in to force a fresh read.
  • The desktop app calls HashiCorp Vault directly, so the server must be reachable from your machine, such as over a VPN. Your proxy and certificate settings apply. Restart Postman after you change them.
  • Sign-in is per connection, so keys linked through two HashiCorp connections need two separate sign-ins.

Manage the integration

After you create a connection, you can check its reachability, rotate or remove its authentication methods, update linked keys, and delete it. For these tasks, see Manage Shared Vault integrations.

What’s stored and how it’s protected

DataWhere it’s storedHow it’s protected
Secret valuesNot stored by Postman. Read from HashiCorp Vault at use time.Postman desktop app: held in memory only, for up to 60 minutes, then re-fetched. Monitors: fetched when the run starts. CLI: fetched per request. Never cached on Postman’s servers.
AppRole Role ID and Secret IDThe vault service’s database, as ciphertextEncrypted with envelope encryption: AES-256-GCM using a data key generated and wrapped by AWS KMS. Stored write-only. If your team uses BYOK, Postman uses your team’s own AWS KMS key.
OIDC settings (issuer URL, client ID, auth mount path, Vault role, scopes)The vault service’s database, as plain configurationNot treated as secret. No credentials are stored for this method.
Server URL and namespaceThe vault service’s database, as plain configurationNot treated as secret. Every team member can see them.
Secret locationThe vault service’s database, in the linked key’s rowEncrypted at rest. It isn’t itself a secret. Anyone who can open Shared Vault can see it, for any linked key.
Member’s HashiCorp Vault token (OIDC method)The Postman desktop app’s memory, on that device onlyNever written to disk, and never sent to Postman.

Next steps