Zum Hauptinhalt springen
  1. Posts/

Persönliche Daten bei der Verwendung gängiger KI-Modelle mit Pasteguard in OpenWebUI schützen

·1118 Wörter·6 min· loading · loading ·
Inhaltsverzeichnis

Einleitung
#

Wenn du LLMs/KI-Modelle mit OpenWebUI verwendest, die nicht lokal laufen, besteht immer das Risiko, dass du versehentlich persönliche Daten preisgibst. Oder du hostest OpenWebUI in deinem Unternehmen mit mehreren Benutzern, die sich der Risiken beim Upload von persönlichen Daten nicht bewusst sind? Pasteguard (ehemals LLM Shield) hilft dir beim Schutz dieser eingefügten Daten. Es fungiert als Proxy zwischen dir und dem API-Endpunkt des LLM/KI-Anbieters (OpenAI/ChatGPT, Anthropic/Claude oder OpenRouter).

Über 30 Arten sensibler Daten in 24 Sprachen werden von Pasteguard erkannt und geschützt: Namen, E-Mails, Telefonnummern, Kreditkarten, IBANs, IP-Adressen, Standorte, API-Schlüssel, SSH-Schlüssel, JWT-Token, Passwörter, Verbindungszeichenfolgen, private Schlüssel und Bearer-Token.

Disclaimer: Pasteguard ist vibecoded, aber vom Ersteller architektonisch entworfen und überprüft. Der Code ist auf Github - sgasser/pasteguard verfügbar.
alt text

Wie es funktioniert
#

Quelle: pasteguard.com - How it works

  1. Füge Text mit Namen, E-Mails, API-Schlüsseln ein – alles, wobei du Hilfe benötigst.
  2. Deine privaten Daten werden zu [[PERSON_1]], [[EMAIL_1]] umgewandelt usw., bevor der Anbieter sie erhält.
  3. Die KI antwortet normal – sie benötigt deine echten Daten nicht, um dir zu helfen.
  4. In der Antwort stehen die Daten wieder im Klartext.
    Pasteguard How it works
    (Bild von Pasteguard.com)

Anforderungen
#

  • Server zum Hosten von Pasteguard
  • Docker auf dem Server installiert (Dieses System sollte bereits existieren, wenn du OpenWebUI verwendest)

Einrichtung
#

Pasteguard Container & Konfiguration
#

Quelle: Offizielle Dokumentation
Für eine schnelle Einrichtung ohne weitere Konfiguration und ohne persistente Logs, führe diesen Befehl aus:

docker run --rm -p 3000:3000 ghcr.io/sgasser/pasteguard:en

Wähle den Tag :en am Ende, wenn du mit deiner KI nur Englisch schreibst. Wenn du aus Europa kommst, kannst du :eu wählen, um Unterstützung für mehr europäische Sprachen zu erhalten.

Wenn du persistente Logs über erkannte und geschützte Prompts wünschst, benötigst du die config.yaml (verfügbar im offiziellen Repository). Kopiere diese in dein Arbeitsverzeichnis (z.B. /opt/docker/pasteguard) und erstelle ein Datenverzeichnis.

# Konfiguration herunterladen
curl -O https://raw.githubusercontent.com/sgasser/pasteguard/main/config.example.yaml
mv config.example.yaml config.yaml

# Datenverzeichnis erstellen
mkdir -p data

Jetzt kannst du die config.yaml nach deinen Wünschen bearbeiten. Schau dir die heruntergeladene Beispielkonfiguration an und passe sie an deine Präferenzen an. Meine angepasste Konfiguration:

angepasste config.yaml
# Servereinstellungen
server:
  port: 3000
  host: "[IP_ADDRESS]"

# Anbieter - API-Endpunkte
# OpenAI-kompatibler Endpunkt (erforderlich)
openai:
  base_url: https://api.openai.com/v1

# Anthropic-Endpunkt (optional)
# Aktivieren, um /anthropic/v1/messages Endpunkt zu verwenden
anthropic:
  base_url: https://api.anthropic.com

masking:
  show_markers: false
  marker_text: "[geschützt]"

