Skip to content
BotServBotServ
SandboxAgentDockerVMIsolationSicherheit

Sandbox für KI-Agenten: Docker und VM

Sandbox-Umgebungen für KI-Agenten: Docker, VM und Filesystem-Isolation. Wie Du Agenten sicher isolierst.

S

schutzgeist

7 min read
Sandbox für KI-Agenten

Sandbox für KI-Agenten: Docker und VM

Was dieser Artikel behandelt

  • Warum KI-Agenten isoliert werden sollten
  • Was eine Sandbox im Kontext von Agenten bedeutet
  • Wie Docker als leichtgewichtige Sandbox funktioniert
  • Wann eine Virtuelle Maschine sinnvoller ist
  • Wie Filesystem- und Netzwerk-Isolation funktionieren

Einleitung

KI-Agenten sind spannend, weil sie selbstständig Aufgaben erledigen. Sie greifen auf Tools zu, lesen Dateien, führen Befehle aus und sprechen mit anderen APIs. Doch genau diese Freiheit macht sie gefährlich. Ein Agent, der unkontrolliert auf Dein Betriebssystem zugreift, kann großen Schaden anrichten.

Eine Sandbox ist ein begrenzter Bereich, in dem der Agent arbeitet. Was innerhalb der Sandbox passiert, bleibt dort. Dateien, Prozesse und Netzwerkverbindungen werden vom Rest des Systems abgeschottet. In diesem Artikel zeigen wir, wie Du mit Docker und Virtuellen Maschinen eine solche Umgebung baust.

Wenn Du Dich mit den Grundlagen von KI-Agenten beschäftigst, lohnt sich ein Blick auf Tool Calling und die Einführung in den sicheren Betrieb.

Warum Sandbox für KI-Agenten wichtig ist

Agenten haben oft unbegrenzte Möglichkeiten, wenn man sie lässt. Ein kleiner Fehler im Prompt oder ein missverstandener Befehl kann dazu führen, dass der Agent Dateien löscht, Passwörter ausliest oder Kontakte im Internet verschickt.

Eine Sandbox verhindert, dass ein Fehler im Agenten das gesamte System betrifft. Sie bietet:

  • Einschränkung des Dateisystemzugriffs
  • Begrenzung der Netzwerkmöglichkeiten
  • Kontrolle über erlaubte Prozesse und Ressourcen
  • Einfache Wiederherstellung durch Zurücksetzen der Sandbox
  • Trennung zwischen Agent und sensiblen Benutzerdaten

Sandboxes sind kein Ersatz für menschliche Freigaben oder Guardrails, aber ein wichtiges technisches Fundament. Sie sollten immer zusammen gedacht werden.

Sandbox kurz erklärt

Eine Sandbox ist wie ein abgeschotteter Spielplatz. Der Agent darf darin arbeiten, aber er kann nicht einfach durch die Tür in den Rest des Hauses laufen. Technisch wird das durch Betriebssystemfeatures wie Namespaces, Cgroups, Capabilities und virtuelle Netzwerke erreicht.

Namespaces isolieren Prozesse. Cgroups begrenzen CPU, RAM und Festplatte. Capabilities schränken ein, welche Root-Rechte ein Prozess hat. Ein virtuelles Netzwerk erlaubt es, den Datenverkehr zu filtern.

Docker nutzt all diese Linux-Kernel-Features, um Container zu bauen. Eine Virtuelle Maschine geht einen Schritt weiter und startet ein eigenes Betriebssystem. Beide Ansätze haben ihre Berechtigung, je nach Bedrohungslage und benötigter Isolation.

Für wen ist dieser Artikel gedacht?

Der Artikel richtet sich an Einsteiger, die KI-Agenten lokal oder auf einem Server betreiben möchten. Du solltest grundlegend mit dem Terminal vertraut sein. Erfahrung mit Docker ist hilfreich, aber nicht zwingend.

Der Text ist für Dich, wenn Du:

  • Einen KI-Agenten mit Werkzeugen wie Bash oder Python ausführen willst
  • Verhindern möchtest, dass ein Agent ungewollt Dateien verändert
  • Docker oder Virtuelle Maschinen für die Isolation nutzen willst
  • Verstehen möchtest, welche Isolationsebene zu Deinem Szenario passt

Wichtige Begriffe

BegriffErklärung
SandboxEine abgeschottete Umgebung, in der ein Prozess eingeschränkt ausgeführt wird.
ContainerEine leichtgewichtige Isolationsumgebung auf Basis des gleichen Kernels.
DockerEine Plattform, um Container zu bauen und auszuführen.
VMVirtuelle Maschine. Ein eigenes Betriebssystem in einer simulierten Hardware.
NamespaceEin Kernel-Feature, das Prozesse voneinander trennt.
CgroupEin Kernel-Feature, das Ressourcen wie RAM und CPU begrenzt.
CapabilitiesFeingranulare Root-Rechte, die ein Prozess besitzen darf.
VolumeEin eingebundener Ordner im Container, der Daten mit dem Host teilt.
ImageEine schreibgeschützte Vorlage für einen Container.
LayerEin Dateisystemlevel eines Container-Images.

