A compact widget displaying secrets approaching their rotation deadline. Shows secret name, store, days until due, and an “Initiate rotation” CTA. Complements the existing SecretsStatusPanel which shows sync status rather than rotation lifecycle.
Introduction
Overview
Secret rotation is a critical security practice. Teams need visibility into which secrets are approaching or past their rotation deadlines. The existing SecretsStatusPanel shows sync status (synced, failed, refreshing) but not rotation lifecycle. This widget fills that gap by surfacing rotation-due secrets with urgency indicators and an action to initiate rotation.
Goals
Display secrets approaching rotation deadline in a compact list.
Show secret name, secret store, days until due, and urgency level.
Provide an “Initiate rotation” CTA per secret.
Color-code urgency: overdue (red), due soon (yellow), healthy (green).
Ship Storybook stories covering urgency states.
Non-Goals
Secret rotation execution (consumer handles via callback).
Secret value display or management.
Rotation policy configuration.
Integration with specific secret managers (Vault, AWS Secrets Manager, etc.).
Scope
In Scope
Item
Description
SecretRotationReminder component
List of secrets with rotation status and CTA
Urgency indicators
Color-coded badges: overdue, due-soon, healthy
Rotation CTA
”Initiate rotation” button per secret; calls onInitiateRotation
Consumer normalizes data from their secret manager
Users and Pain Points
User
Pain Point
SRE/security teams
No dashboard-level visibility into rotation deadlines
DevOps engineers
Secrets expire without warning, causing outages
Compliance officers
Cannot easily prove rotation policy adherence
Definitions
Term
Definition
Secret rotation
The practice of periodically replacing secret values (keys, tokens, passwords)
Rotation deadline
The date by which a secret must be rotated per policy
Days until due
The number of days remaining before the rotation deadline
Secret store
The system storing the secret (e.g., Vault, AWS Secrets Manager, K8s Secret)
Current State
secrets-status-panel.tsx shows secrets with their sync status (synced, failed, refreshing, unknown) and last-synced timestamps. It includes a SecretEntry type with expiresAt field but does not calculate or display days until rotation. No rotation-specific urgency indicators or rotation CTAs exist.
Proposed Solution
Create a SecretRotationReminder widget at src/components/widgets/sre-devops/secret-rotation-reminder.tsx that:
Accepts an array of RotationSecret objects with name, store, and rotation deadline.
Renders an “Initiate rotation” button per entry that calls onInitiateRotation(secretName).
Shows a summary header with overdue and due-soon counts.
Requirements
The widget must calculate urgency from deadline dates at render time. The “due soon” threshold must be configurable. The widget must not store or display secret values.
Functional Requirements
ID
Requirement
Priority
FR-01
Render a list of secrets with name, store, and days until rotation deadline