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
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:
124
docs-src/services/sdk-modules/risks.md
Normal file
124
docs-src/services/sdk-modules/risks.md
Normal 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` | 5–9 | Gelb |
|
||||
| `high` | 10–19 | 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` (1–5) → `impact` (1–5) → `[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
|
||||
```
|
||||
Reference in New Issue
Block a user