Rotation-Kalender
Allgemeine Regel
| Secret-Typ | Rotation-Intervall | Trigger |
|---|---|---|
| API-Keys SaaS (Papierkram, TicketPAY, M365, Replicate, Runway, Cal.com, …) | 12 Monate | Reminder |
| Auth-Tokens für eigene MCPs (Bearer-API-Keys) | 6 Monate | Reminder + Two-Key-Rotation-Modus |
| Cloudflare Tunnel Connector Tokens | nur on-demand | Compromise-Verdacht / Connector-Wechsel |
| Cloudflare API Token (account-wide) | 12 Monate | Reminder |
| GitHub PAT | 3 Monate (Fine-Grained-Default) | GitHub.com läuft eh ab |
| OAuth Refresh Tokens (Gmail, Cal.com) | Provider-gesteuert | wenn Refresh-Failure |
| Master-Credentials (1P, AWS Root, GitHub Org Owner, Apple, Hetzner-Account) | 18 Monate + bei Personalwechsel | Reminder |
| SSH-Key Passphrases | nicht | rotiert mit Key-Rotation |
| Database-Passwords (RDS) | 12 Monate via Lambda-Rotation | AWS-managed wenn aktiviert |
Sofort-Rotation (Phase 1)
| Secret | Grund | Deadline |
|---|---|---|
GitHub PAT gho_… | War Plaintext in claude.json — Compromise-Verdacht (kein bestätigter Leak, aber Defense-in-Depth) | 2026-05-18 |
Geplante Rotations (Wer-Wann)
| Secret | Last-Rotated | Next-Rotation | Owner | Notiz |
|---|---|---|---|---|
cloudflare/api-token | 2026-05-13 (Anlage) | 2027-05-13 | Marvin | Account-wide Token mit DNS+Tunnel-Edit, breite Wirkung |
mcp-vf-hosted/upstream-tokens | 2026-05-14 (Anlage) | 2027-05-14 | Marvin + VF | Mit VF-Kontakt abstimmen — Papierkram/TicketPAY/M365-Tokens müssen vorher von VF rotiert werden |
mcp-whatsapp-hosted/whatsapp-config | 2026-05-15 | 2027-05-15 | Marvin (Salon-Pilot-Owner) | Meta-Access-Token kann eh nur 24h, in Production wird permanent-Access-Token genutzt |
mcp-calcom-hosted/calcom-config | 2026-05-15 | 2027-05-15 | Marvin (Salon-Pilot) | |
inference-service-prod/api-key | 2026-05-15 | 2026-11-15 | Marvin (Icking-Owner) | Two-Key-Rotation: api_key_v2 ausstellen, Konsumenten umstellen, api_key_v1 invalidieren — kein Downtime |
inference-service-prod/db-password | 2026-05-15 | 2027-05-15 | Marvin (Icking) | Erwägen: Lambda-Auto-Rotation aktivieren |
agent-platform/telegram-bot-token | 2026-05-12 | 2027-05-12 | Marvin | BotFather-Token, einfach neu generieren bei Bedarf |
agent-platform/gmail-oauth-refresh | 2026-05-12 | provider-gesteuert | Marvin | Refresh-Token läuft nicht ab solange Account aktiv. Bei Lockout / Password-Reset neu beschaffen. |
agent-platform/github-pat | 2026-05-15 | 2026-08-15 | Marvin | Fine-Grained 90-Tage-Default. Bei Phase-1-Rotation hier neuer Eintrag mit neuem Datum. |
receptionist-brain/cf-access-mcp | 2026-05-15 | 2027-05-15 | Marvin | Description hat es schon vermerkt |
open-webui-vf/* (alle 7) | 2026-05-12/13 | 2027-05-15 | Marvin (VF-Owner) | Großteils CDK-managed, db-credentials via auto-rotation |
presenton-vf/config | 2026-05-15 | 2027-05-15 | Marvin (VF-Owner) | LiteLLM-Master-Key + Auth — nach Productionizing |
Hetzner-Token (in 1P fkm22…) | unbekannt | 2026-08-17 | Marvin | Datum schätzen bei nächster Hetzner-Konsole-Login. Quartal weiter setzen. |
| ElevenLabs API Key | unbekannt | 2026-08-17 | Marvin | Kommt bei .env.local-Migration neu rein |
| Replicate API Token | unbekannt | 2026-08-17 | Marvin | analog |
| Runway API Secret | unbekannt | 2026-08-17 | Marvin | analog |
| Papierkram-Token (lokal-Dev) | unbekannt | mit mcp-vf-hosted/upstream-tokens zusammen | Marvin | Konsolidieren — sollte gleicher Token sein |
| TicketPAY API Key (lokal-Dev) | unbekannt | mit mcp-vf-hosted/upstream-tokens zusammen | Marvin | analog |
| M365 Client Secret (lokal-Dev) | unbekannt | mit mcp-vf-hosted/upstream-tokens zusammen | Marvin | analog |
| Cal.com API Key (lokal-Dev) | unbekannt | 2026-08-17 | Marvin | Cal.com User-API-Key vs. hosted-Key trennen |
| Lexware Office | unbekannt | 2026-08-17 | Marvin | configured but nicht aktiv |
| SevDesk | unbekannt | 2026-08-17 | Marvin | analog |
| LiveKit / Telnyx / OpenAI / Cartesia / Deepgram (livekit-agent) | unbekannt | 2026-08-17 | Marvin | POC-Phase, beim Productionize neu |
Kalender-Setup
Im hello@-Calendar pro Reminder ein Event:
- Titel:
Rotate: <secret-name> - Datum: das
next_rotation-Feld - Recurrence: jährlich (außer Eintraege mit Sonder-Intervall)
- Beschreibung: Pfad in AWS SM oder 1P + Rotations-Command
Bulk-Setup mit gsuite-MCP: Beim Phase-5-Lauf werden alle Reminder mit einem Skript ins Kalender geschrieben — TODO im Phase-5-Plan.
Wer ist Owner
Marvin ist für alle Eigentümer, weil 1-Person-Shop. Bei Personalwachstum:
- Customer-MCP-Secrets → Marvin (oder Lead-Engineer)
- Internal-Tooling-Secrets → DevOps-Lead
- Master-Credentials → Marvin + Backup-Person mit 2FA-Backup-Codes
Audit-Log
Bei jeder Rotation:
- Rotation ausführen
last_rotatedin 1P-Pointer + AWS-SM-Description aktualisierennext_rotationneu setzen- Kalender-Reminder aktualisieren
- Hier in
rotation-kalender.mdAudit-Zeile am Ende:## Audit-History - 2026-05-17 — GitHub PAT rotiert (Phase 1.1), claude.json migriert auf op run - 2026-06-15 — …
Audit-History
(leer, wird gepflegt)