Secret-Konsolidierung

Aktuell sind Secrets/Tokens verstreut über AWS Secrets Manager (25 Secrets), 1Password (≥2 API-Items), eine Reihe von .env.local-Files (12 Stück) und mindestens eine Plaintext-Konfig (~/.claude.json). Es gibt keine zentrale Übersicht, keine Rotation-Disziplin und mindestens einen Klartext-Leak.

Dieses Projekt baut den Überblick auf, migriert was migriert werden sollte, und legt Rotation-Disziplin fest.

Akut-Findings (Stand 2026-05-17)

SevBefundOrtAction
ROTGitHub PAT (gho_…) Plaintext in claude.json~/.claude.jsonmcpServers.github.env.GITHUB_PERSONAL_ACCESS_TOKEN(1) Token rotieren auf github.com/settings/tokens. (2) Neuen Token in 1Password Item „GitHub PAT (Claude Code)” + AWS SM agent-platform/github-pat (gibt’s schon!) synchronisieren. (3) claude.json auf op run -- Wrapper umstellen.
GELBDupliziertes TICKETPAY_API_KEY an 3 Stellen (vf-hosted local-dev .env, mcp-ticketpay .env.local, AWS SM mcp-vf-hosted/upstream-tokens)siehe InventarKonsolidieren auf AWS SM, lokale MCPs holen via Wrapper
GELBDupliziertes PAPIERKRAM_TOKEN an 3 Stellenanaloganalog
GELBDupliziertes M365_CLIENT_SECRET an 3 Stellenanaloganalog
GELBAWS SM Secret tmp/owui-admin-key ohne Description, scheint WegwerfAWS SMPrüfen + ggf. löschen
GELBAWS SM Secret stirling-pdf-vf/cloudflared-token — Stirling läuft jetzt cert-basiert, Token-Secret wahrscheinlich unusedAWS SMPrüfen + ggf. löschen
GRÜNService-Tokens für hosted MCPs sind sauber in AWS SMbeibehalten
GRÜNHetzner-Token sauber via op run aus 1Pclaude.json → hetznerbeibehalten als Referenz-Pattern

Ziel-Architektur

2-Tier-Modell + Workload-Identity-First.

Workload-Identity (Tier 0, präferiert)
    ↓ wenn nicht möglich
AWS Secrets Manager (Tier 1)  ←—  alle Service-Secrets
    ↓
op://-Pointer in 1Password (Tier 1.5)  ←—  Recovery-Index
    ↓
1Password Direct (Tier 2)  ←—  nur lokale CLI mit Touch-ID-UX-Bedarf

Regeln:

  1. Wenn ein Cloud-Workload-Container (Fargate/Lambda/ECS) den Secret braucht → IAM-Role oder AWS SM (secretsmanager:GetSecretValue auf den Service-ARN-Prefix scoped)
  2. Wenn ein lokaler Prozess auf Marvin’s Mac den Secret brauchtop run -- Wrapper, Token-Quelle ist 1Password
  3. Wenn beides → AWS SM ist Source-of-Truth, lokaler Zugriff via aws secretsmanager get-secret-value mit av-production-Profil. 1Password hält Read-Only-Pointer op://Personal/aws-sm-<service>/note mit dem AWS-SM-Pfad als Recovery-Layer
  4. Nie Plaintext in claude.json, settings.json, .env ohne .env.local-Naming + Gitignore-Schutz
  5. Rotation: jedes Secret bekommt im Inventar ein last_rotated + next_rotation-Feld

Sub-Files

  • inventar — vollständiges Inventar aller Secrets, gruppiert nach Quelle, mit Migrations-Tier-Empfehlung pro Item
  • plan — Migrations-Plan in Phasen
  • rotation-kalender — Rotation-Schedule pro Secret
  • 1p-aws-syncPhase 7 (neu, 2026-05-19) — 1P-Environments-Auto-Sync nach AWS-SM, kein Doppel-Pflegen mehr. Lead-Option fuer Multi-Tenant-Onboarding

Phasen-Status

PhaseInhaltStatus
0Inventar erstellen + Akut-Findings🟢 done 2026-05-17
1ROT-Findings fixen (GitHub PAT rotieren + migrieren)🟡 pending
2Duplikate konsolidieren (TicketPAY, Papierkram, M365 single-source-in-AWS-SM)🟡 pending
3AWS-SM-Cleanup (tmp/*, stirling-pdf-vf prüfen)🟡 pending
41Password-Pointer-Layer aufbauen (AWS-SM-Index in 1P)🟡 pending
5Rotation-Kalender + Reminder-Setup🟡 pending
6CLAUDE.md Rule 8 erweitern (konkrete Tier-Verweise)🟡 pending
7MVP 1P→AWS-SM-Sync via av-key-sync.sh — Friseur live, IAM-Wildcard, CDK-Drift geschlossen🟢 MVP live 2026-05-19. Native-Integration als Phase 8 offen — Plan siehe 1p-aws-sync

Out of Scope

  • Migration bestehender Customer-MCP-Secrets (Scalekit-OAuth-Setup) — die sind schon sauber
  • Vault-Wechsel von 1Password zu Bitwarden/Doppler/Infisical — bewusst nicht, 1P bleibt
  • Rotation-Automation via Lambda — Phase 5 setzt Kalender-Reminder, Automation später wenn Volumen wächst

Next Action

Phase 1 starten — GitHub PAT rotieren (5 min), neuen Token in AWS SM agent-platform/github-pat ablegen, claude.json auf op run umstellen. Detail-Schritte siehe phase-1.

4 Dateien in diesem Ordner.