Skip to content

Key and Credential Rotation Schedule

Requirement: HIPAA §164.312(a)(2)(iv) — encryption/decryption, access control. SOC2 CC6.1/CC6.6 — logical access controls, credential management.

Owner: Rory
Review cadence: Quarterly — verify last-rotated dates and update this log after each rotation.

This document is the authoritative rotation schedule for all credentials and cryptographic material at Cirius Group. Auditors use this to verify that credentials are periodically rotated and that rotation is tracked.


Rotation Schedule

Certificates — Automated Monitoring

Monitored continuously by cert_expiry_agent. Rotation is triggered by findings, not a fixed calendar. See Certificate Renewal Procedure.

CertificateAlert atOwnerLast RenewedNotes
OneLogin SAML — Keeper90 days remainingRory(populate)Triggers SSO lockout if expired
OneLogin SAML — Zendesk90 days remainingRory(populate)
OneLogin SAML — Zendesk (secondary)90 days remainingRory(populate)
OneLogin SAML — KnowBe490 days remainingRory(populate)
GlobalProtect wildcard *.ciriusgroup.com90 days remainingRory(populate)Import to Panorama

Privileged / Break-Glass Accounts — Annual + After Use

AccountRotation FrequencyLast RotatedNotes
cirius-breakglass@ciriusgroup.comAnnual + immediately after any use(populate)Keeper → Break-Glass — Entra
cirius-breakglass@ciriusdde.comAnnual + immediately after any use(populate)Keeper → Break-Glass — Entra
AD Break-Glass — Primary DCAnnual + immediately after any use(populate)Keeper → Break-Glass — On-Prem AD
AD Break-Glass — RODCAnnual + immediately after any use(populate)
AD Break-Glass — Domain Admin (DR)Annual + immediately after any use(populate)
AWS Root — Management (206820231356)Annual + after any root use(populate)Keeper → Break-Glass — AWS Root
AWS Root — Production (807267566999)Annual + after any root use(populate)
AWS Root — Logging (038901680748)Annual + after any root use(populate)
AWS Root — Networking (238342914131)Annual + after any root use(populate)
AWS Root — Identity (414134953818)Annual + after any root use(populate)
AWS Root — Backup (863609217450)Annual + after any root use(populate)
AWS Root — Dev (040067931468)Annual + after any root use(populate)
Palo Alto Admin — Azure PublicFWAnnual + after any local login(populate)Keeper → Break-Glass — Palo Alto
Palo Alto Admin — Azure PrivateFWAnnual + after any local login(populate)
Palo Alto Admin — DDE FirewallAnnual + after any local login(populate)
Palo Alto Admin — AWS DR FirewallAnnual + after any local login(populate)
Panorama Admin — AWS DRAnnual(populate)Keeper → Panorama
Panorama Admin — DDEAnnual(populate)

Service Accounts and API Keys — Annual

CredentialRotation FrequencyLast RotatedWhere StoredNotes
SecOps API Key (agents → platform)Annual(populate)Key Vault: cirius-openai-kv-prodUpdate Container App env vars after rotation
Azure OpenAI API KeyAnnual(populate)Key Vault: cirius-openai-kv-prod
Container Registry token — kobe-botAnnual(populate)Keeper → Infrastructure — Shared
GitHub PAT — cirius-kobe-botAnnual(populate)Keeper → Infrastructure — Shared
Arctic Wolf API credentialsAnnual(populate)Keeper → Vendor AccountsCoordinate with Arctic Wolf
Veeam console admin passwordAnnual(populate)Keeper → Vendor Accounts
Cloudflare API tokenAnnual(populate)Keeper → IT OperationsScoped to zone edit only
Keeper master password (break-glass)Annual(populate)Physical emergency kitBackup when SSO unavailable

MFA Credentials — Recovery Codes and Hardware Tokens

ItemRotation / VerificationLast VerifiedNotes
AWS root MFA recovery codes (all 7 accounts)After any root account access(populate)New codes generated on root login reset
Entra break-glass MFA setupAnnual verification(populate)Verify MFA still works; rotate if suspicious
Keeper admin MFA recovery codesAnnual(populate)

Encryption Keys — Managed by Platform (No Manual Rotation)

These are managed automatically by Azure/AWS and do not require manual rotation:

KeyPlatformRotationNotes
Azure CMK (Customer Managed Keys)Azure Key VaultAuto-rotate annually if configuredSet auto-rotation policy in Key Vault
S3 SSE-KMS keys (backup buckets)AWS KMSAnnual auto-rotationEnabled in Terraform
Terraform state storage encryptionAzure Storage CMKPlatform-managed
LAW workspace encryptionMicrosoft-managedPlatform-managedNot CMK currently

How to Perform a Rotation

Annual Rotation Workflow

  1. Generate new credential — use Keeper's password generator (16+ chars, mixed case, symbols)
  2. Test the new credential before revoking the old one (where possible — service accounts)
  3. Update all systems that use the credential:
    • Keeper record (update the password field)
    • Key Vault secret (if machine-to-machine)
    • Any hardcoded references (there should be none — secrets live in Key Vault only)
    • Container App environment variables (if an API key changed)
  4. Verify the change works end-to-end before confirming rotation complete
  5. Update this document — fill in the Last Rotated date
  6. For break-glass accounts: test the account can actually log in after rotation

Documenting a Rotation

After completing any rotation, update the table above with the date. Format: YYYY-MM-DD.

If a rotation was triggered by a security event rather than the annual schedule, note it in the table (e.g., 2026-05-25 — emergency rotation after incident INC-0042).


Rotation Triggers (Out-of-Cycle)

Rotate immediately — do not wait for the annual cycle — when:

  • A credential was used by someone no longer at the company
  • A credential appears in a SecOps alert (credential exposure, phishing success)
  • A GitHub secret scanning alert fires for a committed credential
  • A break-glass account was used (any use requires immediate post-use rotation)
  • A team member with access to shared credentials leaves the company
  • A vendor relationship ends (revoke their access and rotate shared creds)

Log emergency rotations in the table and in SecOps if related to an incident.


Auditor Notes

For SOC2 CC6.1/CC6.6 evidence:

  1. Point to this document as the rotation policy and schedule
  2. The Last Rotated column shows rotation occurred
  3. Keeper audit log shows who changed each record and when (Keeper Admin Console → Reports)
  4. For certificates: cert_expiry_agent findings history in SecOps shows monitoring was active

For HIPAA §164.312(a)(2)(iv): the rotation schedule demonstrates that encryption and access control credentials are periodically refreshed as required.


Document History

DateChangeAuthor
May 2026Initial draft — consolidated rotation schedule for all credential types: certs, break-glass, service accounts/API keys, MFA, platform-managed keys.Rory

Internal use only — Cirius Group