Docker als Sandbox

Docker ist der schnellste Weg, um einen KI-Agenten zu isolieren. Ein Container startet innerhalb von Sekunden und benötigt wenig Overhead. Du legst fest, welche Dateien, Netzwerke und Rechte der Container erhält.

Ein typischer Befehl für eine starke Sandbox sieht so aus:

docker run -d \
  --name kisandbox \
  --read-only \
  --tmpfs /tmp \
  --cap-drop all \
  --cap-add chown \
  --network none \
  mein-agent-image

Dieser Befehl macht mehrere Dinge:

  • --read-only stellt das Root-Dateisystem schreibgeschützt.
  • --tmpfs /tmp erlaubt temporäre Schreibvorgänge nur im RAM.
  • --cap-drop all entfernt alle Sonderrechte.
  • --cap-add chown fügt gezielt ein einzelnes Recht hinzu.
  • --network none deaktiviert den Netzwerkzugriff.

Für Dateien, die der Agent bearbeiten darf, nutzt Du Volumes. Achte darauf, nur bestimmte Ordner freizugeben und keine sensiblen Pfade wie /etc oder /home zu mounten. Mehr Grundlagen zu Docker findest Du in unserem Artikel zu Docker Grundlagen.

Virtuelle Maschinen

Eine Virtuelle Maschine ist der stärkste Sandbox-Typ. Sie emuliert komplette Hardware und startet ein eigenes Betriebssystem. Selbst wenn ein Angreifer oder fehlerhafter Agent in die VM eindringt, ist das Host-System deutlich besser geschützt als bei einem Container.

VMs eignen sich besonders, wenn Du:

  • Hochriskante Aufgaben testen möchtest
  • Verschiedene Betriebssysteme benötigst
  • Eine klare Grenze zwischen Host und Agent wünschst
  • Snapshots vor und nach Ausführungen machen willst

Der Nachteil: VMs benötigen mehr Ressourcen. Jede VM führt ein eigenes Betriebssystem mit. Für Heimserver mit begrenztem RAM kann das schnell knapp werden. Tools wie Proxmox, virt-manager oder VirtualBox vereinfachen das Management.

Wenn Du einen eigenen Server aufsetzen möchtest, findest Du Hilfe in unserem Artikel zu Ubuntu.

Filesystem-Isolation

Die Filesystem-Isolation ist besonders wichtig für KI-Agenten, die mit Tools auf Dateien zugreifen. Standardmäßig kann ein Container auf Dateien innerhalb seines eigenen Dateisystems zugreifen. Wenn Du Volumes mountest, öffnest Du gezielt Türen.

Beste Praxis ist, Read-Only-Volumes zu verwenden, wo nur Lesen erlaubt ist:

docker run -d \
  -v /home/benutzer/daten:/data:ro \
  mein-agent-image

Das :ro steht für Read-Only. Der Agent kann die Dateien lesen, aber nicht verändern. Für Ausgaben definierst Du ein separates Schreibverzeichnis, das der Agent schreiben, aber nicht wieder lesen darf, falls das Sinn macht.

Auch das Arbeiten als Nicht-Root-User im Container ist empfehlenswert. Füge in Deinem Dockerfile einen eigenen User hinzu:

RUN useradd -m agent
USER agent

So kann ein Prozess, der die Container-Grenze überwindet, nicht direkt als Root auf dem Host agieren.

Netzwerk-Isolation

Netzwerk-Isolation schützt davor, dass ein Agent Daten ins Internet sendet oder interne Dienste abfragt, die nicht vorgesehen sind. Docker bietet mehrere Netzwerkmodi:

  • bridge: Standard. Der Container hat begrenzten Netzwerkzugriff.
  • none: Kein Netzwerk.
  • host: Container teilt den Netzwerkstack des Hosts. Vermeide diesen Modus.
  • container:NAME: Container teilt Netzwerk eines anderen Containers.

Für Agenten, die gar nicht online müssen, ist none oft die beste Wahl. Wenn Zugriff auf einen lokalen API-Endpoint gebraucht wird, legst Du ein bridge-Netzwerk an und erlaubst gezielt einzelne Ports:

docker network create agent-net
docker run -d --network agent-net --name ollama ollama/ollama
docker run -d --network agent-net -e OLLAMA_HOST=http://ollama:11434 mein-agent-image

So spricht der Agent nur mit Ollama, nicht mit dem restlichen Netzwerk oder dem Internet.

