Skip to main content
Cloud DevOps Solutions
Get a quote Talk to an engineer

DevSecOps and secrets

HashiCorp Vault Consulting and Engineering for Secrets Management in Production

HashiCorp Vault is a secrets management server that stores, generates and leases credentials, encrypts data as a service and records every access in an audit log. We deploy it highly available, connect it to your identities, migrate secrets in stages and operate it so developers get credentials without tickets.

Key takeaways

  • Vault's real value is dynamic, short-lived credentials and a single audit trail, not a nicer place to keep static passwords.
  • Operating Vault is a commitment: unseal, backup, upgrades and policy review all need an owner. Managed cloud secret stores are simpler if you do not need its features.
  • Authentication should use workload identity (Kubernetes service accounts, cloud IAM, OIDC from CI), never long-lived tokens pasted into pipelines.
  • Roll out by secret type, starting with the ones that hurt most, and keep the old path working until the new one is proven.
  • Policies, auth roles and mounts belong in Terraform so access is reviewed like any other change.
  • A Vault outage can stop deployments and restarts, so availability and a tested recovery path are part of the design.

What teams use HashiCorp Vault for

Dynamic database credentials

Applications request a username and password that Vault creates on demand and revokes when the lease ends, so a leaked credential expires on its own.

Secrets for Kubernetes workloads

Pods authenticate with their service account and receive secrets through an agent, a CSI driver or an operator, with no secrets baked into manifests.

CI/CD pipeline credentials

Pipelines exchange their OIDC identity for narrowly scoped, short-lived cloud or database credentials instead of storing static keys as repository secrets.

Encryption as a service

The transit engine encrypts and decrypts application data without exposing the key, which suits teams that want field-level encryption without writing key management code.

Internal PKI and certificates

Short-lived certificates for services and internal endpoints, issued automatically and renewed before expiry.

What Vault is and why teams adopt it

HashiCorp Vault is a server that sits between your applications and the credentials they need. Instead of a password in an environment variable that lives for years, a service asks Vault, proves who it is, and receives a secret that is scoped, logged and often short-lived. That shift from storing secrets to brokering them is the reason to run it.

Teams usually arrive after an incident or an audit: a key committed to Git, a CI variable shared by twenty repositories, or a question nobody can answer about who can read the production database password. Vault gives you one place to enforce policy and one audit trail. As a HashiCorp Vault consulting partner we focus on getting that value without creating a new single point of failure or a new gate that developers resent.

It is not always the right answer. We cover when to pick something simpler near the end.

How we run Vault in production

Topology and storage

For most clients we deploy three nodes using integrated Raft storage, one per availability zone, behind an internal load balancer. Five nodes suit larger or stricter environments. Raft removes the need to operate a separate storage backend, but it means snapshots become your primary backup, so they are automated and copied to storage outside the cluster.

Auto-unseal with your cloud KMS avoids a human with key shares being needed after every restart. The trade-off is that your KMS key and its permissions become part of Vault’s security boundary, so we restrict and monitor them accordingly. Where it fits your platform, we run Vault on Kubernetes with the official Helm chart, with anti-affinity and a disruption budget. Some clients prefer dedicated instances so that Vault does not depend on the cluster it is serving. We will tell you which suits your size.

Authentication without static tokens

The weakest Vault deployments authenticate with a long-lived token pasted into a pipeline. We use workload identity instead:

  • Kubernetes pods use the Kubernetes auth method, bound to a namespace and service account.
  • Cloud workloads use IAM or managed identity roles.
  • CI jobs present an OIDC token from the platform, for example GitHub Actions, and receive a role scoped to one repository and branch.

Policy and configuration as code

Mounts, auth methods, roles and policies are defined in Terraform and applied through a reviewed pipeline. A policy for a payments service looks like this:

path "database/creds/payments-readonly" {
  capabilities = ["read"]
}

path "kv/data/payments/*" {
  capabilities = ["read"]
}

path "sys/leases/renew" {
  capabilities = ["update"]
}

