Certifications · HashiCorp

HashiCorp Vault Associate & Operations Professional

Every platform eventually runs into the same wall: you can put everything in Git except the passwords. HashiCorp Vault is the most widely deployed answer to that problem, and HashiCorp sells two certifications for it — a one-hour multiple-choice Vault Associate (003) and a four-hour, lab-based Vault Operations Professional. This page is a verified, unsentimental guide to both: what they actually test, what they cost, how their objectives map onto the platform work covered elsewhere on this site — and, just as importantly, the cases where you should spend the same weekend on something else.

☺ Explain it like I’m 10

Imagine the school keeps every locker key in one big safe. The safe has a rule book: “Sam may open locker 12, but only for one hour, and then the key stops working.” Nobody carries a key around forever — you ask the safe when you need one, and it hands you a key that melts. Vault is that safe. The Associate exam asks whether you know how the safe works. The Operations Professional exam sits you in front of a real safe and asks you to install it, bolt it to the floor, and keep it running when one door jams.

🐢Your host for this topic: Timmy the Turtle — the security one. Timmy is slow on purpose: he reads the exam objectives before he reads the marketing page, and he will not let you memorise a price that changed last quarter.

What these credentials are, and where they sit

☺ Like you’re 10: Two badges from the company that makes Vault — a beginner one you answer questions for, and a hard one where you actually do the work.

Both credentials are issued by HashiCorp, the vendor that builds Vault. That is the first thing to internalise: unlike the CNCF exams covered on the certifications hub, these are vendor certifications about a specific product. They are not neutral surveys of the secrets-management landscape. They test how Vault does things, in Vault’s vocabulary, at the Vault version the exam is pinned to.

Two rungs, one ladder

HashiCorp groups its exams into two tracks — Infrastructure Automation (Terraform, covered on the Terraform certification page) and Security Automation, where the Vault pair lives. The Associate is the entry rung: one hour, online-proctored, multiple choice, for engineers who understand Vault’s concepts and can drive it from the CLI, API and UI. The Operations Professional is a different animal — a long, hands-on exam that drops you into a pre-provisioned Linux box to build, harden and operate Vault, including a meaningful chunk of Vault Enterprise functionality.

Per the official pages, as of writing, both exams test against Vault 1.16 and both certifications are valid for two years. The Associate is “strongly recommended” but not formally required before the Professional.

Who they are aimed at

HashiCorp frames the Associate at cloud engineers who know Vault’s basic concepts and use cases, assuming terminal skills, some infrastructure understanding and introductory security knowledge. The Professional expects considerably more: Linux administration, IP networking, PKI experience, information-security fundamentals and container infrastructure. That last prerequisite is what makes this page relevant to you — the Professional explicitly includes an objective on the security implications of running Vault in Kubernetes.

Why a platform engineer might take it — and when to skip

☺ Like you’re 10: Learn the safe if your school actually has that safe. If your school uses a different safe, learn that one instead.

Here is the honest case for. Secrets are the hardest unsolved corner of GitOps: everything else about a platform can be a file in a repo, and the plaintext credential cannot. The Vault Associate curriculum is, almost by accident, a very good tour of the concepts that fix this — dynamic short-lived credentials, leases and renewal, path-based authorisation, and workload identity via the Kubernetes auth method. Those ideas transfer to AWS Secrets Manager, Google Secret Manager, Azure Key Vault and the External Secrets Operator even when the commands do not. If your organisation already runs Vault, the Associate is cheap, fast, and turns folklore into a mental model.

When to skip it — properly

And here is the honest case against, which most study sites will not give you:

◆ Key idea

The transferable lesson from Vault is the death of the standing credential. A password that exists before anyone needs it, and keeps existing after, is the thing attackers steal. Vault’s whole model — dynamic secrets minted on demand, bound to a lease, revoked automatically — is the endgame every platform is walking toward. That idea is worth learning whether or not you ever sit the exam.

What the exams actually test

☺ Like you’re 10: The vendor publishes an exact list of what they’ll ask. Read the list, not somebody’s blog.

