feat(reporting+docs): tenant-ID-Validierung, Go-Tests, 4 MkDocs-Einzelseiten
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 37s
CI / test-python-backend-compliance (push) Successful in 33s
CI / test-python-document-crawler (push) Successful in 23s
CI / test-python-dsms-gateway (push) Successful in 18s

- reporting_handlers.go: uuid.Nil-Check vor Store-Aufruf (→ 400)
- reporting_handlers_test.go: 4 MissingTenantID-Tests (PASS) + 4 WithTenant-Tests (SKIP)
- docs-src: requirements.md, controls.md, evidence.md, risks.md (je mit API, Schema, Tests)
- mkdocs.yml: 4 neue Nav-Einträge + \n-Bug auf Zeile 91 behoben
- compliance-kern.md: Link-Hinweise zu Detailseiten ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-05 18:25:26 +01:00
parent 35576fb6f8
commit a1980cd12d
8 changed files with 680 additions and 1 deletions

View File

@@ -0,0 +1,124 @@
# Risiken (CP-RSK)
Verwaltet Datenschutz- und KI-Risiken mit Risikobewertung nach Likelihood × Impact.
**Prefix:** `CP-RSK` · **Frontend:** `https://macmini:3007/sdk/risks`
**Proxy:** `/api/sdk/v1/compliance/[[...path]]``backend-compliance:8002/compliance/...`
---
## Features
- Risikomatrix (Likelihood × Impact, 5×5)
- Kategorisierung nach Datenschutz, KI, Betrieb, Sicherheit
- Status-Tracking: open / mitigated / accepted / closed
- Restrisiko nach Mitigationsmaßnahmen
- Verknüpfung mit Controls
---
## Rechtsgrundlage
| Artikel | Bezug |
|---------|-------|
| Art. 24 DSGVO | Risikobasierter Ansatz |
| Art. 32 DSGVO | Risikobewertung für Sicherheitsmaßnahmen |
| Art. 35 DSGVO | DSFA bei hohem Risiko |
| Art. 9 AI Act | Risikomanagementsystem für KI |
---
## Risikobewertung
| Stufe | Likelihood × Impact | Farbe |
|-------|---------------------|-------|
| `low` | ≤ 4 | Grün |
| `medium` | 59 | Gelb |
| `high` | 1019 | Orange |
| `critical` | ≥ 20 | Rot |
---
## API Endpoints
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `GET` | `/risks` | Liste (`category`, `status`, `risk_level`) |
| `POST` | `/risks` | Neues Risiko anlegen |
| `PUT` | `/risks/{risk_id}` | Risiko aktualisieren (Status, Restrisiko) |
| `DELETE` | `/risks/{risk_id}` | Risiko löschen |
| `GET` | `/risks/matrix` | Risikomatrix (Likelihood × Impact) |
### Risikomatrix-Response
```http
GET /risks/matrix
```
```json
{
"matrix": {
"3": { "4": ["RISK-001", "RISK-007"] },
"1": { "1": [] }
},
"risks": [...]
}
```
Die Matrix ist nach `likelihood` (15) → `impact` (15) → `[risk_ids]` strukturiert.
### Request-Beispiel (POST)
```json
{
"title": "Unbefugter Datenzugriff durch Dritte",
"category": "data_privacy",
"likelihood": 3,
"impact": 4,
"description": "Dritte könnten über unsichere APIs auf personenbezogene Daten zugreifen.",
"mitigation": "Einführung von API-Gateway mit Authentifizierung"
}
```
---
## Frontend
**URL:** `https://macmini:3007/sdk/risks`
Interaktive Risikomatrix als 5×5-Heatmap. Listenansicht mit Status-Badges und Kategorie-Filter. Neue Risiken können über ein Formular angelegt und direkt gemindert werden.
---
## Datenbankschema
```sql
compliance_risks (
id UUID PRIMARY KEY,
risk_id VARCHAR UNIQUE, -- z.B. "RISK-001"
title TEXT,
category VARCHAR, -- data_privacy/ai/operational/security
description TEXT,
likelihood INTEGER CHECK (likelihood BETWEEN 1 AND 5),
impact INTEGER CHECK (impact BETWEEN 1 AND 5),
inherent_risk VARCHAR, -- low/medium/high/critical
residual_risk VARCHAR,
status VARCHAR DEFAULT 'open',
mitigation TEXT,
owner VARCHAR,
created_at TIMESTAMP,
updated_at TIMESTAMP
)
```
---
## Tests
**Testdatei:** `backend-compliance/tests/test_risk_routes.py`
**Anzahl Tests:** 16 (+ 8 aus Paket 2) · **Status:** ✅ alle bestanden (Stand 2026-03-05)
```bash
cd backend-compliance
python3 -m pytest tests/test_risk_routes.py -v
```