Zum Inhalt springen

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.

  • 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.
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 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.

  • Das Chart holt Images von Dritten über global.mirror, wenn du einen setzt, und Pods ziehen nur per Digest aus allowedRegistries und global.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 (Einstellung checks.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.