Wie wirkt sich die Container-Isolierung auf den Ressourcenzugriff von Home Assistant aus?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Die Container-Isolierung begrenzt den Ressourcenzugriff von Home Assistant, indem sie explizite Mounts, Gerätemappings, Netzwerkpfade, Benutzer und Capabilities über die Host-Grenze hinweg erfordert.

Ein Container kann einen Pfad namens /config sehen, ohne Kenntnis von allen anderen Host-Verzeichnissen zu haben, und gewöhnliche IP-Geräte erreichen, während die Erkennung von Multicast-Diensten fehlschlägt. USB-Funkmodule, Bluetooth-Adapter, serielle Schnittstellen, Ports mit niedrigen Nummern und hosteigene Dateien bringen zusätzliche Berechtigungsprüfungen mit sich. Die Isolierung verbessert daher zwar die Abschottung, aber jede benötigte Ressource muss eine bewusst konfigurierte Grenze überschreiten.

Mounts legen fest, welche persistenten Dateien innerhalb des Containers vorhanden sind

Ein Container erhält eine eigene Dateisystemansicht. Bind-Mounts und benannte Volumes stellen ausgewählte Host-Daten bereit. Daher kann ein scheinbar gültiger Containerpfad auf ein leeres Volume, einen schreibgeschützten Mount oder ein anderes Host-Verzeichnis verweisen als vom Betreiber erwartet.

Eine Analyse von Docker-Bereitstellungen verbindet das Speicherlayout mit dem Backup-Design und macht das Speichermapping des Containers zum ersten Zugriffsvertrag, der überprüft werden sollte, bevor das Verhalten der Home-Assistant-Konfiguration oder der Datenbank diagnostiziert wird.

Die Persistenz hängt von der eingehängten Quelle ab, nicht vom beschreibbaren Erscheinungsbild der Container-Schicht. Das Neuerstellen eines Containers kann nicht eingehängte Änderungen verwerfen, selbst wenn sie beim vorherigen Lauf funktioniert haben.

Benutzer-IDs und Berechtigungsbits gelten weiterhin über den Mount hinweg

Der Host-Kernel prüft Eigentümer und Berechtigungen für eingehängte Dateien. Ein numerischer Container-Benutzer kann sich vom Kontonamen auf dem Host unterscheiden, was zu Lesefehlern, von Root angelegten Ersatzdateien oder einer Datenbank führen kann, die in einem Image geöffnet werden kann, in einem anderen jedoch nicht.

Eine Analyse der Eigentümerschaft erklärt, warum übereinstimmende Namen nicht ausreichen und warum das Mapping numerischer UID- und GID-Werte von numerischen UID- und GID-Werten abhängt, die über die Grenze hinweg identisch sind.

Die Ausführung mit erweiterten Rechten kann die Abweichung verschleiern, erweitert die Befugnisse jedoch weit über den Dateizugriff hinaus. Die sicherere Lösung besteht darin, die Eigentümerschaft abzugleichen und nur die Verzeichnisse und Vorgänge freizugeben, die Home Assistant tatsächlich benötigt.

Der Netzwerkmodus steuert Erkennung und Erreichbarkeit

Bridge-Netzwerke geben dem Container eine isolierte Schnittstelle und übersetzte Ports. Der Host-Netzwerkmodus verwendet den Netzwerk-Stack des Hosts gemeinsam. Das kann Multicast-Erkennung, Broadcast-Protokolle und Rückrufverbindungen vereinfachen, verringert jedoch die Netzwerkisolation und kann Portkonflikte verursachen.

Eine Diskussion zu Home Assistant über das Vermeiden des Host-Modus zeigt, dass die Erkennungsgrenze des Containers in manchen Umgebungen durch explizites Routing oder Relays rekonstruiert werden kann, auch wenn sich nicht jedes Erkennungsprotokoll gleich verhält.

Wenn die direkte Steuerung per IP funktioniert, die automatische Erkennung jedoch fehlschlägt, sind Multicast- oder Broadcast-Grenzen wahrscheinlich. Wenn beides fehlschlägt, sind Routing, Firewall, DNS oder die Adressauswahl wahrscheinlichere Ursachen als die Erkennung allein.

Geräte und Kernel-Funktionen benötigen eine explizite Delegierung

Serielle USB-Funkmodule, Bluetooth, GPIO, Hardwarebeschleunigung und Netzwerkoperationen auf niedriger Ebene sind auf Gerätedateien des Hosts, Kernel-Treiber, Gruppen und Capabilities angewiesen. Das Mapping eines Gerätepfads ist erforderlich, reicht aber möglicherweise nicht aus, wenn Berechtigungen oder die Cgroup-Richtlinie den Zugriff verweigern.

Ein Bericht über die Bereitstellung mit Kubernetes zeigt, wie die Orchestrierung zusätzliche Speicher-, Netzwerk- und Gerätebeschränkungen einführt. Das veranschaulicht, dass die mehrschichtigen Isolierungsbeschränkungen mit jeder zusätzlichen Isolationsebene zunehmen.

Dieser Mechanismus endet bei Hardware- und Treiberfehlern. Wenn der Host selbst das Funkmodul oder Gerät nicht verwenden kann, verschleiert eine Änderung der Container-Privilegien nur den ursprünglichen Fehler. Überprüfen Sie den Host-Zugriff, bevor Sie die Befugnisse des Containers erweitern.

Prüfen Sie den Zugriff vom Host bis zum Prozess

Listen Sie jeden benötigten Pfad, Port, Multicast-Bereich, jedes Gerät, jede UID, GID, Capability und Abhängigkeit auf. Testen Sie für jedes Element zuerst den Zugriff auf dem Host, prüfen Sie anschließend das Container-Mapping und testen Sie danach mit der tatsächlichen Identität des Container-Prozesses.

Der Vergleich zwischen Host und Bridge stellt Host- und Bridge-Netzwerke für Home Assistant gegenüber und definiert damit die Abwägungsgrenze für den Netzwerkteil der Prüfung.

Behalten Sie die kleinste Berechtigungsmenge bei, mit der sich Tests zum Lesen und Schreiben der Konfiguration, zur Persistenz der Datenbank, zur Steuerung lokaler Geräte, zur Erkennung sowie zum Neustart und zur Backup-Wiederherstellung bestehen lassen. Fügen Sie einen Mount, ein Gerät, eine Gruppe oder eine Capability nur hinzu, wenn der vorherige Test nachweist, dass genau diese Grenze fehlt.

Tech- & KI-Zentrum

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.