Skip to content

OPS Roadmap — Professionelles Betriebs-Setup

Executive Overview — all summaries for decision-makers.

Priorisierte Checkliste für MQA Group. Status: [ ] offen · [~] in Arbeit · [x] erledigt


Phase 1 — Foundation (Woche 1–2)

Ownership & Zugänge

  • [~] Cloudflare auf MQA-Organisations-Account migrieren → R2 ✅ · DNS offen → CLOUDFLARE-MIGRATION
  • [x] Render im MQA Team-Account
  • [x] GitHub unter MQA-Group (privat)
  • [ ] GitHub Branch Protection auf main + develop: PR required, CI Success, 1 Review (benötigt GitHub Pro/Team für private Repos)
  • [ ] Mindestens 2 Admin-Zugänge pro Plattform (Render, Cloudflare, Azure)

CI/CD

  • [x] GitHub Actions CI (Build Frontend + Backend, Gate-Job CI Success)
  • [x] PR-/Issue-Templates, Dependabot, CODEOWNERS → GITHUB-FLOW
  • [ ] Dependabot PRs regelmäßig mergen (Security-Patches priorisieren)
  • [ ] Render Preview Deploys optional für PRs

Staging

  • [x] Staging-Services deployen (render-staging.yaml) → STAGING-SETUP · live auf Render
  • [x] DNS: staging.portal.mqa.group, staging.api.mqa.group
  • [ ] Separate Azure AD App Registration für Staging
  • [ ] Staging-DB: eigene Render Postgres (kein Prod-Snapshot ohne Anonymisierung)

Backup

  • [x] Restore-Script + Runbook dokumentiert
  • [x] Backup-Script (backend/scripts/backup-production-db.sh)
  • [ ] Monatlicher pg_dump → Cloudflare R2 (Cron auf Render oder GitHub Action)
  • [ ] Vierteljährlicher Restore-Test (Termin im Kalender)

Security (sofort)

  • [x] CORS für portal.mqa.group
  • [x] Auto-Seed beim Deploy deaktiviert
  • [x] Offene APIs abgesichert (Email, PDF, AI, Analytics reads)
  • [x] /uploads auth-geschützt
  • [x] CRON fail-closed
  • [x] Mock-Login in Production blockiert
  • [ ] Postgres IP-Allowlist einschränken (nicht 0.0.0.0/0)
  • [ ] Secret Rotation nach Cloudflare-Migration (R2 Keys, JWT optional)

Phase 2 — Hardening (Woche 3–6)

Application Security

  • [x] HTML-Sanitization (DOMPurify) für E-Mail/Policy-Views
  • [x] Security Headers am Frontend (serve.json)
  • [x] Authentifizierte PDF-Downloads (fetch + Blob)
  • [ ] HttpOnly Cookie-Auth evaluieren (JWT aus sessionStorage entfernen)
  • [ ] IDOR-Fixes: Policies, Media, Project-Inquiries, Risks
  • [ ] Uploads vollständig auf R2 (kein lokales /uploads auf Render)

Monitoring

  • [ ] Uptime-Monitoring (Better Stack / UptimeRobot) → MONITORING
  • [ ] Sentry (Backend + Frontend)
  • [ ] Render Alert bei Deploy-Failure + 5xx-Spike

Compliance (GDPR / NGO)

  • [ ] Verarbeitungsverzeichnis: Portal-Datenflüsse referenzieren
  • [ ] Incident Response Plan (72h-Meldefrist)
  • [ ] Audit-Log Retention-Policy definieren
  • [ ] Externer Pentest (optional, empfohlen vor Donor-Daten Live)

Phase 3 — Enterprise (optional)

  • [ ] Status-Page (status.mqa.group)
  • [ ] Offsite-Backup unabhängig von Render
  • [ ] Postgres RLS für Defense-in-Depth
  • [ ] WAF-Regeln (Cloudflare Pro)
  • [ ] SOC2/ISO-Dokumentation an Portal anbinden

Verantwortlichkeiten (Vorschlag)

BereichRolle
Render Deploy / EnvLead Developer
Cloudflare DNS + R2MQA IT + Developer
Azure AD / OAuthMQA IT
Backup-TestsDev + Compliance
Security ReviewsDev (quartalsweise)

Änderungshistorie

DatumÄnderung
2026-08-03GitHub Flow: CI Gate, PR/Issue-Templates, Dependabot, GITHUB-FLOW.md
2026-08-03Initiale Roadmap, Security-Fixes Phase 1, CI, Doku-Set