{"id":154,"date":"2026-08-14T07:52:51","date_gmt":"2026-08-14T07:52:51","guid":{"rendered":"https:\/\/linuxfokus.de\/?p=154"},"modified":"2026-08-14T07:52:51","modified_gmt":"2026-08-14T07:52:51","slug":"microvms-mit-podman-krun-ai-coding-agenten-auf-fedora-sicher-sandboxen","status":"publish","type":"post","link":"https:\/\/linuxfokus.de\/microvms-mit-podman-krun-ai-coding-agenten-auf-fedora-sicher-sandboxen\/","title":{"rendered":"MicroVMs mit podman\/krun: AI-Coding\u2011Agenten auf Fedora sicher sandboxen"},"content":{"rendered":"<p>AI-Coding\u2011Agenten wie Claude Code oder Codex werden zunehmend leistungsf\u00e4higer. Das steigert die Produktivit\u00e4t, macht aber blindes Zulassen aller Aktionen gef\u00e4hrlich: Fehlgeleitete Shell\u2011Befehle oder gezielte Abfragen k\u00f6nnten Ihre Umgebung erkunden oder externe Systeme erreichen. Statt Agenten direkt auf dem Arbeitsrechner laufen zu lassen, empfiehlt sich eine zus\u00e4tzliche Sandboxing\u2011Schicht. Eine praxistaugliche L\u00f6sung unter Fedora sind MicroVMs, betrieben \u00fcber podman mit dem krun\u2011Runtime.<\/p>\n<h2>Warum MicroVMs statt nur Container?<\/h2>\n<p>Container isolieren Prozesse in Namespaces, teilen aber den Kernel mit dem Host. In der Praxis haben Kernel\u2011L\u00fccken mehrfach zu Privilegienerh\u00f6hungen gef\u00fchrt; CVE\u20112026\u201139861 ist ein aktuelles Beispiel, das zeigt, dass ein gemeinsamer Kernel ein Angriffsvektor bleibt. MicroVMs dagegen starten einen eigenen Kernel pro Instanz und laufen hinter einem Hypervisor. Sie sind deutlich schneller als klassische Voll\u2011VMs (Startzeit \u00fcblicherweise im Bereich von Hunderten Millisekunden), bieten aber nicht alle Funktionen einer vollst\u00e4ndigen VM. F\u00fcr das sichere Ausf\u00fchren ungetesteter Agenten bilden sie einen guten Kompromiss zwischen Performance und Isolation.<\/p>\n<h2>Komponenten und Voraussetzungen auf Fedora<\/h2>\n<p>Fedora liefert podman und das krun\u2011Runtime in den Repositorien, wodurch sich MicroVMs mit einer Container\u2011\u00e4hnlichen Arbeitsweise betreiben lassen. Zu installieren ist zun\u00e4chst podman\u2011compose, wenn Sie Compose\u2011Workflows nutzen m\u00f6chten:<\/p>\n<pre><code>sudo dnf install podman-compose<\/code><\/pre>\n<p>Zum interaktiven Test einer MicroVM kann folgender Befehl dienen:<\/p>\n<pre><code>podman run --runtime=krun --rm -it fedora:44 \/bin\/bash<\/code><\/pre>\n<p>Wichtiges Detail: libkrun sollte Version &gt;= 1.8 installiert sein, weil \u00e4ltere Varianten bekannte Bedienungsfehler haben (z. B. Probleme beim Dr\u00fccken der Eingabetaste innerhalb interaktiver Sessions). Au\u00dferdem bootet eine krun\u2011MicroVM standardm\u00e4\u00dfig als root, die Dockerfile\u2011USER\u2011Anweisung wird ignoriert; ein expliziter Benutzerwechsel im Entrypoint ist daher empfehlenswert.<\/p>\n<h2>Praxisbeispiel: Agent f\u00fcr ein Python\u2011Projekt (kurzer \u00dcberblick)<\/h2>\n<p>Als konkreten Anwendungsfall zeigt das Beispiel, wie man einen AI\u2011Agenten (hier: Claude Code) in einer MicroVM betreibt, die an ein lokales Python\u2011Projekt gebunden ist. Der Workflow verwendet ein Container\u2011Image, in dem ein unprivilegierter Nutzer angelegt wird, und ein Compose\u2011Setup, das das Projektverzeichnis in die MicroVM mountet. Die wesentlichen Schritte sind:<\/p>\n<ul>\n<li>Dockerfile: Basis fedora:44, Gruppe\/Benutzer mit HOST_UID\/HOST_GID anlegen, Verzeichnisse f\u00fcr virtuelle Umgebungen (\/venv) und Agent\u2011Konfiguration (\/home\/appuser\/.claude) erstellen und passende Eigentumsrechte setzen.<\/li>\n<li>Installieren von Hilfswerkzeugen (z. B. uv als Paketmanager f\u00fcr projektlokale Python\u2011Installationen) sowie die Agent\u2011Binaries\/Installationsskripte in einer Schicht, die nicht bei jedem Build neu laufen muss.<\/li>\n<li>Ein Entrypoint\u2011Skript, das beim Start notwendige Synchronisationen durchf\u00fchrt (uv sync) und anschlie\u00dfend in den unprivilegierten Nutzer wechselt, bevor der eigentliche Agent gestartet wird.<\/li>\n<\/ul>\n<h3>Wichtige Compose\u2011Konfigurationen<\/h3>\n<p>Der Compose\u2011Dienst f\u00fcr den Agenten enth\u00e4lt einige krun\u2011spezifische Annotationen und Volumen\u2011Einstellungen. Zu den relevanten Punkten geh\u00f6ren:<\/p>\n<ul>\n<li>Annotations, um krun als Runtime auszuw\u00e4hlen und Hardware\u2011Limits anzugeben, etwa <code>run.oci.handler: krun<\/code>, <code>krun.ram_mib<\/code> und <code>krun.cpus<\/code>.<\/li>\n<li>user und userns_mode: durch Setzen von <code>user: \"${HOST_UID}:${HOST_GID}\"<\/code> und <code>userns_mode: keep-id<\/code> sorgt podman f\u00fcr UID\/GID\u2011Translation, sodass Dateien in der MicroVM die richtigen Eigent\u00fcmer auf dem Host haben.<\/li>\n<li>Volume\u2011Flags wie <code>:U,z<\/code>: <code>U<\/code> veranlasst rekursives Chown, <code>z<\/code> sorgt f\u00fcr ein gemeinsames SELinux\u2011Label, sonst kann SELinux den Zugriff der MicroVM auf die Dateien verhindern.<\/li>\n<li>Umgebungsvariablen, z. B. <code>CLAUDE_CONFIG_DIR<\/code>, <code>UV_LINK_MODE<\/code>, <code>UV_PROJECT_ENVIRONMENT<\/code> und <code>UV_PYTHON_INSTALL_DIR<\/code>, strukturieren, wo Daten persistiert und wie uv arbeitet.<\/li>\n<\/ul>\n<h2>Build und Start<\/h2>\n<p>Ein typischer Ablauf zur Erzeugung und Ausf\u00fchrung sieht so aus (aus dem Projektverzeichnis):<\/p>\n<pre><code>HOST_UID=$(id -u) HOST_GID=$(id -g) podman-compose -f .agent-sandbox\/docker-compose.yaml build<\/code><\/pre>\n<p>F\u00fcr persistente Agent\u2011Konfigurationen legen Sie ggf. ein Volume an:<\/p>\n<pre><code>podman volume create claude-config<\/code><\/pre>\n<p>Und zum Starten in einer interaktiven Session:<\/p>\n<pre><code>HOST_UID=$(id -u) HOST_GID=$(id -g) podman-compose -f .agent-sandbox\/docker-compose.yaml run --rm claude<\/code><\/pre>\n<p>In der MicroVM k\u00f6nnen Sie mit <code>uname -a<\/code> pr\u00fcfen, dass dort ein anderer Kernel l\u00e4uft als auf dem Host \u2013 ein sichtbares Indiz, dass es sich nicht um einen normalen Container handelt.<\/p>\n<h2>Automatisierung: Ein kleines Hilfswerkzeug<\/h2>\n<p>Damit Sie das Setup nicht f\u00fcr jedes Projekt manuell nachziehen m\u00fcssen, l\u00e4sst sich ein kurzes Skript erstellen, das in drei Aktionen arbeitet: init (Projektdatenstruktur anlegen), build (Image bauen) und run (Container\/MicroVM starten). Dieses Skript installiert ein Kommando wie <code>sbx<\/code>, das die oben beschriebenen Schritte zusammenfasst und Routinearbeiten automatisiert.<\/p>\n<h2>Sicherheits\u2011Hinweis: MicroVM ist kein vollst\u00e4ndiger Schutz<\/h2>\n<p>MicroVMs erh\u00f6hen die H\u00fcrde f\u00fcr Angriffe deutlich, sie sind aber keine undurchdringliche Grenze. Die Sicherheitsgarantien h\u00e4ngen vom Hypervisor, libkrun\u2011Code und der gesamten Konfiguration ab. Wer hochriskante oder potenziell b\u00f6sartige Software ausf\u00fchren muss, sollte \u00fcber eine klassische Voll\u2011VM oder eine isolierte Cloud\u2011VM nachdenken. F\u00fcr viele Use\u2011Cases, insbesondere beim Entwickeln und Testen von AI\u2011Agenten lokal, sind MicroVMs jedoch ein pragmatischer Kompromiss: schneller als volle VMs, sicherer als reine Container.<\/p>\n<h2>Fazit<\/h2>\n<p>MicroVMs mit podman + krun bieten auf Fedora eine praktikable M\u00f6glichkeit, AI\u2011Coding\u2011Agenten in einer st\u00e4rkeren Sandbox zu betreiben. Sie kombinieren die gewohnte Container\u2011Workflow\u2011Erfahrung mit einem eigenen Kernel pro Instanz und damit einer verbesserten Isolation gegen\u00fcber Kernel\u2011basierten Angriffen. Achten Sie auf ausreichende Ressourcen (RAM\/CPU\u2011Annotationen), eine aktuelle libkrun\u2011Version (&gt;= 1.8) und eine durchdachte Benutzer\/Volume\u2011Konfiguration mit UID\/GID\u2011Translation und SELinux\u2011Labeln. Und: MicroVMs sind eine sinnvolle Erh\u00f6hung der Sicherheit \u2013 aber nicht die ultimative Garantie gegen alle Angriffsformen.<\/p>\n<aside class=\"lfem-source-box\"><strong>Quelle:<\/strong> <a href=\"https:\/\/fedoramagazine.org\/sandbox-ai-coding-agents-with-microvms-on-fedora-linux\/\" target=\"_blank\" rel=\"noopener noreferrer external\">Fedora Magazine<\/a><br \/><small>LinuxFokus hat den verlinkten Originalartikel als Recherchegrundlage ausgewertet und daraus einen eigenst\u00e4ndigen deutschsprachigen Beitrag erstellt. F\u00fcr vollst\u00e4ndige Prim\u00e4rdetails gilt die Originalquelle.<\/small><\/aside>\n","protected":false},"excerpt":{"rendered":"<p>AI-Coding\u2011Agenten k\u00f6nnen viel Arbeit abnehmen \u2013 bergen aber auch Risiken, wenn sie uneingeschr\u00e4nkt Befehle auf dem Host ausf\u00fchren. Auf Fedora lassen sich Agenten mit MicroVMs isolieren: schnelle, leichtgewichtige VMs, die mit podman und dem krun\u2011Runtime genutzt werden. Ein Praxisbeispiel zeigt Aufbau, notwendige Einstellungen und Sicherheitsgrenzen.<\/p>\n","protected":false},"author":1,"featured_media":155,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_front_end_style_editor":"no","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[2],"tags":[55,57,14,53,54,22,56],"class_list":["post-154","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux-news","tag-ai-agenten","tag-containervirtualisierung","tag-fedora","tag-krun","tag-microvm","tag-podman","tag-sicherheit","entry","has-media"],"_links":{"self":[{"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/posts\/154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/comments?post=154"}],"version-history":[{"count":0,"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/posts\/154\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/media\/155"}],"wp:attachment":[{"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/media?parent=154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/categories?post=154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxfokus.de\/wp-json\/wp\/v2\/tags?post=154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}