# PII-Erkennungseinstellungen (Microsoft Presidio)
pii_detection:
  presidio_url: http://localhost:5002
  languages:
    - en
    - de
  fallback_language: en
  score_threshold: 0.7  # Mindestvertrauenswert (0.0 - 1.0)

# Zu erkennende Entitätstypen
# Siehe: https://microsoft.github.io/presidio/supported_entities/
entities:
  - PERSON
  - EMAIL_ADDRESS
  - PHONE_NUMBER
  - CREDIT_CARD
  - IBAN_CODE
  - IP_ADDRESS
  - LOCATION
  - US_SSN
  - US_PASSPORT
  - CRYPTO
  - NRP  # Nationale Registrierungsnummer
  - MEDICAL_LICENSE
  - URL

# Aktivieren der Geheimniserkennung (Standard: true)
enabled: true
action: mask
entities:
  - OPENSSH_PRIVATE_KEY
  - PEM_PRIVATE_KEY
  - API_KEY_SK
  - API_KEY_AWS
  - API_KEY_GITHUB
  - JWT_TOKEN
  - BEARER_TOKEN
  - ENV_PASSWORD
  - ENV_SECRET
  - CONNECTION_STRING
max_scan_chars: 200000
log_detected_types: true

# Logging-Einstellungen
logging:
  # SQLite-Datenbank für Anfrage-Logs
  database: /pasteguard/data/pasteguard.db
  retention_days: 30
  log_content: false
  log_masked_content: true

# Dashboard-Einstellungen
dashboard:
  enabled: true

In meiner Konfiguration scanne ich alle verfügbaren Arten persönlicher Daten in den Sprachen Englisch und Deutsch. Außerdem aktiviere ich das visualle Dashboard von Pasteguard.

Mit dieser config.yaml und dem erstellten data-Verzeichnis kannst du den Docker-Container starten (Befehl im Verzeichnis ausführen, in dem sich deine ./data und ./config.yaml befinden):

docker run -d --name pasteguard --restart unless-stopped -p 3000:3000 \
  -v ./config.yaml:/pasteguard/config.yaml:ro \
  -v ./data:/pasteguard/data \
  ghcr.io/sgasser/pasteguard:eu

Docker Compose
#

Um Pasteguard mit Docker Compose auszuführen, wäre dies die docker-compose.yml-Datei:

pasteguard:
  image: ghcr.io/sgasser/pasteguard:eu
  container_name: pasteguard
  restart: unless-stopped
  ports:
    - "3001:3000"
  volumes:
    - ./config.yaml:/pasteguard/config.yaml:ro
    - ./data:/pasteguard/data

Starte den Container mit docker compose up -d in deinem Arbeitsverzeichnis (Tipp: docker-compose mit Bindestrich anstelle von docker compose für alte Docker-Versionen).

Nach ein paar Sekunden kannst du das Dashboard unter http://localhost:3000/dashboard besuchen. Wenn du es auf einem Headless-Server ausführst, besuche es unter der IP des Servers - zum Beispiel 192.168.178.5: http://192.168.178.5:3000/dashboard. Du solltest nun das Dashboard sehen:

pasteguard dashboard

Da ich es bereits getestet habe, habe ich schon einige maskierte Anfragen erhalten. In deinem Fall wird das Dashboard noch leer sein. Wenn du das Dashboard nicht erhältst oder Fehlermeldungen auftreten, schau in die Logs deines Containers mit docker logs pasteguard. Ich hatte Probleme bei der Verwendung des Datenverzeichnisses, die ich (noch) nicht beheben konnte – siehe dieses Problem auf Github. Hast du auch dieses Problem? Lösche einfach ./data:/pasteguard/data aus deinem docker run-Befehl / deiner docker-compose.yml. Pasteguard funktioniert auch ohne, aber deine Logs sind nicht persistent und gehen nach einem Neustart des Containers verloren, was nur ein Problem ist, wenn du sie z.B. für Audits benötigst. In meinem Fall sind sie interessant, aber nicht wichtig.

OpenWebUI für die Verwendung von Pasteguard konfigurieren
#

