KeyDrift
Free scan
The Secret Leak Field Manual

Appendix D · Rotation log template

The Secret Leak Field Manual · 2 min read

One row per credential rotation, kept in the same store as the key inventory (Chapter 9). The log answers three questions years later: what changed, when exactly, and who can vouch for it. Example rows use synthetic values only.

The log

Date (UTC)CredentialProvider / classMasked value / fingerprintReasonReplacement createdConsumers migratedOld revokedVerified deadOperatorTicket / incident
2026-03-04Marketing-site checkoutStripe restricted (rk_live_)rk_live_…XXXX / fp:9f21cScheduled quarterly2026-03-04 14:022026-03-04 15:202026-03-06 09:00Yes — request volume zero 24h; authenticated call rejectedA. RiveraOPS-412
2026-05-11Support inbox senderSendGrid scopedSG.XXXX…9999 / fp:c40a1Key found in old contractor repo copy2026-05-11 10:472026-05-11 11:052026-05-11 12:30Yes — send test failed with revoked key as expectedJ. OkaforINC-087
2026-06-02CI deploy roleAWS IAM pairAKIA…7Q2F / fp:55b0eMigrating CI to OIDC federation (Ch. 9 stage 4)n/a — role assumption replaces pair2026-06-01 18:002026-06-02 09:15Yes — CloudTrail shows no use since cutoverM. LindqvistSEC-233

Field notes

  • Reason takes one of a fixed vocabulary so the log is countable later: scheduled, rotation-after-exposure, staff-change, scope-reduction, provider-deprecation, migration.
  • Masked value / fingerprint: never the full value. If your tooling produces salted fingerprints, prefer them — they identify the credential without re-exposing it.
  • Old revoked and verified dead are separate columns on purpose. Revocation you performed is not the same fact as revocation the provider enforced; the verification method goes in the notes column of your tracker if not here.
  • Consumers migrated records when the last known consumer moved, which defines when the watch period starts.
  • Watch period convention: revoke only after the old credential's request volume has been flat at zero for hours or days (per provider guidance — see Chapter 6), and record both numbers.

Cadence review

Quarterly, answer from this log:

  1. Which credentials have no rotation row older than their policy allows?
  2. Which rotations took longest between replacement-created and consumers-migrated? That gap is where downtime risk lives.
  3. Which reasons dominate? rotation-after-exposure clustering in one family points at the structural fix to prioritize next (Chapters 7–9).