75 lines
3.4 KiB
Markdown
75 lines
3.4 KiB
Markdown
# Sicherheitsmodell
|
|
|
|
## Netzgrenze
|
|
|
|
- Open WebUI und Router veröffentlichen keinerlei Host-Ports.
|
|
- Ein dedizierter WireGuard-Container stellt auf seiner VPN-Adresse nur 8080
|
|
und 8081 bereit.
|
|
- Die egressfähigen Docker-Netze verwenden eigene Routingtabellen.
|
|
- Heimnetz- und optionaler Internetverkehr laufen über WireGuard.
|
|
- Die Tabellen zeigen ausschließlich zum Gateway-Container und besitzen keine
|
|
Route über das Standortgateway. Das ist der Fail-Closed-Mechanismus.
|
|
- Der Host ist kein Router zwischen Universitäts- und Heimnetz.
|
|
|
|
Da keine KI-Ports publiziert werden, kann Docker die Host-Firewall an dieser
|
|
Stelle nicht umgehen. SSH bleibt davon getrennt und schlüsselbasiert auf der
|
|
physischen Schnittstelle erreichbar.
|
|
|
|
## Containergrenzen
|
|
|
|
- llama.cpp: read-only, keine Capabilities, Modelle read-only, keine Ports.
|
|
- Router: unprivilegierter Benutzer, kein Docker-Socket, feste API-Oberfläche.
|
|
- Profile Controller: einzige Socket-Ausnahme; feste Profile und nur
|
|
List/Start/Stop, keine frei wählbaren Images, Befehle oder Mounts.
|
|
- Open WebUI: einziges persistentes Chat-Volume.
|
|
- MCP-Fachcontainer: intern, getrennte Secrets und keine Host-Ports.
|
|
- TinySearch/SearXNG: intern, Suchanfragen ohne Chatverlauf.
|
|
|
|
llama.cpp bekommt weder MCP-Konfiguration noch HA-, ARR- oder Unraid-Secrets.
|
|
Open WebUI kennt nur interne MCP-URLs; Authentisierung zu den Zielsystemen
|
|
findet im jeweiligen Fachcontainer statt. Externe MCP-Clients werden erst über
|
|
einen authentifizierten WireGuard-Gateway zugelassen.
|
|
|
|
Ein Docker-Socket bleibt grundsätzlich privilegiert. Der Controller reduziert
|
|
die erreichbare Funktion stark, ersetzt aber keine zusätzliche Socket-Proxy-
|
|
Sandbox. Er ist klein, testbar und nicht von Clients direkt erreichbar.
|
|
|
|
## Secrets und private Daten
|
|
|
|
- Keine Secrets in Git, Prompts, MCP-Schemas, Logs oder Screenshots.
|
|
- Installer-Konfiguration und `/etc/mike-ai/*` haben restriktive Rechte.
|
|
- Router-, Controller- und WebUI-Schlüssel sind getrennt und zufällig.
|
|
- Das Modell bekommt keine Schlüsselwerte zurück; spätere Integrationen nutzen
|
|
lokale Broker/Environment-Dateien.
|
|
- Open-WebUI-Volume kann Chats enthalten und wird nur verschlüsselt gesichert.
|
|
|
|
## Werkzeugprofile
|
|
|
|
| Modus | Erlaubte Werkzeuge |
|
|
|---|---|
|
|
| Standard | lokale Websuche, harmlose Hilfsfunktionen |
|
|
| Home Assistant | eigener begrenzter HA-MCP |
|
|
| ARR | Sonarr/Radarr, zuerst read-only |
|
|
| Unraid Diagnose | Status und eng begrenzte Logs |
|
|
| Administration | Vorschau, Approval-Ticket, Verifikation |
|
|
|
|
Allgemeine Shell, beliebiges SSH/SCP, freies `curl`, Docker-Administration und
|
|
freie Dateisystemsuche gehören nicht ins Standardprofil. Der Athena Terminal
|
|
MCP ist davon ausdrücklich keine Ausnahme: Er sieht nur zwei read-only Mounts,
|
|
besitzt weder Docker-Socket noch Egress oder Host-PID-Namensraum und akzeptiert
|
|
nur eine kleine Positivliste direkter Lesebefehle. Reboot, Shutdown, SSH,
|
|
Interpreter, Service-Steuerung und sämtliche Schreibwege sind ausgeschlossen.
|
|
|
|
## Schreibaktionen
|
|
|
|
Persistente oder destruktive Änderungen folgen immer: Bestandsaufnahme,
|
|
exakte Vorschau, an die Vorschau gebundene Freigabe, unveränderte Ausführung,
|
|
anschließende Verifikation.
|
|
|
|
## Vor jedem Push
|
|
|
|
- Private-Key-, Token-, Passwort- und API-Key-Muster suchen.
|
|
- Keine `.env`, Zertifikate, Logs, Bilder, Audio oder Modelle einchecken.
|
|
- Beispiele enthalten nur Platzhalter; interne Hostnamen nur wenn bewusst.
|
|
- Änderungen am Controller und Netzwerkguard mit Tests und Review versehen.
|