Netz und Egress
Labtagon AI OS führt Code aus, den Personen und Agenten geschrieben haben: Tool-Server, ihre Builds, Programme in der Sandbox. Das Netz ist so eingerichtet, dass dieser Code nur erreicht, was er erreichen darf.
Alles verboten, was nicht erlaubt ist
Abschnitt betitelt „Alles verboten, was nicht erlaubt ist“- Der Plattform-Namespace beginnt mit einer Policy, die jede Verbindung verbietet
(
ai-os-default-deny), und öffnet dann nur die Wege, die die Komponenten brauchen. Jeder Pod darf Namen auflösen. - Die Namespaces von Personen und Organisationen, der Build-Namespace und der Sandbox-Namespace bekommen ihre Policies vom Controller, der als einzige Komponente dort schreiben darf. Instanzen haben kein DNS. Sie erreichen das Egress-Gateway, die Ressourcen-API des Controllers und ihre eigenen Begleiter, sonst nichts; ihr Init-Container erreicht den Bundle-Port der Control API.
Die Wege, die das Chart öffnet
Abschnitt betitelt „Die Wege, die das Chart öffnet“| Von | Nach | Wozu |
|---|---|---|
Namespace der Route (routes.fromNamespace) |
Konsole, Control API, MCP-Gateway | Personen, Clients und Anwendungen rufen herein. |
| Control API | MCP-Gateway | Der Chat ruft dort die Tools der Person auf, als ihr Client. |
| MCP-Gateway | Instanzen; Tool-Port der Control API; Calls-Port des Egress-Gateways; Sandboxes | Tool-Aufrufe; die eigenen Tools von AI OS; das Token des Aufrufers für einen Aufruf (ADR 0048); code__run. |
| Instanzen, Build-Jobs, Sandboxes | Egress-Gateway (Proxy-Port) | Ihr einziger Weg hinaus. |
| Instanzen | Egress-Gateway (Launch-Port) | Zugangsdaten, die ein Server als Umgebungsvariablen erklärt, beim Start; nie an Builds. |
| Build-Jobs, Instanzen | Control API (Bundle-Port) | Quelltext und Code-Bundles holen, das Bundle eines Builds abliefern. |
| Control API, MCP-Gateway, Controller, Egress-Gateway | Postgres | Ihr Zustand. |
| Control API, MCP-Gateway | Garage oder S3; Presidio | Dateien; Prüfung auf personenbezogene Daten. |
| Control API | SearXNG, Docling, Gotenberg | Websuche, Dokumente lesen, Office-Vorschauen. |
| Control API, MCP-Gateway | Port 443 | Der OpenID-Connect-Provider, Modell-Provider, Push-Dienste. |
Grenze sie mit networkPolicies.* weiter ein:
ingressFrom: wer Konsole, Control API und Gateway erreichen darf (Standard: der Namespace der Route).keycloakEgress: wo Control API und Gateway den OpenID-Connect-Provider erreichen (Standard: jede Adresse auf 443).modelEgress: wo das Gateway seine Sicherheits- und Entscheidungsmodelle erreicht (Standard: jede Adresse auf 443).pushEgress: weitere Wege hinaus für Browser-Benachrichtigungen.storage.external.egress,storage.offsite.egress: wo ein externes S3 und die externe Kopie sind.
Das Egress-Gateway
Abschnitt betitelt „Das Egress-Gateway“Das Egress-Gateway ist der einzige Weg hinaus für Instanzen, Build-Jobs und Sandboxes, und die einzige Komponente, die gespeicherte Zugangsdaten entschlüsselt.
- Freigegebene Hosts. Ein Tool-Server erreicht nur die Hosts, die seine freigegebene Version nennt. Ein neuer oder weiterer Host wartet auf eine Freigabe.
- API-Regeln (ADR 0054). Ein Server kann je Host erklären, welche Anfragen er schickt: Methoden,
Pfade und worauf sie wirken. Sobald es für einen Host Regeln gibt, wird dort alles andere
abgelehnt, bevor überhaupt Zugangsdaten eingesetzt werden. Ablehnungen gehen als 403 mit der Regel
an den Server zurück, in den Eintrag des Tool-Aufrufs und ins Audit-Log. Die Einstellung Tools,
die geprüften Webverkehr brauchen (
egress.requireApiRules) kann API-Regeln für Server mit Tools verlangen, die etwas ändern, Geld kosten, löschen oder Rechte ändern. - Zugangsdaten auf dem Weg hinaus. Instanzen haben Platzhalter. Das Egress-Gateway öffnet ihr TLS mit der Egress-CA der Plattform, der Instanzen vertrauen, und setzt den echten Schlüssel oder das Token an seiner erklärten Stelle ein, nur zu den Hosts, an die dieser Schlüssel gebunden ist.
- Build-Jobs laden nur von der Einstellung Websites, von denen ein Build laden darf
(
builds.allowHosts, standardmäßig die npm-Registry und PyPI). - Code-Sandboxes erreichen das Internet, wie die Einstellung Wohin Code aus der Sandbox darf
(
code.egress) sagt: standardmäßig die Paketindizes, und andere Websites, sobald die Person sie für die Unterhaltung freigibt; Ports 80 und 443; nie dein eigenes Netz. Jede Verbindung wird protokolliert.
components.egressGateway.allowPrivate lässt Instanzen private Adressen erreichen. Es gibt das für
den lokalen Test-Stack: Schalte es in Produktion nie ein.
Ohne Internet und mit Mirror
Abschnitt betitelt „Ohne Internet und mit Mirror“- Das Chart holt Images von Dritten über
global.mirror, wenn du einen setzt, und Pods ziehen nur per Digest ausallowedRegistriesundglobal.imageRegistry. - Die Modelle von Docling sind in seinem Image; es lädt zur Laufzeit nichts und erreicht nichts.
- Die Control API liest die Schwachstellendaten für Build-Prüfungen von
osv-vulnerabilities.storage.googleapis.com(Einstellungchecks.advisoriesUrl) und gibt jedem Build, was er braucht; Build-Pods bekommen dafür keinen Host. - Modellaufrufe gehen an die Provider, die deine Administratoren einrichten; ein Modell in der Installation gibt es noch nicht (geplant, ADR 0079).
- Auch dieses Handbuch braucht nichts von anderswo: Suchindex, Schriften und Bilder werden mit ihm ausgeliefert.