Secrets Manager vs Parameter Store vs Vault: cost math, rotation, dynamic secrets and a decision flow, plus the Vault, IBM and OpenBao licensing context.
A payments startup stores 340 values in AWS Secrets Manager: database passwords, partner API keys and internal tokens. Storage alone costs $136 a month. Only about 60 of them are ever rotated, so roughly $112 of that bill buys a rotation feature they never use. (This is an illustrative scenario.)
All three tools store secrets. They differ in cost model, rotation, and how much of the service you operate yourself.
Use Parameter Store for static values, Secrets Manager for credentials that need rotation or cross-account policies, and Vault or OpenBao when you need dynamic credentials or reach beyond AWS. Many mature AWS teams use the first two together.
Secrets Manager charges per secret, Parameter Store is free at the Standard tier, and Vault costs whatever it takes to run or license. Prices below are list prices as last checked, so confirm them on the pricing pages.
| Factor | Secrets Manager | Parameter Store |
|---|---|---|
| Base cost | $0.40/secret/month | Free (Standard) |
| Rotation | Built in | Manual or custom |
| Max size | 64 KB | 4 KB / 8 KB |
Secrets Manager also bills $0.05 per 10,000 API calls. Parameter Store Standard is free for up to 10,000 parameters of 4 KB each. The Advanced tier lifts those limits (8 KB values, up to 100,000 parameters, parameter policies) at $0.05 per parameter per month, still eight times cheaper than Secrets Manager.
Encryption is equivalent for static values. Parameter Store SecureString and Secrets Manager both use KMS. If you use the AWS managed keys there is no key charge, while a customer managed key adds a monthly key fee and per-request KMS costs for either service.
Move values that never rotate out of Secrets Manager. For an estate of 500 secrets where 100 truly rotate:
All in Secrets Manager: 500 x $0.40 = $200/month Hybrid: 100 x $0.40 + 400 x $0 = $40/month Saving: $160/month, about $1,920/yearDo not move a value just to save money if it relies on cross-region replication, a resource policy for cross-account reads, or managed rotation. Check those requirements first.
Static configuration goes into Parameter Store with a hierarchical path, and rotating credentials go into Secrets Manager with a rotation schedule.
## static value, encrypted with KMSaws ssm put-parameter \ --name /prod/payments/partner-api-key \ --type SecureString \ --value "$PARTNER_KEY" ## rotating database credentialaws secretsmanager create-secret \ --name prod/payments/db \ --secret-string "$DB_CREDENTIALS_JSON" aws secretsmanager rotate-secret \ --secret-id prod/payments/db \ --rotation-lambda-arn "$ROTATION_FN_ARN" \ --rotation-rules AutomaticallyAfterDays=30Secrets Manager has ready-made rotation for Amazon RDS, Aurora, Redshift and DocumentDB, and custom rotation Lambdas for everything else. Parameter Store has no rotation, so for a rotating value you would build the lifecycle yourself with a schedule and a Lambda.
For delivery, ECS task definitions can reference either service by ARN in secrets, and on Kubernetes the External Secrets Operator or the Secrets Store CSI driver can sync both into pods. Both keep secrets out of images and environment files in Git.
Vault generates dynamic secrets: credentials created on request, bound to a lease and revoked when it expires. Neither AWS service does this, because both return a stored value.
vault read database/creds/payments-readonly lease_id database/creds/payments-readonly/abc123 lease_duration 1h username v-token-payments-ro-8d2k password <generated, expires in 1h>Each consumer gets a unique credential, a compromised one dies in an hour, and the audit log ties every credential to its requester. Vault also works across AWS, Azure, GCP and on-premises systems, with a consistent policy model.
The cost is operations. You own high availability, unsealing, storage backends, upgrades, backups and the risk that a Vault outage blocks every credential lookup. HCP Vault, HashiCorp's managed service, shifts that work for a fee.
Inside AWS, check whether native options meet the goal first. IAM database authentication for RDS issues tokens valid for 15 minutes, and IAM roles remove static AWS keys entirely. These give short-lived credentials for many AWS cases without running Vault.
In August 2023 HashiCorp moved Vault from the MPL 2.0 open-source licence to the Business Source License (BSL), which restricts competing commercial offerings. IBM completed its acquisition of HashiCorp in 2025, so Vault is now part of IBM.
OpenBao is a Linux Foundation project forked from the last MPL-licensed Vault code. It keeps an open-source licence and is largely API-compatible. It is the same story as Terraform and OpenTofu, with the same trade-off: a younger project, with some plugins, auth methods and enterprise features that differ from Vault.
For most internal use, the BSL permits running Vault yourself. Involve your legal team if you resell it as part of a product or have a policy against non-open-source dependencies. Test every auth method and secrets engine you use against OpenBao before committing, and check the current release notes for gaps.
Most problems come from reading too often, caching too little and granting too widely. Four habits prevent most of them:
ssm:GetParameter on /prod/payments/* and secretsmanager:GetSecretValue on named ARNs, never on *.GetSecretValue volume and on failed decrypt calls in CloudTrail.| Factor | Vault / OpenBao | Notes |
|---|---|---|
| Dynamic secrets | Yes | Unique, short-lived credentials |
| Multi-cloud | Yes | Same policies everywhere |
| Operations | You run it | HA, unseal, upgrades |
Parameter Store and Secrets Manager need no infrastructure, integrate with IAM and CloudTrail, and are the default for AWS-only teams. Vault earns its overhead in multi-cloud and hybrid estates, and where audit rules demand per-request, short-lived credentials.
/env/service/name.References and Further Reading
- AWS Secrets Manager Pricing - Per-secret and API call rates
- Parameter Store Documentation - Standard and Advanced tiers
- HashiCorp Vault Documentation - Dynamic secrets and leases
- OpenBao - Open-source Vault fork under the Linux Foundation
Usually not. At $0.40 per secret per month it is priced for rotation, replication and resource policies. A static value in a Parameter Store SecureString uses the same IAM and KMS model and costs nothing in the Standard tier, unless you need features only Secrets Manager provides.
A static secret returns the same stored value on every read until someone rotates it. A dynamic secret is created on request with a lease and revoked automatically at expiry, so no long-lived credential sits in storage and each consumer gets a unique, traceable credential.
The Standard tier has a low default API throughput (about 40 transactions per second per account and region), and every container start or Lambda cold start can read parameters. Cache values in the process, use the Lambda parameters and secrets extension, or enable higher throughput in Parameter Store settings.
Cache secrets client-side with the AWS caching libraries or the Lambda extension, and refresh on a timer or on authentication failure instead of reading at every request. API calls cost $0.05 per 10,000, which adds up for chatty services, though the per-secret fee is usually larger.
For teams that want an open-source licence, yes, with checks. OpenBao is a Linux Foundation fork of Vault from before the licence change and is under MPL 2.0. Its APIs are largely compatible, but plugins and enterprise features differ, so test your auth methods and secrets engines before migrating.
Discussion0