Kansho/docs/architecture/technical/security.md

70 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Kanshō Security"
version: "0.1"
status: "Arbeitsstand"
date: "2026-08-19"
product_family: "Jinkendo"
document_role: "Technical Chapter / Security"
parent_document: "technische_zielarchitektur.md"
---
# Kanshō Security
Kanonisches Home für Zugriffssicherheit des Mitai-Rahmens (Auth, TLS, Secrets, IDOR). Der Schutz personenbezogener Daten beim AI-Egress liegt in `privacy_gateway.md`. Encryption at rest, selektives Vergessen und DSFA: Interview H1, Ausprägung **offen**.
## 1. Rahmen, übernommen aus Mitai
- bcrypt für Passwort-Hashes, keine Klartext-PINs.
- Rate Limiting an Login/Register (Mitai: Login 5/min, Register restriktiver) konkrete Zahlen für Kanshō **bevorzugte Richtung**, bei Bedarf anpassen.
- CORS explizit, nicht `*` in Prod.
- HTTPS vor der App (Synology/Reverse Proxy der Familie).
- Secrets nur Server-`.env` (SMTP, Provider-Keys, DB). Nie im Frontend, nie ins Git.
- Session-Invalidierung beim Logout.
- Kein IDOR über Client-gewähltes Profil (`auth_identity_and_roles.md`).
## 2. Kanshō-spezifisch
- Provider-Keys für LLM nur hinter dem Gateway, mit Policy-Check vor Verwendung.
- Audit-Logs ohne Prompt-Volltext.
- Admin-API nicht über Security-by-Obscurity; immer `require_admin`.
- Fremde `profile_id` in Pfaden/Bodies ignorieren oder 403.
## 3. Transport und Ruhe
| Thema | Stand | Status |
|---|---|---|
| TLS nach außen | ja, Betriebsstandard der Familie | entschieden als Anforderung |
| Verschlüsselung at rest (DB, Backups, Gerät) | | offen |
| Client-Token in localStorage | XSS-Risiko bekannt | bevorzugte Richtung, später bewerten |
| Vollständiges Löschen / selektives Vergessen | fachlich offen | offen |
| Export/Portabilität | fachlich gewünscht (menschenlesbar) | offen in Technik |
## 4. Dependency- und Deploy-Hygiene
- Keine Provider-Keys in Compose-Dateien im Repo.
- Fail Closed bei fehlender Privacy-Policy des Endpoints, nicht Fail Open wegen Verfügbarkeit.
- Healthchecks ohne Leak von Nutzerdaten.
## 5. Safety vs. Security
Krisengrenzen und medizinische Hochrisikothemen sind **nicht** dieses Kapitel (`ai_architecture.md`, fachlich H3). Hier: Zugriff, Secrets, Isolation, Logging.
## 6. Entscheidungsstand
| Thema | Stand | Status |
|---|---|---|
| Guardrails / Privacy-Invariante | bindend, unabhängig von H1-Ausprägung | entschieden |
| IDOR-Profilheader | verworfen | entschieden |
| Encryption at rest, Delete, Cookie-Sessions | | offen |
| Shared-Postgres mit anderen Apps | Default nein | bevorzugte Richtung |
## 7. Offene Fragen
1. Getrennte Datenbank pro App vs. gemeinsamer Server mit getrennten Schemas?
2. Backup-Verschlüsselung und Schlüsselhaltung.
3. DSFA und Retention, sobald Mehrbenutzer über den privaten Betrieb hinausgeht.
## 8. Querverweise
- `auth_identity_and_roles.md`, `privacy_gateway.md`, `runtime_and_deploy.md`
- Fachlich: `../functional/guardrails.md` §1819