Services: Admin-Compliance, Backend-Compliance, AI-Compliance-SDK, Consent-SDK, Developer-Portal, PCA-Platform, DSMS Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
625 lines
28 KiB
Python
625 lines
28 KiB
Python
"""
|
|
Seed data for Controls.
|
|
|
|
~45 Controls across 9 domains:
|
|
- GOV: Governance & Organisation
|
|
- PRIV: Datenschutz & Privacy
|
|
- IAM: Identity & Access Management
|
|
- CRYPTO: Kryptografie
|
|
- SDLC: Secure Development Lifecycle
|
|
- OPS: Betrieb & Monitoring
|
|
- AI: KI-spezifisch
|
|
- CRA: CRA & Supply Chain
|
|
- AUD: Audit & Nachvollziehbarkeit
|
|
"""
|
|
|
|
CONTROLS_SEED = [
|
|
# =========================================================================
|
|
# GOV - Governance & Organisation
|
|
# =========================================================================
|
|
{
|
|
"control_id": "GOV-001",
|
|
"domain": "gov",
|
|
"control_type": "preventive",
|
|
"title": "ISMS Policy",
|
|
"description": "Dokumentierte Informationssicherheits-Management-System Policy mit jährlicher Überprüfung.",
|
|
"pass_criteria": "ISMS Policy vorhanden, aktuell (nicht älter als 12 Monate), von Management genehmigt.",
|
|
"implementation_guidance": "Policy erstellen nach ISO 27001 Struktur, Scope definieren, Management-Commitment dokumentieren.",
|
|
"is_automated": False,
|
|
"owner": "Security Team",
|
|
"review_frequency_days": 365,
|
|
},
|
|
{
|
|
"control_id": "GOV-002",
|
|
"domain": "gov",
|
|
"control_type": "preventive",
|
|
"title": "Rollen & Verantwortlichkeiten",
|
|
"description": "RACI-Matrix für alle sicherheitsrelevanten Prozesse dokumentiert.",
|
|
"pass_criteria": "RACI-Matrix vorhanden und aktuell, alle kritischen Rollen besetzt.",
|
|
"implementation_guidance": "RACI-Matrix erstellen für: Incident Response, Vulnerability Management, Access Management, Change Management.",
|
|
"is_automated": False,
|
|
"owner": "Security Team",
|
|
"review_frequency_days": 180,
|
|
},
|
|
{
|
|
"control_id": "GOV-003",
|
|
"domain": "gov",
|
|
"control_type": "preventive",
|
|
"title": "Security Awareness Training",
|
|
"description": "Alle Mitarbeiter absolvieren jährlich Security Awareness Training.",
|
|
"pass_criteria": "100% Completion Rate für alle aktiven Mitarbeiter, Nachweis nicht älter als 12 Monate.",
|
|
"implementation_guidance": "Training-Plattform einrichten (z.B. KnowBe4), Pflichttraining für Onboarding, jährliche Auffrischung.",
|
|
"is_automated": False,
|
|
"owner": "HR / Security Team",
|
|
"review_frequency_days": 365,
|
|
},
|
|
{
|
|
"control_id": "GOV-004",
|
|
"domain": "gov",
|
|
"control_type": "preventive",
|
|
"title": "Change Management",
|
|
"description": "Alle Code-Änderungen erfolgen über Pull Requests mit Review.",
|
|
"pass_criteria": "100% der Merges in main/master via PR, mindestens 1 Reviewer pro PR.",
|
|
"implementation_guidance": "Branch Protection Rules in GitHub aktivieren, CODEOWNERS definieren.",
|
|
"code_reference": ".github/CODEOWNERS",
|
|
"is_automated": True,
|
|
"automation_tool": "GitHub Branch Protection",
|
|
"owner": "Engineering Lead",
|
|
"review_frequency_days": 30,
|
|
},
|
|
{
|
|
"control_id": "GOV-005",
|
|
"domain": "gov",
|
|
"control_type": "corrective",
|
|
"title": "Incident Response Plan",
|
|
"description": "Dokumentierter Incident Response Plan mit Eskalationspfaden und Kontakten.",
|
|
"pass_criteria": "IRP vorhanden, getestet innerhalb der letzten 12 Monate, Kontaktdaten aktuell.",
|
|
"implementation_guidance": "IRP nach NIST SP 800-61 erstellen, Tabletop-Übungen durchführen.",
|
|
"is_automated": False,
|
|
"owner": "Security Team",
|
|
"review_frequency_days": 365,
|
|
},
|
|
|
|
# =========================================================================
|
|
# PRIV - Datenschutz & Privacy
|
|
# =========================================================================
|
|
{
|
|
"control_id": "PRIV-001",
|
|
"domain": "priv",
|
|
"control_type": "preventive",
|
|
"title": "Verarbeitungsverzeichnis (Art. 30)",
|
|
"description": "Aktuelles Verzeichnis aller Verarbeitungstätigkeiten gemäß Art. 30 DSGVO.",
|
|
"pass_criteria": "VVT vorhanden, vollständig (alle Kategorien), nicht älter als 6 Monate aktualisiert.",
|
|
"implementation_guidance": "VVT mit allen erforderlichen Feldern: Zweck, Kategorien, Empfänger, Fristen, TOMs.",
|
|
"is_automated": False,
|
|
"owner": "Datenschutzbeauftragter",
|
|
"review_frequency_days": 180,
|
|
},
|
|
{
|
|
"control_id": "PRIV-002",
|
|
"domain": "priv",
|
|
"control_type": "preventive",
|
|
"title": "DPIA durchgeführt (Art. 35)",
|
|
"description": "Datenschutz-Folgenabschätzung für Hochrisiko-Verarbeitungen durchgeführt.",
|
|
"pass_criteria": "DPIA für alle identifizierten Hochrisiko-Verarbeitungen vorhanden und dokumentiert.",
|
|
"implementation_guidance": "DPIA nach Art. 35 Abs. 7 DSGVO: Beschreibung, Notwendigkeit, Risikobewertung, Maßnahmen.",
|
|
"is_automated": False,
|
|
"owner": "Datenschutzbeauftragter",
|
|
"review_frequency_days": 365,
|
|
},
|
|
{
|
|
"control_id": "PRIV-003",
|
|
"domain": "priv",
|
|
"control_type": "preventive",
|
|
"title": "Privacy by Design (Art. 25)",
|
|
"description": "Datenschutz durch Technikgestaltung und datenschutzfreundliche Voreinstellungen.",
|
|
"pass_criteria": "PbD-Checkliste für alle neuen Features, Datensparsamkeit als Default.",
|
|
"implementation_guidance": "PbD-Review in Feature-Development-Prozess integrieren, Minimaldatenerhebung als Standard.",
|
|
"is_automated": False,
|
|
"owner": "Engineering Lead / DPO",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "PRIV-004",
|
|
"domain": "priv",
|
|
"control_type": "corrective",
|
|
"title": "Betroffenenrechte (Art. 15-22)",
|
|
"description": "Prozess für Betroffenenrechte (Auskunft, Löschung, Portabilität) implementiert.",
|
|
"pass_criteria": "DSR-Prozess dokumentiert, SLA < 30 Tage, Export-Funktion vorhanden.",
|
|
"implementation_guidance": "Self-Service-Portal für DSR, automatisierte Löschfunktion, Export im maschinenlesbaren Format.",
|
|
"code_reference": "backend/gdpr_api.py",
|
|
"is_automated": True,
|
|
"automation_tool": "Breakpilot GDPR Export",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "PRIV-005",
|
|
"domain": "priv",
|
|
"control_type": "preventive",
|
|
"title": "AVV mit Auftragsverarbeitern",
|
|
"description": "Auftragsverarbeitungsverträge mit allen Sub-Processors abgeschlossen.",
|
|
"pass_criteria": "AVV für alle Auftragsverarbeiter vorhanden, Art. 28 Abs. 3 konform.",
|
|
"implementation_guidance": "Liste aller Sub-Processors, AVV-Vorlagen nach Art. 28, jährliche Überprüfung.",
|
|
"is_automated": False,
|
|
"owner": "Legal / DPO",
|
|
"review_frequency_days": 365,
|
|
},
|
|
{
|
|
"control_id": "PRIV-006",
|
|
"domain": "priv",
|
|
"control_type": "preventive",
|
|
"title": "TOMs dokumentiert (Art. 32)",
|
|
"description": "Technische und organisatorische Maßnahmen gemäß Art. 32 DSGVO dokumentiert.",
|
|
"pass_criteria": "TOM-Dokument vorhanden, alle Kategorien abgedeckt, aktuell.",
|
|
"implementation_guidance": "TOMs nach Art. 32: Pseudonymisierung, Verschlüsselung, Wiederherstellung, regelmäßige Tests.",
|
|
"is_automated": False,
|
|
"owner": "Security Team / DPO",
|
|
"review_frequency_days": 180,
|
|
},
|
|
{
|
|
"control_id": "PRIV-007",
|
|
"domain": "priv",
|
|
"control_type": "preventive",
|
|
"title": "PII-Logging verhindert",
|
|
"description": "Personenbezogene Daten werden nicht in Logs geschrieben (PII Redaction).",
|
|
"pass_criteria": "PII-Redactor aktiv, keine PII in Logs (stichprobenartige Prüfung).",
|
|
"implementation_guidance": "PII-Redactor Middleware implementieren, regex-basierte Filterung für E-Mail, Namen, etc.",
|
|
"code_reference": "backend/middleware/pii_redactor.py",
|
|
"is_automated": True,
|
|
"automation_tool": "PII Redactor Middleware",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
|
|
# =========================================================================
|
|
# IAM - Identity & Access Management
|
|
# =========================================================================
|
|
{
|
|
"control_id": "IAM-001",
|
|
"domain": "iam",
|
|
"control_type": "preventive",
|
|
"title": "RBAC implementiert",
|
|
"description": "Role-Based Access Control mit dokumentierten Rollen und Berechtigungen.",
|
|
"pass_criteria": "RBAC-Modell dokumentiert, Rollen im Code enforced, keine Hardcoded-Berechtigungen.",
|
|
"implementation_guidance": "Rollen definieren (user, admin, dpo), Middleware für Berechtigungsprüfung.",
|
|
"code_reference": "consent-service/internal/middleware/auth.go",
|
|
"is_automated": True,
|
|
"automation_tool": "JWT Role Claims",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "IAM-002",
|
|
"domain": "iam",
|
|
"control_type": "preventive",
|
|
"title": "MFA für Admin-Accounts",
|
|
"description": "Multi-Faktor-Authentifizierung für alle Admin-Zugänge aktiviert.",
|
|
"pass_criteria": "100% MFA-Abdeckung für Admin-Accounts, Enforcement-Policy aktiv.",
|
|
"implementation_guidance": "MFA über Identity Provider (Auth0, Keycloak) oder TOTP-Integration.",
|
|
"is_automated": False,
|
|
"owner": "Security Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "IAM-003",
|
|
"domain": "iam",
|
|
"control_type": "preventive",
|
|
"title": "Mandantentrennung",
|
|
"description": "Strikte Tenant-Isolation zwischen verschiedenen Kunden/Schulen.",
|
|
"pass_criteria": "Tenant-ID in allen Queries, keine Cross-Tenant-Datenzugriffe möglich.",
|
|
"implementation_guidance": "Tenant-ID als Pflichtfeld, Row-Level-Security in Queries, Penetration-Test.",
|
|
"code_reference": "consent-service/internal/handlers/handlers.go",
|
|
"is_automated": True,
|
|
"automation_tool": "Database Query Filter",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "IAM-004",
|
|
"domain": "iam",
|
|
"control_type": "preventive",
|
|
"title": "Session Management",
|
|
"description": "Sichere Session-Verwaltung mit Token-Expiry und Rotation.",
|
|
"pass_criteria": "Token-Expiry < 24h, Refresh-Token-Rotation, Logout invalidiert Token.",
|
|
"implementation_guidance": "JWT mit kurzer Expiry, Refresh-Token-Flow, Token-Blacklisting bei Logout.",
|
|
"code_reference": "consent-service/internal/services/auth_service.go",
|
|
"is_automated": True,
|
|
"automation_tool": "JWT Token Management",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "IAM-005",
|
|
"domain": "iam",
|
|
"control_type": "detective",
|
|
"title": "Least Privilege",
|
|
"description": "Regelmäßige Access Reviews zur Sicherstellung minimaler Berechtigungen.",
|
|
"pass_criteria": "Vierteljährliche Access Reviews durchgeführt, überflüssige Rechte entfernt.",
|
|
"implementation_guidance": "Access Review Prozess etablieren, automatisierte Reports über Berechtigungen.",
|
|
"is_automated": False,
|
|
"owner": "Security Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
|
|
# =========================================================================
|
|
# CRYPTO - Kryptografie
|
|
# =========================================================================
|
|
{
|
|
"control_id": "CRYPTO-001",
|
|
"domain": "crypto",
|
|
"control_type": "preventive",
|
|
"title": "Encryption at Rest",
|
|
"description": "Sensible Daten sind im Ruhezustand verschlüsselt (AES-256).",
|
|
"pass_criteria": "Datenbank-Verschlüsselung aktiv, Backup-Verschlüsselung aktiv.",
|
|
"implementation_guidance": "PostgreSQL mit TDE oder pgcrypto, verschlüsselte Backups.",
|
|
"is_automated": True,
|
|
"automation_tool": "PostgreSQL Encryption",
|
|
"owner": "Infrastructure Team",
|
|
"review_frequency_days": 180,
|
|
},
|
|
{
|
|
"control_id": "CRYPTO-002",
|
|
"domain": "crypto",
|
|
"control_type": "preventive",
|
|
"title": "Encryption in Transit",
|
|
"description": "Alle Datenübertragungen sind TLS 1.3 verschlüsselt.",
|
|
"pass_criteria": "TLS 1.3 enforced, HSTS aktiv, keine unsicheren Cipher Suites.",
|
|
"implementation_guidance": "Nginx/Traefik mit TLS 1.3 Mindestversion, HSTS Header, SSL Labs A+ Rating.",
|
|
"is_automated": True,
|
|
"automation_tool": "SSL Labs / testssl.sh",
|
|
"owner": "Infrastructure Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "CRYPTO-003",
|
|
"domain": "crypto",
|
|
"control_type": "preventive",
|
|
"title": "Key Management",
|
|
"description": "Kryptografische Schlüssel sicher in Vault gespeichert mit Rotation.",
|
|
"pass_criteria": "Keys in Vault, automatische Rotation, keine Hardcoded Secrets.",
|
|
"implementation_guidance": "HashiCorp Vault oder AWS KMS, Key-Rotation alle 90 Tage.",
|
|
"code_reference": "vault/",
|
|
"is_automated": True,
|
|
"automation_tool": "HashiCorp Vault",
|
|
"owner": "Infrastructure Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "CRYPTO-004",
|
|
"domain": "crypto",
|
|
"control_type": "preventive",
|
|
"title": "Password Hashing",
|
|
"description": "Passwörter werden mit bcrypt oder Argon2 gehasht.",
|
|
"pass_criteria": "bcrypt/Argon2 verwendet, Cost Factor angemessen, keine MD5/SHA1.",
|
|
"implementation_guidance": "bcrypt mit Cost >= 10, keine eigenentwickelten Hash-Funktionen.",
|
|
"code_reference": "consent-service/internal/services/auth_service.go",
|
|
"is_automated": True,
|
|
"automation_tool": "Semgrep Rule",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 180,
|
|
},
|
|
|
|
# =========================================================================
|
|
# SDLC - Secure Development Lifecycle
|
|
# =========================================================================
|
|
{
|
|
"control_id": "SDLC-001",
|
|
"domain": "sdlc",
|
|
"control_type": "detective",
|
|
"title": "SAST Scanning",
|
|
"description": "Static Application Security Testing in CI Pipeline integriert.",
|
|
"pass_criteria": "Semgrep in CI, 0 High/Critical Findings, Blocking bei neuen Findings.",
|
|
"implementation_guidance": "Semgrep mit OWASP Top 10 Rules, GitHub Actions Integration.",
|
|
"code_reference": ".github/workflows/security.yml",
|
|
"is_automated": True,
|
|
"automation_tool": "Semgrep",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 7,
|
|
},
|
|
{
|
|
"control_id": "SDLC-002",
|
|
"domain": "sdlc",
|
|
"control_type": "detective",
|
|
"title": "Dependency Scanning",
|
|
"description": "Automatische Überprüfung auf bekannte Schwachstellen in Dependencies.",
|
|
"pass_criteria": "Trivy/Grype in CI, keine kritischen CVEs in Produktion.",
|
|
"implementation_guidance": "Trivy für Container + Dependencies, Dependabot für automatische Updates.",
|
|
"code_reference": ".github/workflows/security.yml",
|
|
"is_automated": True,
|
|
"automation_tool": "Trivy / Dependabot",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 7,
|
|
},
|
|
{
|
|
"control_id": "SDLC-003",
|
|
"domain": "sdlc",
|
|
"control_type": "detective",
|
|
"title": "Secret Detection",
|
|
"description": "Automatische Erkennung von Secrets in Code und Commits.",
|
|
"pass_criteria": "Gitleaks in CI, Pre-Commit-Hook aktiv, 0 Findings.",
|
|
"implementation_guidance": "Gitleaks als Pre-Commit-Hook und in CI, Custom-Rules für eigene Secrets.",
|
|
"code_reference": ".github/workflows/security.yml",
|
|
"is_automated": True,
|
|
"automation_tool": "Gitleaks",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 7,
|
|
},
|
|
{
|
|
"control_id": "SDLC-004",
|
|
"domain": "sdlc",
|
|
"control_type": "preventive",
|
|
"title": "Code Review",
|
|
"description": "Alle Code-Änderungen werden von mindestens einem anderen Entwickler reviewed.",
|
|
"pass_criteria": "100% PR-Coverage, mindestens 1 Approval pro PR.",
|
|
"implementation_guidance": "GitHub Branch Protection, CODEOWNERS für kritische Pfade.",
|
|
"is_automated": True,
|
|
"automation_tool": "GitHub Branch Protection",
|
|
"owner": "Engineering Lead",
|
|
"review_frequency_days": 30,
|
|
},
|
|
{
|
|
"control_id": "SDLC-005",
|
|
"domain": "sdlc",
|
|
"control_type": "preventive",
|
|
"title": "SBOM Generation",
|
|
"description": "Software Bill of Materials wird automatisch generiert.",
|
|
"pass_criteria": "CycloneDX SBOM vorhanden, bei jedem Release aktualisiert.",
|
|
"implementation_guidance": "cyclonedx-cli in Release-Pipeline, SBOM in GitHub Releases.",
|
|
"is_automated": True,
|
|
"automation_tool": "CycloneDX",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 30,
|
|
},
|
|
{
|
|
"control_id": "SDLC-006",
|
|
"domain": "sdlc",
|
|
"control_type": "detective",
|
|
"title": "Container Scanning",
|
|
"description": "Docker Images werden auf Schwachstellen gescannt.",
|
|
"pass_criteria": "Trivy Image Scan in CI, keine Critical/High in Base Images.",
|
|
"implementation_guidance": "Trivy Image Scan vor Push zu Registry, Slim Base Images verwenden.",
|
|
"code_reference": ".github/workflows/security.yml",
|
|
"is_automated": True,
|
|
"automation_tool": "Trivy Image Scan",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 7,
|
|
},
|
|
|
|
# =========================================================================
|
|
# OPS - Betrieb & Monitoring
|
|
# =========================================================================
|
|
{
|
|
"control_id": "OPS-001",
|
|
"domain": "ops",
|
|
"control_type": "detective",
|
|
"title": "Audit Logging",
|
|
"description": "Alle sicherheitsrelevanten Events werden geloggt.",
|
|
"pass_criteria": "Login/Logout, Consent-Änderungen, Admin-Aktionen geloggt, Retention >= 1 Jahr.",
|
|
"implementation_guidance": "Structured Logging mit Request-ID, zentrale Log-Aggregation.",
|
|
"code_reference": "backend/audit_log.py",
|
|
"is_automated": True,
|
|
"automation_tool": "Structured Logging",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "OPS-002",
|
|
"domain": "ops",
|
|
"control_type": "corrective",
|
|
"title": "Backup & Recovery",
|
|
"description": "Tägliche Backups mit getesteter Wiederherstellung.",
|
|
"pass_criteria": "Tägliche Backups, RTO < 4h, RPO < 24h, Recovery-Test vierteljährlich.",
|
|
"implementation_guidance": "Automatisierte Backups, Offsite-Kopie, dokumentierter Recovery-Prozess.",
|
|
"code_reference": "scripts/backup.sh",
|
|
"is_automated": True,
|
|
"automation_tool": "PostgreSQL pg_dump / Docker Volumes",
|
|
"owner": "Infrastructure Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "OPS-003",
|
|
"domain": "ops",
|
|
"control_type": "detective",
|
|
"title": "Incident Response",
|
|
"description": "Mean Time to Detect (MTTD) für Security Incidents < 24h.",
|
|
"pass_criteria": "Alerting konfiguriert, MTTD < 24h, dokumentierte Incidents.",
|
|
"implementation_guidance": "Alert-Regeln für Anomalien, Pager-Rotation, Incident-Runbooks.",
|
|
"is_automated": True,
|
|
"automation_tool": "Prometheus / Alertmanager",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 30,
|
|
},
|
|
{
|
|
"control_id": "OPS-004",
|
|
"domain": "ops",
|
|
"control_type": "corrective",
|
|
"title": "Vulnerability Management",
|
|
"description": "Definierte Patch-SLAs für Schwachstellen nach Severity.",
|
|
"pass_criteria": "Critical < 7 Tage, High < 30 Tage, Medium < 90 Tage.",
|
|
"implementation_guidance": "Vulnerability Tracking in Issues, SLA-Monitoring, Patch-Prozess.",
|
|
"is_automated": False,
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 30,
|
|
},
|
|
{
|
|
"control_id": "OPS-005",
|
|
"domain": "ops",
|
|
"control_type": "detective",
|
|
"title": "Monitoring & Alerting",
|
|
"description": "Uptime Monitoring mit 99.9% Verfügbarkeitsziel.",
|
|
"pass_criteria": "Uptime >= 99.9% (monatlich), Alerts bei Ausfällen < 5 Min.",
|
|
"implementation_guidance": "Health-Checks, Uptime-Monitoring (Uptime Kuma), Status Page.",
|
|
"is_automated": True,
|
|
"automation_tool": "Uptime Kuma / Prometheus",
|
|
"owner": "Infrastructure Team",
|
|
"review_frequency_days": 30,
|
|
},
|
|
|
|
# =========================================================================
|
|
# AI - KI-spezifisch (AI Act)
|
|
# =========================================================================
|
|
{
|
|
"control_id": "AI-001",
|
|
"domain": "ai",
|
|
"control_type": "preventive",
|
|
"title": "Training Data Governance",
|
|
"description": "Dokumentation aller Trainingsdatenquellen und deren Lizenzierung.",
|
|
"pass_criteria": "Datenquellen inventarisiert, Lizenzen dokumentiert, keine unlizenzierte Daten.",
|
|
"implementation_guidance": "Data Catalog mit Quellen, Lizenzen, Verarbeitungszwecken.",
|
|
"is_automated": False,
|
|
"owner": "ML Team",
|
|
"review_frequency_days": 180,
|
|
},
|
|
{
|
|
"control_id": "AI-002",
|
|
"domain": "ai",
|
|
"control_type": "detective",
|
|
"title": "Model Logging",
|
|
"description": "Alle KI-Inferenzen werden für Nachvollziehbarkeit geloggt.",
|
|
"pass_criteria": "Input/Output Logging für KI-Aufrufe, Retention >= 6 Monate.",
|
|
"implementation_guidance": "LLM-Gateway mit Request/Response Logging, Token-Tracking.",
|
|
"code_reference": "backend/llm_client.py",
|
|
"is_automated": True,
|
|
"automation_tool": "LLM Gateway Logging",
|
|
"owner": "ML Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "AI-003",
|
|
"domain": "ai",
|
|
"control_type": "preventive",
|
|
"title": "Human-in-the-Loop",
|
|
"description": "Review-Prozess für KI-generierte Inhalte vor Veröffentlichung.",
|
|
"pass_criteria": "HITL-Prozess dokumentiert, keine automatische Veröffentlichung ohne Review.",
|
|
"implementation_guidance": "Review-Queue für KI-Outputs, Freigabe-Workflow.",
|
|
"is_automated": False,
|
|
"owner": "Product Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "AI-004",
|
|
"domain": "ai",
|
|
"control_type": "detective",
|
|
"title": "Bias Monitoring",
|
|
"description": "Regelmäßige Überprüfung von KI-Outputs auf Bias.",
|
|
"pass_criteria": "Bias-Metriken definiert, vierteljährliche Überprüfung, Findings dokumentiert.",
|
|
"implementation_guidance": "Fairness-Metriken (Demographic Parity, Equalized Odds), Bias-Audits.",
|
|
"is_automated": False,
|
|
"owner": "ML Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "AI-005",
|
|
"domain": "ai",
|
|
"control_type": "preventive",
|
|
"title": "AI Act Risk Classification",
|
|
"description": "Risikoklassifizierung der KI-Systeme gemäß EU AI Act dokumentiert.",
|
|
"pass_criteria": "Alle KI-Systeme klassifiziert (minimal/limited/high/unacceptable), Dokumentation aktuell.",
|
|
"implementation_guidance": "AI Act Risk Assessment Framework, Klassifizierung pro Use Case.",
|
|
"is_automated": False,
|
|
"owner": "Legal / ML Team",
|
|
"review_frequency_days": 365,
|
|
},
|
|
|
|
# =========================================================================
|
|
# CRA - CRA & Supply Chain
|
|
# =========================================================================
|
|
{
|
|
"control_id": "CRA-001",
|
|
"domain": "cra",
|
|
"control_type": "preventive",
|
|
"title": "SBOM vorhanden",
|
|
"description": "Software Bill of Materials im CycloneDX oder SPDX Format.",
|
|
"pass_criteria": "SBOM vorhanden, automatisch generiert, bei Release aktualisiert.",
|
|
"implementation_guidance": "CycloneDX in CI, SBOM in GitHub Releases, automatische Updates.",
|
|
"is_automated": True,
|
|
"automation_tool": "CycloneDX / SPDX",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 30,
|
|
},
|
|
{
|
|
"control_id": "CRA-002",
|
|
"domain": "cra",
|
|
"control_type": "corrective",
|
|
"title": "Vulnerability Disclosure",
|
|
"description": "Öffentliche Vulnerability Disclosure Policy (VDP) vorhanden.",
|
|
"pass_criteria": "VDP veröffentlicht, Kontaktdaten aktuell, Prozess dokumentiert.",
|
|
"implementation_guidance": "security.txt, SECURITY.md in Repository, Responsible Disclosure Policy.",
|
|
"code_reference": "SECURITY.md",
|
|
"is_automated": False,
|
|
"owner": "Security Team",
|
|
"review_frequency_days": 365,
|
|
},
|
|
{
|
|
"control_id": "CRA-003",
|
|
"domain": "cra",
|
|
"control_type": "corrective",
|
|
"title": "Patch-SLA",
|
|
"description": "Dokumentierte und eingehaltene Patch-Zeiten für Schwachstellen.",
|
|
"pass_criteria": "SLAs definiert und kommuniziert, Einhaltung >= 95%.",
|
|
"implementation_guidance": "Patch-SLA: Critical < 7d, High < 30d, Medium < 90d.",
|
|
"is_automated": False,
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 30,
|
|
},
|
|
{
|
|
"control_id": "CRA-004",
|
|
"domain": "cra",
|
|
"control_type": "preventive",
|
|
"title": "End-of-Support Policy",
|
|
"description": "EOL-Datum für Produktversionen kommuniziert.",
|
|
"pass_criteria": "Support-Zeiträume dokumentiert, Kunden informiert, EOL >= 24 Monate vor Ende.",
|
|
"implementation_guidance": "Support-Matrix veröffentlichen, EOL-Kommunikation an Kunden.",
|
|
"is_automated": False,
|
|
"owner": "Product Team",
|
|
"review_frequency_days": 365,
|
|
},
|
|
|
|
# =========================================================================
|
|
# AUD - Audit & Nachvollziehbarkeit
|
|
# =========================================================================
|
|
{
|
|
"control_id": "AUD-001",
|
|
"domain": "aud",
|
|
"control_type": "detective",
|
|
"title": "Traceability",
|
|
"description": "Request-ID durchgängig in allen Logs für Nachverfolgbarkeit.",
|
|
"pass_criteria": "Request-ID in allen Service-Logs, korrelierbar über Services.",
|
|
"implementation_guidance": "X-Request-ID Header, Propagation über alle Services.",
|
|
"code_reference": "backend/middleware/request_id.py",
|
|
"is_automated": True,
|
|
"automation_tool": "Request ID Middleware",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 90,
|
|
},
|
|
{
|
|
"control_id": "AUD-002",
|
|
"domain": "aud",
|
|
"control_type": "corrective",
|
|
"title": "Audit Export",
|
|
"description": "ZIP-Export-Funktion für externe Prüfer funktional.",
|
|
"pass_criteria": "Export-Funktion verfügbar, alle relevanten Daten enthalten, signiert.",
|
|
"implementation_guidance": "Export mit Controls, Evidence, Risks als ZIP, SHA-256 Hash.",
|
|
"code_reference": "backend/compliance/services/export_generator.py",
|
|
"is_automated": True,
|
|
"automation_tool": "Compliance Export Service",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 180,
|
|
},
|
|
{
|
|
"control_id": "AUD-003",
|
|
"domain": "aud",
|
|
"control_type": "detective",
|
|
"title": "Compliance Dashboard",
|
|
"description": "Echtzeit-Compliance-Score und Status-Übersicht.",
|
|
"pass_criteria": "Dashboard verfügbar, Score automatisch berechnet, Drill-Down möglich.",
|
|
"implementation_guidance": "Dashboard mit Score-Berechnung, Regulation-Coverage, Trend-Anzeige.",
|
|
"code_reference": "website/app/admin/compliance/page.tsx",
|
|
"is_automated": True,
|
|
"automation_tool": "Compliance Dashboard",
|
|
"owner": "Engineering Team",
|
|
"review_frequency_days": 30,
|
|
},
|
|
]
|