One policy per application and environment, with no wildcard on kv/*, is the habit that keeps blast radius small. Our deliverable pages describe the pipeline side in more detail, including secrets management with Vault in CI/CD.

Rolling out without blocking developers

Developers resist a secrets platform when it slows them down. We avoid that in four ways.

  1. Start with pain, not completeness. Migrate the secrets that are shared, long-lived or sensitive first. Leave low-risk configuration where it is.
  2. Make the paved road easy. A template and a shared library or sidecar mean a team can onboard a service in an afternoon, not a sprint.
  3. Run old and new in parallel. Nothing is cut over until reads on the old path stop, so a mistake is a rollback, not an outage.
  4. Give self-service within guardrails. Teams request a role through a pull request against the Terraform repository. Review is fast because the policy is small and templated.

Tuning: leases, rotation and noise

Dynamic credentials are only useful if lease lengths match reality. Very short leases cause renewal storms and failures when a pod is briefly cut off; very long ones defeat the purpose. We start with moderate durations, watch renewal errors, and adjust per workload. We also decide early who owns rotation for static secrets that Vault cannot generate, such as third-party API keys, because those still need a human process.

Audit logs are voluminous. We ship them to your logging stack, alert on a small set of events (root token use, policy changes, repeated denied requests) and avoid alerting on every read.

Honest limits and failure modes

  • Operational burden. Upgrades, unseal behaviour, snapshots and policy hygiene need an owner. Without one, Vault decays into an expensive key-value store.
  • Availability coupling. If applications fetch secrets only at startup, an outage can block scaling or deploys. We design caching and fallbacks deliberately.
  • Secret sprawl moves, it does not vanish. A secret delivered into an environment variable or a Kubernetes Secret is still exposed to anything that can read that object. Vault reduces lifetime and improves audit; it does not make a compromised pod safe.
  • Licensing and forks. Vault’s licence changed in 2023, and the OpenBao fork exists. Check what your legal and procurement teams require.
  • Root and break-glass access. These need a documented, tested procedure and alerts, or they become a hidden backdoor.

When not to use Vault

If you run a handful of services on one cloud and your needs are static secrets with IAM-based access, AWS Secrets Manager or Azure Key Vault is usually the better choice. If your only goal is getting secrets into Kubernetes, the External Secrets Operator or Sealed Secrets may be enough. We would rather tell you that than sell you a cluster to maintain.

Working with us

We typically start with a short assessment of where secrets live and what an incident would expose, then deploy a pilot and migrate in waves. Vault pairs naturally with Trivy and Checkov in the pipeline, and with our Kubernetes consulting and managed DevOps work if you want us to keep operating it. To talk it through, book a consultation.

Official documentation: developer.hashicorp.com/vault

How we work with HashiCorp Vault

  1. 01

    Inventory and classify secrets

    We find where credentials live today (repositories, CI variables, config maps, wikis), rank them by blast radius and decide what Vault should own first.

  2. 02

    Design the deployment

    We choose integrated Raft storage or an external backend, the number of nodes, auto-unseal with your cloud KMS, network exposure and the audit device.

  3. 03

    Build identity and policy

    Auth methods, roles and least-privilege policies are written as code in Terraform, one policy per application and environment.

  4. 04

    Integrate one workload

    We migrate a single non-critical service end to end, including rotation and failure behaviour, then document the pattern for other teams.

  5. 05

    Migrate in waves

    Secrets move by type and team. Old and new paths run in parallel until reads on the old path stop, then the old copies are rotated and deleted.

  6. 06

    Operate and rehearse

    Snapshots, upgrade runbooks, monitoring and a recovery drill make sure Vault stays dependable, and your team is trained to own it.

HashiCorp Vault compared with the alternatives

We recommend the tool that fits your team, not the one we know best. Here is when each option makes sense.

OptionChoose it when
HashiCorp VaultHashiCorp Vault is a secrets management server that stores, generates and leases credentials, encrypts data as a service and records every access in an audit log.
AWS Secrets Manager or Parameter StoreChoose them if you are AWS-only, mostly store static secrets, and want no servers to run. IAM-based access and managed rotation cover a lot of needs.
Azure Key VaultChoose it if your workloads are on Azure and managed identities already solve authentication. It is a managed service with far less to operate.
External Secrets Operator or Sealed SecretsChoose them if the problem is delivering existing secrets into Kubernetes. They sync from a store or encrypt secrets in Git and are lighter than a full Vault.
SOPS with a cloud KMSChoose it for small teams that want encrypted secrets in Git with no running service, accepting the lack of dynamic credentials and central audit.
OpenBaoChoose it if you need an open source, community-governed fork with a compatible API and licensing matters to your organisation. Check feature parity for what you rely on.

Tools we use alongside HashiCorp Vault

TerraformKubernetesVault AgentVault Secrets OperatorExternal Secrets OperatorAWS KMSAzure Key VaultGitHub Actions OIDCGitLab CIPostgreSQLPrometheusGrafanacert-manager

Frequently asked questions

What is HashiCorp Vault used for?
Vault is used to store secrets, generate short-lived credentials on demand, encrypt data through an API and audit who accessed what. Typical uses are database and cloud credentials, Kubernetes workload secrets, CI/CD pipeline access and internal certificates. Its main advantage over a plain secret store is that access is brokered, leased and revocable.
Is Vault worth running compared with AWS Secrets Manager?
It depends on what you need. If you are on one cloud and mostly keep static secrets, the native service is cheaper to operate and often sufficient. Vault earns its keep with multiple clouds, dynamic credentials, encryption as a service, internal PKI or fine-grained policy. We compare both against your actual requirements first.
How do you run Vault highly available?
A common setup is three or five nodes using integrated Raft storage, spread across availability zones, with auto-unseal through a cloud KMS and regular snapshots stored off the cluster. Clients should tolerate a failover, so applications cache leases sensibly. We also rehearse restoring a snapshot, because an untested backup is only a hope.
How do Kubernetes pods authenticate to Vault?
Pods present their service account token to Vault's Kubernetes auth method, which maps it to a role and policy. Secrets are then delivered by the Vault Agent injector, the CSI provider or the Vault Secrets Operator. The role should be bound to a specific namespace and service account so a compromised pod cannot reach other applications' secrets.
What happens if Vault goes down?
Running applications usually keep working until their cached secrets or leases expire, but new deployments, restarts and credential renewals can fail. That is why Vault needs high availability, monitoring on seal status and lease renewal errors, sensible lease durations and a documented recovery path before production workloads depend on it.
Can we migrate existing secrets without downtime?
Yes, if you migrate in stages. We load secrets into Vault, point one service at the new path, keep the old source live, then watch access logs until nothing reads the old copy. After that the old secret is rotated and removed. Rotating at the end matters because the old value has been exposed to every system that held it.

Talk to an engineer about HashiCorp Vault

Book a free 30-minute call. We review your current setup and tell you honestly whether and how we can help.

Written by Saddique Khan, DevOps / SRE / Cloud Consultant Engineer. Last updated 2026-10-09.