HashiCorp publishes a formal exam content list for each exam. The domains below are transcribed from those official pages. One important caveat before you build a study plan around percentages: HashiCorp does not publish domain weights for either exam. Anyone quoting you “Domain 5 is 22%” invented it.

Vault Associate (003) — nine objective areas

#Objective areaWhat sits underneath it
1Authentication methodsPurpose of auth methods; choosing one by use case; human vs system auth; identities and groups; authenticating and configuring via API, CLI and UI.
2Vault policiesThe value of policies; path; capabilities; choosing a policy from requirements; configuring policies via UI and CLI.
3Vault tokensService vs batch tokens; root token uses and lifecycle; token accessors; impact of TTL; orphaned tokens; creating tokens for a need.
4Vault leasesPurpose of a lease ID; renewing leases; revoking leases.
5Secrets enginesChoosing an engine; dynamic vs static secrets; transit; purpose of engines; response wrapping; the value of short-lived dynamic secrets; enabling engines and reading secrets via API, CLI and UI.
6Encryption as a serviceEncrypt and decrypt secrets; rotate the encryption key.
7Vault architecture fundamentalsHow Vault encrypts data; how to seal and unseal; configuring environment variables.
8Vault deployment architectureCluster strategy for self-managed and HashiCorp-managed clusters; storage backends; Shamir secret sharing and unsealing; DR and performance replication; self-managed vs HashiCorp-managed.
9Access management architectureThe Vault Agent; the Vault Secrets Operator.

Notice objective 9. The Associate blueprint reaches directly into Kubernetes, and the two named artefacts — Vault Agent and the Vault Secrets Operator — are exactly the pieces a platform engineer wires into a cluster.

Vault Operations Professional — eight objective areas

