Back to blog

Secrets that never rotate: Why long-lived credentials become permanent infrastructure

Macro close-up of a brushed metal combination lock dial with engraved numbers.

Somewhere in your cloud account sits a key that has outlived three reorgs, two platform leads, and the contractor who minted it "just for the migration." It still works. Nobody knows who owns it. Nobody wants to rotate it, because the blast radius of being wrong is larger than the blast radius of leaving it alone. That is how a temporary credential becomes permanent infrastructure.

Mid-size teams rarely fail because they forgot that secrets exist. They fail because static keys and service accounts quietly become load-bearing, ownership evaporates when people leave, and rotation stays a quarterly slide instead of an operational habit. This post is about treating long-lived credentials as something you operate, not something you hope stays forgotten.

Credentials that outlive their creators

A secret that still authenticates after its creator is gone is not a convenience. It is an unmanaged dependency. The original intent was often reasonable. A CI token for a weekend cutover. A shared service account so staging could talk to a vendor. A personal access token pasted into a runbook when SSO was down. Years later those same values sit in vaults, environment files, and chat archives as if they were part of the platform design.

In practice, longevity is the tell. If a credential has no named owner, no rotation date, and no record of where it is consumed, it has stopped being a secret you hold. It has become a structural beam. Teams discover that only when someone tries to revoke it and three pipelines, one vendor sync, and a forgotten admin script all fail at once.

That's why inventing another vault rarely helps. More places to store long-lived keys still leave you with long-lived keys. Rotation with ownership beats a prettier shelf for credentials nobody dares to touch.

Why static keys survive every cleanup

Teams keep static credentials for reasons that sound careful. Rotation might break a path nobody fully mapped. The vendor only supports a fixed API key. The service account is shared across environments "until we split them." The person who knew the consumers left, and the ticket to inventory them keeps slipping behind features.

However, the social drift is sharper than the technical one. When engineers learn that old keys keep working forever, they stop designing for short life. When managers learn that rotation weekends always get postponed, they stop funding the inventory work. Culture follows the path of least breakage. An unrotated secret trains everyone to treat permanence as safety.

Still, you can name the usual leftovers without a forensic novel. Cloud access keys minted for a one-off job, machine users with keys older than the current org chart, database passwords checked into a "temporary" config that became the deploy source of truth, and third-party tokens that were never issued to a role, only to a person who has since left. If those leftovers have no owner and no rotation clock, they are not pragmatism. They are permanent infrastructure wearing a secret badge.

Who owns rotation when the creator is gone

Someone has to own the credential lifecycle. Not "security in general," and not "whoever last rotated something similar." A named owner decides which secrets may be long-lived at all, who may mint them, how consumers are recorded, when rotation is mandatory, and what happens when the minting human has left the company.

In reality, mid-size org charts often leave that ownership floating. Platform wants pipelines to keep green. Security wants short-lived credentials and a softer story for vendors that refuse them. Product wants velocity. Finance wants fewer tools. Nobody wants to be the person who rotates a key and discovers an undocumented consumer at 02:00.

Write the contract in operational language. Name the systems that may hold standing credentials, the roles allowed to mint them, the inventory where consumers are listed, the default maximum age, the evidence required after rotation, and who can accept an exception with a dated review. If that list is empty, you do not have a secrets practice. You have folklore plus hope.

Meanwhile, pair ownership with authority that matches the night. An engineer told to rotate keys without permission to update every consumer, pause a pipeline, or revoke a peer's abandoned token is not safer. They are a human holding a wrench without a map. Ownership includes the decisions the role may make and the escalation when a secret turns out to be load-bearing.

Evidence that secrets still rotate

A green "vault configured" checkbox is not evidence that credentials remain under control. Evidence is specific. It includes a current inventory of long-lived secrets, named owners, known consumers, recent successful rotations, and a record of what broke and got fixed when age limits were enforced. Prefer a short rotation log a tired engineer can trust. A policy page that only proves encryption at rest is not the same thing.

Finally, treat "temporary" as a timed contract, not a label on a key that never expires. Temporary should mean a start, a planned end or rotation, a reason, and a human accountable for closing or renewing it on purpose. It should not mean "until someone notices." If your tooling cannot show which standing credentials exist, who owns them, where they are used, and when they last rotated, you do not have secret management. You have durable access with better storytelling.

Yet keep the bar humane. You do not need perfect short-lived everything on day one. You need proof the common long-lived paths have owners, consumer maps, and a practiced rotate. Secrets that cannot meet that bar should be fixed, time-boxed with an owner, or revoked. Leaving them untouched trains the team to mint the next permanent key the first time a deadline gets loud.

A rotation habit mid-size teams can keep

You do not need zero standing credentials tomorrow. You need a repeatable habit that stops long-lived keys from becoming anonymous infrastructure.

In practice, a workable pattern looks like this.

  • Inventory standing credentials that can still authenticate, and require a named owner, a purpose, known consumers, and a rotation or review date for each one in plain language.
  • Prefer short-lived or workload-identity patterns where the platform supports them, and document every intentional long-lived exception with the same ownership bar as a production service.
  • Record where each secret is consumed, including pipelines, human laptops, vendor portals, and forgotten scripts, so rotation is a checklist instead of an archaeological dig.
  • Rotate on a cadence you can survive, starting with the oldest orphaned keys and the ones tied to people who have already left, and treat failed consumers as backlog, not a reason to stop.
  • Rehearse a rotation for one critical path before the forced event, including revoke, redistribute, and verify, so the first real expiry is not a discovery exercise.
  • After every messy outage or departure, ask which credentials that person could still use or that still depend on their undocumented knowledge, assign owners, and refuse to call the change done while orphaned keys remain without a dated plan.

Instead of minting another forever key after a bad week, mint a time-bounded credential, a consumer list, and a rotation owner. Credential volume is easy to grow. Making secrets temporary again is the scarce discipline.

When unrotated credentials become expensive

Long-lived secrets feel cheap until the first leaked key, confused deploy, or departed admin account that still authenticates. Then you pay in blast radius, audit pain, and a culture that cannot tell intentional access from archaeological leftovers. Mid-size teams feel it faster because the same few people own the vault, the pipelines, and the apology.

In the end, treat standing credentials as a product surface for operators and security together. Name who owns them, bound their age, keep consumer evidence, and practice rotation before departure and before expiry force your hand. Ask the uncomfortable question while the next key is still optional.

If you revoked every credential older than one year tomorrow morning, would you know which systems still need them, who owns the replacements, and how to rotate without inventing the map under pressure, or would those keys prove they had already become the real infrastructure?

TL;DR

  • Static keys and service accounts that outlive their creators quietly become permanent infrastructure, even when the wiki still describes short-lived access.
  • Longevity without owners, consumers, and rotation clocks is unowned dependency, not pragmatism.
  • Name an owner for credential lifecycle, including who may mint standing secrets, how consumers are recorded, default age limits, and exception review.
  • Treat temporary as a timed contract with start, planned rotation or end, reason, and accountable renewal, not as a label on forever keys.
  • Keep a simple rotation habit: inventory, prefer short-lived where possible, map consumers, rotate orphans first, rehearse, and clean up after departures.
  • Ask whether tomorrow's forced revoke would be a controlled rotation, or proof that forgotten credentials already hold up the platform.