Um Pasteguard in OpenWebUI zu verwenden, musst du nun deine Verbindung in OpenWebUI bearbeiten, um den neuen Pasteguard-Proxy zu verwenden.

  1. Melde dich auf deiner OpenWebUI-Website an.
  2. Öffne das Admin-Panel:
    Admin Panel
  3. Wechsle zu den Einstellungen:
    Einstellungen
  4. Und öffne die Verbindungen aus dem Menü.
  5. Im Verbindungsmenü kannst du nun deine Pasteguard-URL als OpenAI API-Verbindung einfügen. Die URL-Syntax ist http://localhost:3000/openai/v1 oder, wenn du Pasteguard auf einem anderen Server (z.B. mit der IP [IP_ADDRESS]) ausführst: http://192.168.178.5:3000/openai/v1:
    OpenAI Connection
  6. Vergiss nicht, deinen API-Schlüssel für OpenAI in die Verbindung einzugeben.
  7. Und das war’s – deine Chats werden nun an Pasteguard gesendet, welches sie schützt, bevor sie an den KI-Anbieter weitergeleitet werden.

Teste es in OpenWebUI mit einem Beispiel-Chat wie “Meine E-Mail-Adresse ist info@xyz.com und meine Telefonnummer ist +40 111 123456”, und du solltest diese Anfrage im Pasteguard Dashboard als “maskierte Daten…” sehen.

Bonus: OpenRouter mit OpenWebUI/Pasteguard
#

Wenn du Openrouter für den KI-Zugriff verwendest, kannst du es auch problemlos mit Pasteguard und OpenWebUI nutzen, da es die gleiche Syntax wie die OpenAI API verwendet. Ich habe bereits eine Anleitung zu Openrouter mit OpenWebUI geschrieben: Spare Geld beim Zugriff auf alle gängigen KI-Modelle mit Open Router und Open WebUI (Setup-Anleitung)!

In dieser Anleitung wird die Integration von Openrouter erklärt. Grundsätzlich musst du nur eine Funktion für Openrouter in OpenWebUI hinzufügen. Die in dieser Anleitung verwendete Funktion benötigt eine kleine Anpassung, um Pasteguard anstelle der Openrouter-API zu verwenden. Öffne die hinzugefügte Funktion (https://openwebui.com/f/preswest/openrouter_integration_for_openwebui) in OpenWebUI und bearbeite Zeile 307 im Code der Funktion von: url = "https://openrouter.ai/api/v1/chat/completions" zu: url = "http://localhost:3000/openai/v1" oder, wenn Pasteguard auf einem anderen Server läuft (verwende die richtige IP): url = "http://[IP_ADDRESS]:3000/openai/v1".

Bearbeite nun die config.yaml deines Pasteguard-Containers (zuvor gezeigt). Passe in der Konfiguration die base_url an, von:

openai:
  base_url: https://api.openai.com/v1

zu:

openai:
  base_url: https://openrouter.ai/api/v1

Nachdem du die config.yaml bearbeitet und den Container neu gestartet hast, sollte OpenWebUI die Chats nun korrekt weiterleiten. Teste es in OpenWebUI mit einem Beispiel-Chat wie “Meine E-Mail-Adresse ist info@xyz.com und meine Telefonnummer ist +40 111 123456”, und du solltest diese Anfrage im Pasteguard Dashboard als “maskierte Daten…” sehen.

Wenn du auf Probleme stößt, Fragen oder Wünsche nach zusätzlichen Informationen hast, kannst du gerne einen Kommentar unten hinterlassen (keine Anmeldung erforderlich).

torminal
Autor
torminal
IT enthusiast

Verwandte Artikel

Spare Geld beim Zugriff auf alle gängigen KI-Modelle mit Open Router und Open WebUI (Setup-Anleitung)!
657 Wörter·4 min· loading · loading
Ein eigenes Homelab starten – ein kurzer Guide für Anfänger
2141 Wörter·11 min· loading · loading
Hetzner/IONOS: kostenlose SSL-Zertifikate mit certbot
923 Wörter·5 min· loading · loading