#Objective areaNotable sub-objectives (Enterprise-only items marked)
1Create a working Vault server configurationEnable and configure secrets engines and auth methods; production hardening; auto-unseal; integrated storage (open source and Enterprise); secure initialisation; regenerate a root token; rekey and rotate encryption keys.
2Monitor a Vault environmentTelemetry; audit logs; operational logs.
3Employ the Vault security modelSecure introduction of Vault clients; security implications of running Vault in Kubernetes.
4Build fault-tolerant Vault environmentsConfigure an HA cluster; (Enterprise) DR replication; (Enterprise) promote a secondary cluster.
5Understand HSM integration(Enterprise) benefits of auto-unseal with an HSM; (Enterprise) seal wrap (PKCS#11).
6Scale Vault for performanceBatch tokens; (Enterprise) performance standby nodes; (Enterprise) performance replication; (Enterprise) paths filters.
7Configure access controlIdentity entities and groups; write, deploy and troubleshoot ACL policies; (Enterprise) Sentinel policies; (Enterprise) control groups; (Enterprise) namespaces and multi-tenancy.
8Configure Vault AgentSecurely configure auto-auth and token sink; configure templating.

Per the official orientation page, the Professional runs a Vault Enterprise binary, mixes lab scenarios with multiple-choice and “hybrid” questions that require inspecting the live environment, allows the Vault UI, Visual Studio Code and Vault’s own documentation during the exam, and currently requires a US English QWERTY keyboard layout. Labs may be completed in any order and each is scored independently.

The substance you actually need to know

☺ Like you’re 10: The safe locks itself when it restarts, you prove who you are to open it, and then it hands you keys that expire.

Seal, unseal, and how Vault protects itself

Vault encrypts everything it stores with a data-encryption key, itself encrypted by a master key. When Vault starts it is sealed — it holds the ciphertext but not the key, so it serves almost nothing. Unsealing reconstructs that key. Classic Vault uses Shamir secret sharing: initialisation splits the unseal key into n shares and requires a threshold of k to reassemble it, so no single operator can bring Vault up alone. In production you replace that ceremony with auto-unseal, delegating the wrapping key to a cloud KMS or HSM — which is why “auto unseal Vault” is its own Professional objective.

Auth methods, policies, tokens and leases

The flow is always the same shape. A human or a workload authenticates through an auth method (OIDC, LDAP, AppRole, or — for us — Kubernetes). Vault checks the identity, looks up its policies, and returns a token carrying them. The token has a TTL. Anything that token reads from a dynamic engine comes back with a lease, which also has a TTL and can be renewed or revoked. Revoke the lease and the underlying credential is destroyed at the source — that is the property that makes short-lived secrets safe.

# --- initialise and unseal (Shamir: 5 shares, any 3 unseal) -----------------
vault operator init -key-shares=5 -key-threshold=3
vault operator unseal      # run three times with three different shares
vault status               # Sealed: false

# --- Kubernetes auth: let a ServiceAccount become a Vault identity ----------
vault auth enable kubernetes
vault write auth/kubernetes/config \
    kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443" \
    kubernetes_ca_cert=@ca.crt \
    token_reviewer_jwt="$REVIEWER_JWT"

vault write auth/kubernetes/role/checkout \
    bound_service_account_names=checkout \
    bound_service_account_namespaces=payments \
    token_policies=checkout-read \
    token_ttl=1h
# note: the older `policies=` / `ttl=` spellings still work but the API docs
# mark `policies` DEPRECATED — write new roles with the token_* parameters

# --- KV v2: versioned static secrets (note the implicit data/ path) ---------
vault secrets enable -path=secret -version=2 kv
vault kv put -mount=secret checkout/config api_key=abc123
vault kv get -mount=secret -version=1 checkout/config
vault kv patch -mount=secret checkout/config log_level=debug
vault kv delete -mount=secret checkout/config        # soft delete, recoverable
vault kv undelete -mount=secret -versions=2 checkout/config
vault kv destroy  -mount=secret -versions=2 checkout/config   # unrecoverable

# --- database engine: credentials that did not exist a second ago -----------
vault secrets enable database
vault write database/config/orders \
    plugin_name="postgresql-database-plugin" \
    allowed_roles="orders-ro" \
    connection_url="postgresql://{{username}}:{{password}}@pg:5432/orders" \
    username="vaultadmin" password="s3cr3t"

vault write database/roles/orders-ro \
    db_name=orders \
    creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
    default_ttl="1h" max_ttl="24h"

vault read database/creds/orders-ro     # → a brand-new user, leased for 1h
vault lease renew  database/creds/orders-ro/xxxx
vault lease revoke database/creds/orders-ro/xxxx

# --- transit: encryption as a service (Vault never stores your data) --------
vault secrets enable transit
vault write -f transit/keys/orders-pii
vault write transit/encrypt/orders-pii \
    plaintext=$(printf '%s' "4111-1111-1111-1111" | base64)   # printf, not echo:
                                                             # a trailing newline
                                                             # ends up in ciphertext
vault write -f transit/keys/orders-pii/rotate

KV v1 vs KV v2 — the trap everyone falls into

KV v1 is a flat key-value store: put, get, delete, gone. KV v2 adds versioning, soft delete that can be undeleted, hard destroy, per-secret metadata, and check-and-set writes. The exam-relevant gotcha is the path shape: on a v2 mount the API path is secret/data/<path> for values and secret/metadata/<path> for version history, even though the vault kv CLI hides that from you. Write a policy against secret/checkout/* on a v2 mount and it will silently grant nothing.

Policy syntax — path plus capabilities

Vault policies are HCL, deny-by-default, and made of paths carrying capabilities: create, read, update, patch, delete, list, sudo (for root-protected paths), deny, plus subscribe and recover. Per the official policy documentation, deny “always takes precedence regardless of any other defined capabilities, including sudo.” Paths match exactly, with * as a trailing glob and + as a single-segment wildcard; the most specific match wins.

# checkout-read.hcl — a least-privilege policy for one workload
# KV v2 values live under data/, history under metadata/
path "secret/data/checkout/*" {
  capabilities = ["read"]
}

path "secret/metadata/checkout/*" {
  capabilities = ["list", "read"]
}

# short-lived database credentials, on demand
path "database/creds/orders-ro" {
  capabilities = ["read"]
}

# a single-segment wildcard: any team, but only its own config
path "secret/data/teams/+/config" {
  capabilities = ["read"]
}

# belt and braces — deny beats everything else, including sudo
path "secret/data/checkout/root-key" {
  capabilities = ["deny"]
}

Getting secrets into a Pod: three doors

This is the part that matters most on a Kubernetes platform, and HashiCorp documents three integrations with a real comparison. The Vault Agent Injector is a mutating webhook that adds a Vault Agent sidecar to annotated Pods; the agent authenticates, renders templated secrets to a shared in-memory volume, and keeps them fresh. The Vault Secrets Store CSI provider plugs into the vendor-neutral Secrets Store CSI Driver and mounts secrets as ephemeral volumes — the right choice if you already run that driver for several backends. The Vault Secrets Operator (VSO) is the newest: a controller that reconciles custom resources and syncs Vault material into native Kubernetes Secret objects, so applications consume them with standard Kubernetes patterns. HashiCorp’s own comparison table ranks the load each one puts on Vault: VSO is “Lowest load due to CRD-specific connections and cluster-local secret caching,” the CSI provider is “Higher load due to per-Pod connections,” and the Agent Injector is “Highest load due to per-Pod connections and sidecar pattern.” The same table marks both VSO and the CSI provider as Kubernetes-native, and VSO is the only one of the three that writes a real Secret object — the other two surface secrets as mounted volumes.

# Door 1 — Vault Agent Injector: annotations on the Pod template
apiVersion: apps/v1
kind: Deployment
metadata: { name: checkout, namespace: payments }
spec:
  template:
    metadata:
      annotations:
        vault.hashicorp.com/agent-inject: "true"
        vault.hashicorp.com/role: "checkout"                 # the k8s auth role
        vault.hashicorp.com/agent-inject-secret-db: "database/creds/orders-ro"
        vault.hashicorp.com/agent-inject-template-db: |
          {{- with secret "database/creds/orders-ro" -}}
          DB_USER={{ .Data.username }}
          DB_PASS={{ .Data.password }}
          {{- end }}
    spec:
      serviceAccountName: checkout      # bound_service_account_names
      containers:
        - name: app
          image: ghcr.io/acme/checkout:1.4.3
          # secret is rendered to /vault/secrets/db — memory-backed, never on disk
---
# Door 3 — Vault Secrets Operator: a CRD that produces a real Secret
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultStaticSecret
metadata: { name: checkout-config, namespace: payments }
spec:
  vaultAuthRef: checkout-auth
  mount: secret
  type: kv-v2
  path: checkout/config
  refreshAfter: 60s
  destination:
    name: checkout-config      # a normal Kubernetes Secret appears here
    create: true
🦆 Dot’s-eye view

“I don’t know or care which door the platform team picked. My Deployment has a ServiceAccount, and by the time my container starts there’s a database username and password waiting for it. What I did notice is that the credentials change every hour — so I stopped caching them at boot and started re-reading the file. That was the only change I ever had to make.”

How this maps onto the platform work on this site

☺ Like you’re 10: Almost everything on the Vault list already has a page here — this table shows you where.

Read the Associate blueprint next to this site’s table of contents and the overlap is striking. Vault is not a side quest; it is a concrete implementation of ideas that recur across four separate domains of platform work.

Vault objectiveWhere it lives on this siteThe connection
Secrets engines, dynamic vs static secrets, leasesSecrets ManagementThe whole “shrink the standing footprint” argument. Dynamic, leased credentials are the destination; Vault is one vehicle.
Vault Secrets Operator, Agent Injector, CSI providerExternal Secrets OperatorESO solves the same problem from the CNCF side, with Vault as one of many providers. Know both shapes and when each wins.
Policies, capabilities, identities and groupsSecurity & PolicyPath-based, deny-by-default authorisation is the same mental model as Kubernetes RBAC and admission policy — different nouns, identical instincts.
Kubernetes auth method, secure introductionKubernetes SubstrateThe ServiceAccount token as workload identity — the “secret zero” problem and how projected tokens solve it.
PKI secrets engine, certificate lifetimescert-managercert-manager can use Vault as an issuer; the platform pattern (short-lived certs, automated renewal) is shared.
Why secrets can’t live in the repoGitOps WorkflowsThe one thing that must never be committed. Vault holds the plaintext; Git holds only the reference.
Audit logs, telemetry, operational logs (Ops Pro D2)ObservabilityA secrets store you cannot observe is a secrets store you cannot defend. Vault emits metrics and an auditable log of every request.
🐢 Timmy’s workshop · 30 min

On a throwaway kind cluster, run Vault in dev mode, enable the Kubernetes auth method and the database engine against a scratch Postgres. Bind one ServiceAccount to one policy that grants nothing except read on database/creds/orders-ro. Deploy a Pod with the Agent Injector annotations and cat /vault/secrets/db. Then run vault lease revoke on the lease and watch the Postgres user vanish with \du. Ten minutes of setup, and “dynamic secrets” stops being a slogan. For a longer, guided version of the same muscle on the platform side, work through the security lab.

Exam logistics — attributed, and go check it yourself

☺ Like you’re 10: Here are the numbers the vendor printed. Numbers move — look them up again before you pay.

Vault Associate (003)Vault Operations Professional
FormatOnline proctored, multiple choiceOnline proctored; lab-based scenarios plus multiple choice and hybrid questions
Duration1 hour4 hours, 15-minute break included
Question countNot published by HashiCorp on the certification page — don’t trust a number you read elsewhere
Cost$70.50 USD, plus locally applicable taxes and fees$295 USD, plus locally applicable taxes and fees
Free retakeNot includedIncluded
Validity2 years2 years
Product versionVault 1.16Vault 1.16 (Enterprise binary in the lab)
PrerequisitesNone formally; terminal skills, infra and security basics assumedNone formally; Associate strongly recommended, plus Linux, networking, PKI, infosec and container fundamentals
Domain weightsNot published by HashiCorp for either exam

All of the above is taken from HashiCorp’s official Security Automation certifications page and the official exam content lists for the Vault Associate (003) and the Vault Operations Professional, as of writing. HashiCorp also publishes free sample questions and an exam orientation for the Professional — do both before you book.

⚠ These numbers expire faster than a Vault lease

Exam codes, prices, formats, product versions and even entire certifications change without much fanfare. Confirm everything on the official page before you book. Things that have already moved in this family: the Vault Associate 002 exam has been superseded by 003 and is no longer the current version; the Terraform Associate is now on 004, so 002- and 003-era study material is stale; and the Consul Associate exam — the other credential that used to sit alongside Vault — retired on 15 July 2026 (the last day to schedule an appointment was 13 July 2026), so it can no longer be booked at all. HashiCorp’s certifications page now lists four exams in total: Terraform Associate (004) and Terraform Authoring and Operations Professional under Infrastructure Automation, and the two Vault exams under Security Automation. If a course or bootcamp is still selling you Consul Associate prep or Vault Associate 002 material, walk away. Source of truth: developer.hashicorp.com/certifications.

🎬 At the Platform Guild
🦊

Foxy: If we put the database password in a Kubernetes Secret, that’s encrypted, right? Job done?

🐢

Timmy: It’s base64. That’s not encryption, that’s a costume. And even encrypted at rest, it’s a password that exists forever, for everyone with get secrets in that namespace.

🐿️

Nutty: Ooh — so Vault mints a new Postgres user per Pod, for one hour, and deletes it after? The password we’re trying to protect… doesn’t exist yet?

🐢

Timmy: That’s the whole trick. You can’t steal what hasn’t been created, and you can’t reuse what expired at 3pm.

👺

Gizmo: Fine. I’ll just take the root token. The one from vault operator init that someone pasted into the team wiki in 2022. 🤑

🐢

Timmy: Which is exactly why “root token uses and lifecycle” is its own exam objective, Gizmo. You generate it, you use it once, you revoke it. Then you regenerate it with a quorum when you truly need it.

🦫

Benny: And none of it goes in Git. Git gets the path. Vault gets the plaintext.

Verdict: where it fits in a realistic order

☺ Like you’re 10: Do the cheap one if your job touches Vault. Only do the expensive one if you’re the person who keeps Vault alive.

Sequence it like this. If you are working toward platform-engineering roles generally, the CNCF ladder comes first — CNPA or CNPE, then the Kubernetes exams, as laid out on the certifications hub. Vault Associate is a strong second credential once your platform actually runs Vault, or once you own the secrets story on your team. It is cheap, it is one hour, and the concepts pay rent immediately in secrets design conversations. Budget a couple of focused weeks if you use Vault weekly, four to six if you are starting cold.

The Operations Professional is a specialist commitment: genuinely hard, hands-on, and a certificate that you can run Vault as production infrastructure rather than consume it. Take it if you are on a team that operates a Vault cluster — especially a Vault Enterprise cluster with replication and namespaces. If you merely consume Vault as a client, or your organisation is standardised on a cloud secrets manager, skip it without guilt and put the hours into External Secrets, workload identity, the policy side of your own platform, and the security practice tasks. A credential you cannot exercise at work decays faster than the two-year clock.

One last framing that keeps Timmy honest: certifications are a proof, not a curriculum. Read the Vault objectives even if you never book the exam — they are an unusually well-organised list of the things that go wrong with secrets. Auth, policy, token, lease, engine, seal. Learn the six nouns and you can evaluate any secrets system, including the one you already have. The glossary has all six.

🐢 Timmy’s checkpoint

1. What does it mean for Vault to be “sealed,” and what are the two common ways to unseal it? 2. On a KV v2 mount, why does a policy on secret/checkout/* grant nothing? 3. Which capability beats every other capability in a Vault policy, including sudo? 4. Name the three Kubernetes integrations for delivering Vault secrets to Pods, and say which one produces a native Kubernetes Secret. 5. Give two honest reasons a platform engineer should skip the Vault Operations Professional. 6. Which HashiCorp credential that used to sit alongside the Vault exams has now retired, and when? 7. Which Vault release are both exams pinned to, and why does that matter?

Check your answers
  1. Sealed means Vault holds the encrypted data but not the key to decrypt it, so it can serve almost nothing until unsealed. Unseal either by supplying a threshold of Shamir key shares (e.g. 3 of 5) or via auto-unseal, delegating the wrapping key to a cloud KMS or HSM.
  2. Because a KV v2 mount stores values under secret/data/… and history under secret/metadata/…; the vault kv CLI hides the data/ segment, but policies are evaluated against the real API path.
  3. deny — per the official documentation it always takes precedence regardless of any other defined capabilities, including sudo.
  4. Vault Agent Injector (sidecar renders to a shared memory volume), Vault Secrets Store CSI provider (ephemeral mounted volume via the vendor-neutral driver), and the Vault Secrets Operator (reconciles CRDs and syncs into a native Kubernetes Secret — that’s the one).
  5. Any two of: a large share of its objectives are explicitly Vault Enterprise features you cannot practise or use without a licence; you consume Vault rather than operate it; your organisation is standardised on a cloud provider’s secrets manager; the CNCF ladder is a better use of the same time and money for a general platform role.
  6. The Consul Associate — retired on 15 July 2026, with 13 July 2026 the last day to schedule an appointment. HashiCorp’s certifications page now lists four exams: two Terraform, two Vault. Always re-confirm on the official page.
  7. Vault 1.16, for both the Associate (003) and the Operations Professional. It matters because 1.16 shipped in April 2024 and the product has moved on several minor releases since — anything newer is not examinable, and a study guide written against a current Vault will cover behaviour the exam does not test. Verify the pinned version on the official page before you buy study material.