Typische Stolpersteine

  1. Container als Root laufen lassen: Der Prozess im Container sollte ein eigener Nicht-Root-User sein. Root im Container ist kein echtes Root, aber dennoch riskant.
  2. Zu viele Capabilities: --privileged oder ALL Capabilities geben Deinem Agent weit mehr Rechte als nötig. Entferne alles und füge nur gezielt hinzu.
  3. Host-Netzwerk verwenden: --network host nimmt die Isolation zurück. Vermeide diesen Modus bei Agenten.
  4. Wichtige Verzeichnisse mounten: Das Mounten von /, /etc oder /home gibt dem Container direkten Zugriff auf sensible Host-Dateien.
  5. Keine Ressourcenlimits: Ohne Cgroup-Limits kann ein fehlerhafter Agent den gesamten RAM oder CPU verbrauchen.
  6. Schwache Images aus dem Internet: Nicht alle Images sind sicher. Nutze nur vertrauenswürdige Quellen und scane Images auf Schwachstellen.
  7. Snapshots vergessen: Bei einer VM solltest Du vor wichtigen Durchläufen einen Snapshot erstellen. Dann kannst Du schnell zurücksetzen.

Hardware, Kosten und Sicherheit

Docker-Container laufen auf fast jeder Hardware, die Linux unterstützt. Ein einfacher Heimserver oder ein VPS reichen für die meisten Agenten aus. Für VMs brauchst Du mehr RAM und Festplattenplatz, weil jedes Gastsystem separat arbeitet.

Kosten entstehen hauptsächlich durch Hardware, nicht durch Software. Docker und Virtualisierungstools wie Proxmox oder virt-manager sind kostenlos. Cloud-VMs werden nach Ressourcen berechnet.

Sicherheitstechnisch gilt: Tiefe Isolation schützt besser, kostet aber mehr Ressourcen. Container sind für die meisten Heim-Setups ausreichend. VMs sind sinnvoll, wenn Du hochsensible oder starken Code ausführst. Kombiniere Sandboxes immer mit menschlichen Freigaben und Guardrails, um menschliche Fehler abzufangen.

FAQ

Was ist eine Sandbox?

Eine Sandbox ist eine begrenzte Ausführungsumgebung, in der ein Prozess nur auf definierte Ressourcen zugreifen kann.

Was ist der Unterschied zwischen Docker und einer VM?

Docker teilt den Kernel des Hosts und ist leichtgewichtig. Eine VM führt ein eigenes Betriebssystem und ist isolierter, aber ressourcenintensiver.

Sollte ich einen Agenten als Root starten?

Nein. Ein Agentenprozess sollte immer als eigener Nicht-Root-User laufen, sowohl im Container als auch in der VM.

Was sind Capabilities?

Capabilities sind feingranulare Sonderrechte unter Linux. Sie legen fest, welche Aktionen ein Prozess ausführen darf, auch wenn er Root ist.

Was ist ein Read-Only-Volume?

Ein Read-Only-Volume erlaubt einem Container das Lesen, aber nicht das Schreiben von Daten auf dem Host.

Brauche ich Netzwerk für meinen Agenten?

Nur, wenn Dein Agent externe APIs oder Modelle erreichen muss. Für rein lokale Aufgaben kannst Du das Netzwerk deaktivieren.

Was bedeutet --network none?

Diese Docker-Option schaltet den Netzwerkzugriff des Containers komplett aus.

Sind Container sicher genug für KI-Agenten?

Für die meisten Heim- und Entwicklungsumgebungen ja. Für hochsensible oder starken Code solltest Du eine VM in Betracht ziehen.

Was ist ein Snapshot?

Ein Snapshot ist ein Speicherabbild eines Zustands, auf den Du später zurückwechseln kannst. VMs bieten diese Funktion meist an.

Kann ich mehrere Agenten in einem Container laufen lassen?

Ja, aber es ist empfehlenswert, jeden Agenten in einem eigenen Container zu isolieren. So verhindert Du gegenseitige Beeinflussung.

Was ist ein Dockerfile?

Ein Dockerfile ist eine Textdatei mit Anweisungen, aus denen Docker ein Image baut.

Wie wichtig sind Ressourcenlimits?

Sehr wichtig. Ohne Limits kann ein fehlerhafter Agent den Host lahmlegen. Cgroups und Docker-Flags helfen dabei.

Quellen

  1. Docker Dokumentation - https://docs.docker.com/
  2. Docker Security Cheat Sheet - https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html
  3. Linux Capabilities - https://man7.org/linux/man-pages/man7/capabilities.7.html
  4. NixOS Wiki: Namespaces und Cgroups - https://wiki.nixos.org/wiki/Namespaces
Zurück zum KI Blog
Share:

Ähnliche Beiträge