Das neue Release von Nubus für Kubernetes stellt die Betriebsstabilität in den Mittelpunkt: Der Provisioning Service liefert Änderungen aus dem Verzeichnisdienst jetzt deutlich schneller an nachgelagerte Systeme aus. Viele Liveness- und Readiness-Probes wurden überarbeitet, damit Kubernetes den Zustand der Komponenten realistischer einschätzen kann. Zudem verhindert das Portal nun, dass Inhalte vor dem Login sichtbar werden. Ergänzt wird das Ganze durch ein umfangreiches Paket an Security-Updates – allen voran ein Upgrade auf Keycloak 26.7.0.
Inhaltsverzeichnis
Performance-Verbesserungen im Provisioning
Der Provisioning Service verteilt Änderungen aus dem Verzeichnisdienst als Events an alle angeschlossenen Konsumenten. Bestätigte ein Konsument ein Event nicht – etwa weil er gerade neu startete oder kurzzeitig nicht erreichbar war –, musste die erneute Zustellung bisher bis zu 30 Sekunden warten. In der Praxis führte das zu spürbaren Verzögerungen, bevor nachgelagerte Dienste den aktuellen Stand des Verzeichnisses sahen.
Mit Nubus 1.21 werden unbestätigte Events innerhalb von etwa einer Sekunde erneut zugestellt. Konsumenten sind nach einer Unterbrechung damit wesentlich schneller wieder auf dem aktuellen Stand. Im Zuge dieser Änderungen wurde außerdem der eingebettete NATS-Message-Broker auf Version 2.14.3 aktualisiert.
Umfassende Security-Updates in Containern und Keycloak
Ein Schwerpunkt dieses Releases liegt auf Sicherheitsupdates. Keycloak wird auf Version 26.7.0 angehoben und schließt damit eine größere Zahl von CVEs. Neben dem Versions-Upgrade wurden im Keycloak-Service zwei funktionale Fehler behoben, die ebenfalls sicherheitsrelevant sind:
- LDAP-Verbindung wurde unnötig neu aufgebaut: Ein Regressionsfehler führte dazu, dass Keycloak die LDAP-Verbindung bei jeder Operation neu aufbaute, statt die bestehende Verbindung wiederzuverwenden. Unter Last verursachte das eine Flut von BIND-Requests gegen den LDAP-Server. Keycloak bindet sich jetzt wieder einmalig und nutzt anschließend die bestehende Verbindung weiter. Den dazu notwendigen Patch hat Univention entwickelt und an das Keycloak-Projekt upstream gegeben.
- Anmeldefehler nach Umbenennung von Benutzernamen: Nach einer Änderung der Groß- und Kleinschreibung eines Benutzernamens – etwa von FOO zu foo – schlug die Anmeldung an Portal und UMC teilweise mit HTTP 401 fehl. Ursache war, dass Keycloak den zwischengespeicherten Wert bis zum Ablauf des internen User-Caches weiterverwendete. Die LDAP User Federation cached importierte Benutzer nun nicht mehr und liest den UID bei jeder Anmeldung direkt aus dem LDAP-Server. Umbenannte Benutzer können sich dadurch sofort wieder anmelden. Die Einstellung greift automatisch mit dem Upgrade.
Darüber hinaus bringt dieses Release ein umfangreiches Paket an Errata-Updates für zahlreiche in den Container-Images enthaltene Bibliotheken und Komponenten mit – darunter kritische und hochkritische CVEs in golang.org/x/crypto, golang.org/x/net, containerd, cryptography sowie mehreren Netty-Modulen. Die vollständige Liste aller geschlossenen CVEs findet sich in den Release Notes.
Diese kontinuierliche Pflege der Container-Basis ist Teil der Strategie, Sicherheitslücken in Upstream-Komponenten so schnell wie möglich zu identifizieren und zu schließen.
Neue und verbesserte Liveness- und Readiness-Probes
Kubernetes verlässt sich auf Liveness- und Readiness-Probes, um zu entscheiden, ob ein Pod Traffic erhalten soll oder neu gestartet werden muss. In mehreren Komponenten von Nubus für Kubernetes waren diese Probes bislang wenig aussagekräftig.
Mit Version 1.21 wurden sie für die Container der UDM REST API (für die API-basierte Administration) und des UMC Servers (für die grafische Administration) deutlich überarbeitet. Die Probes erkennen jetzt auch Laufzeitprobleme innerhalb der Container und geben so zuverlässiger Rückmeldung über den Zustand der Dienste.
Für Betreiber bedeutet das: Kubernetes erkennt gestörte Komponenten zuverlässiger, unterscheidet dabei aber sauber zwischen einem tatsächlich funktionsunfähigen Pod und einer vorübergehenden Störung eines Backends wie LDAP – und vermeidet dadurch unnötige Neustarts gesunder Pods.
Portal: Keine Inhalte mehr vor dem erzwungenen Login
Ist die Option Users are required to login für ein Portal aktiviert, sollen anonyme Besucher ausschließlich die Login-Seite sehen. Bislang zeigte das Portal jedoch für einen kurzen Zeitraum Inhalte, die für anonyme Besucher freigegeben waren, bevor die Weiterleitung zur Anmeldeseite erfolgte. Betroffen waren Kacheln ohne Gruppeneinschränkung, die grundsätzlich für alle Benutzer sichtbar sind und dadurch auch anonymen Besuchern angezeigt wurden.
Mit Nubus 1.21 ist dieses Verhalten korrigiert: Anonyme Besucher werden bei aktivierter Login-Pflicht direkt zur Anmeldeseite weitergeleitet, ohne dass das Portal zuvor Kategorien, Kacheln, Ordner oder Menüeinträge rendert oder ausliefert. Für alle Deployments, die Portal-Inhalte ausschließlich angemeldeten Benutzern zugänglich machen wollen, verbessert dieses Update das Verhalten für Endanwender und schließt eine mögliche Lücke bei der Daten-Exposition.
Bits & Pieces
Neben den genannten Schwerpunkten enthält Nubus 1.21 weitere kleinere Anpassungen. Erwähnenswert ist, dass die Guardian-Komponente inklusive ihrer Container-Images vorerst aus dem Nubus-Umbrella-Chart entfernt wurde. Dieser Schritt bereitet eine kommende Änderung des Backends vor und hat keine Auswirkung auf das Verhalten bestehender Deployments.
Wie immer enthalten die Release Notes alle Details, und die Installation ist im Nubus Operations Manual beschrieben.