Zutrittskontrolle – sicher mit MQTT, Java und Virtual Developer

Generative Software GmbH in der BMWK Studie „Smarte Mobilität, smarte Logistik“
3. Februar 2022

Wie sieht ein modernes System zur Zutrittskontrolle für Gebäude und Räumlichkeiten aus? Es soll auf jeden Fall sicher, günstig in der Anschaffung und einfach zu bedienen sein. Gleichzeitig sollen die Wartungskosten überschaubar bleiben. Mit Hilfe von Cloud-Technologien kann an die Punkte „einfache Bedienung“ und „überschaubare Wartungskosten“ ein Haken gemacht werden. Wenn das System dann auch noch effizient entwickelt wurde und die Kosten für die Embedded Geräte (=Endgeräte) im Rahmen bleiben, ist es eine Freude, das System anzuschaffen und damit zu arbeiten. Doch wie ist es um die Sicherheit bestellt? Wie wird gewährleistet, dass keine unbefugten Personen Zutritt bekommen? Können Daten verloren gehen? Und kommt man noch ins Gebäude, wenn es mal keine Verbindung zum Cloud-System gibt?

Dieser Blog-Post zeigt, wie die nubicon GmbH gemeinsam mit der Generative Software GmbH ein sicheres System mit den oben genannten Eigenschaften auf die Beine gestellt hat und betreibt. Es werden speziell der System-Aufbau und das Entwicklungsvorgehen näher betrachtet.

Funktionsweise der Zutrittskontrolle

Die Funktionsweise einer Zutrittskontrolle soll an dieser Stelle nicht bis ins letzte Detail ausgebreitet werden. Für ausführliche Informationen über Hardware, Nutzungsszenarien und weitere Funktionen sei an dieser Stelle auf die nubicon Website verwiesen. Stattdessen wird hier lediglich die Grundfunktion vereinfacht dargestellt: Für eine Person wird für bestimmte Türen eine Zutrittserlaubnis ausgestellt, z.B. in Form einer Chipkarte. Die Daten dieser Berechtigung werden auf die entsprechenden Endgeräte übertragen. Geht die Person nun mit der Chipkarte zu einer solchen Tür, prüft das Endgerät, ob die Person zutrittsberechtigt ist. Wenn dem so ist, wird die Tür geöffnet.

nubicon aus der Vogelperspektive

Aufbau und Eigenschaften des Systems

Das Cloud-System, welches ein verteiltes System darstellt, ist mit Java implementiert, genauer mit Java EE (inzwischen Jakarta EE). Es handelt sich um ein System, das die Nutzung als „Software as a Service“ (SaaS) anbietet. Die Konfiguration der Zutrittskontrolle wird durch die Kunden von nubicon über eine Web-Anwendung durchgeführt. Zur Kommunikation zwischen Endgeräten und der Cloud wird das MQTT-Protokoll verwendet. Der MQTT-Broker von HiveMQ und der OAuth-Server Keycloak sind zentrale Systemkomponenten. Über sie werden die Themen Authentifizierung und Autorisierung behandelt. Im Folgenden werden unterschiedliche Bestandteile und Eigenschaften des Systems kurz angerissen, um ein verständliches Gesamtbild vermitteln zu können.

Das nubicon Cloud-System

Keycloak

Keycloak ist eine Open-Source-Software, die Red Hat 2014 als Implementierung von OpenID Connect veröffentlicht hat. Entwickler können sie einfach und flexibel zur Authentifizierung und Autorisierung für eigene Applikationen verwenden.

MQTT

MQTT ist ein nachrichtenbasiertes Protokoll, das von OASIS und ISO standardisiert worden ist. Es ist der de-facto Standard für die Nachrichtenübermittlung im „Internet of Things“ (IoT).

Für den MQTT-Broker von HiveMQ wurde eine Erweiterung programmiert, um ihn mit den für die Authentifizierung und Autorisierung nötigen Daten zu versorgen. Die Dokumentation auf der HiveMQ-Website hat sich dabei als sehr nützlich und zielführend erwiesen. Es sind für die Extension-Programmierung einige Open-Source-Beispiele verfügbar, anhand derer das Programmiermodell gut verständlich wird.

User Interface

Das User Interface ist als Web-Anwendung implementiert. Der Schwerpunkt liegt hier nicht auf einem ausgefallenen Design, sondern auf der einfachen Bedienung mit einem relativ schlichten Aussehen. Es wird Java Server Faces (jetzt Jakarta Server Faces) zusammen mit der UI-Bibliothek PrimeFaces und dem Premium Layout California verwendet. Diese Komponenten sind schon lange am Markt verfügbar und werden seit vielen Jahren kontinuierlich weiterentwickelt.

Mandantenfähigkeit

Wie üblich bei einem SaaS-System, kann das nubicon-System mehrere Kunden gleichzeitig bedienen. Diese Eigenschaft wird Mandantenfähigkeit genannt. Die Daten der Kunden sind voneinander getrennt. Das gilt für alle Daten, also für die Authentifizierung, die Autorisierung und die Daten der Zutrittskontrolle selbst.

Dasselbe nubicon-System kann vom Kunden auch vor Ort, als On-Premise-Software betrieben werden. In diesem Fall hat der Kunde die volle Kontrolle über die Software und vor allem die Daten, für den Preis von erhöhten Betriebs- und Wartungskosten.

Endgeräte

Auf den Endgeräten des nubicon-Systems kommt eine proprietäre Embedded Software zum Einsatz. Selbst das zugrundeliegende Betriebssystem ist proprietär. Das macht es schwer, die Embedded Software nachzubauen oder ihre Programmierung mit Reverse Engineering zu offenbaren. Außerdem arbeitet die proprietäre Embedded Software durch ihre kleine Größe Ressourcen-schonend, was die Hardwarekosten im Vergleich zu vergleichbaren Produkten gering hält.

Autarke Funktionsweise

Die Endgeräte haben im Normalbetrieb eine dauerhafte TCP/IP-Verbindung. Über diese werden Konfigurationsdaten und Ereignisdaten (z.B. „Tür 1 durch Person X geöffnet“) ausgetauscht. Fällt diese Verbindung aus oder ist das Cloud-System aus anderen Gründen nicht verfügbar, kann ein Endgerät eigenständig weiterhin die Zutrittskontrolle durchführen. Die grundlegende Funktion der Zutrittskontrolle ist also dauerhaft sichergestellt.

Verhinderung von Datenverlust

Das MQTT-Protokoll, mit einer passenden Konfiguration des Brokers und der Endgeräte, sorgt dafür, dass keine Daten verloren gehen. An jeder Stelle der Kommunikation werden MQTT-Messages gepuffert, falls eine Netzwerkverbindung gerade nicht verfügbar ist oder eine Systemkomponente nicht läuft. Diese bereits im MQTT-Protokoll enthaltene Funktion der Pufferung macht das Gesamtsystem robust, ohne dass dafür zusätzlich etwas programmiert werden muss.

Predictive Maintenance

Dadurch, dass alle Endgeräte über MQTT mit der Cloud verbunden sind, wird es für den Plattformbetreiber nubicon möglich, ihre Kunden rechtzeitig bei der Wartung der Systeme zu unterstützen. Wenn ein Endgerät sich nicht mehr verbinden kann, keine Daten mehr liefert oder eine nicht mehr aktuelle Firmware verwendet, weiß nubicon davon, ohne dass sich der Kunde melden muss. Der nubicon-Support kann dann proaktiv den Kunden kontaktieren.

Open-Source und Standards

Das Cloud-System nutzt im Wesentlichen Open-Source-Software die weit verbreitet ist. Diese Software wiederum implementiert Standards: JEE, RDBMS/SQL, MQTT, OpenID Connect. Damit profitiert das System zukünftig von sämtlichen Weiterentwicklungen dieser Software durch die jeweilige Community, was nicht unwesentlich zur Sicherheit des Systems beiträgt. Nebenbei wird es dadurch auch einfacher, Entwickler zu finden, die sich mit der Software und den Standards auskennen. Die erforderliche Langlebigkeit des nubicon-Systems steht damit auf einem stabilen Fundament. Denn ein einmal angeschafftes Zutrittskontrollsystem wird wegen der Investitionskosten nicht mal eben schnell ausgetauscht.

Überwachung des Produktivsystems

Die Verfügbarkeit des Cloud-Systems wird vom Plattformbetreiber rund um die Uhr automatisiert überwacht. Bei einem Ausfall werden verantwortliche Personen benachrichtigt. Als Nebenprodukt dieser Überwachung werden Statistiken zur Verfügbarkeit des Systems bereitgestellt.

Zentrale Protokollierung der Vorgänge

Die einzelnen Komponenten des Cloud-Systems protokollieren Details zu den inneren Abläufen an einer zentralen Stelle. Dadurch werden bei Problemanalysen durch den Plattformbetreiber Ursachen und Zusammenhänge schnell und sicher erkannt.

Entwicklungsvorgehen

Für die Entwicklung des Cloud-Systems werden die Eclipse IDE und das Produkt Virtual Developer der Generative Software GmbH eingesetzt. Es wird agil entwickelt. Virtual Developer – ebenfalls ein Cloud-System – automatisiert die Entwicklung. In Modellen wird festgehalten, WAS die zu entwickelnde Software können soll. Die nachfolgende Codegenerierung bestimmt dann über das WIE der Programmierung.

Virtual Developer gehört zwar mit in die Kategorie der Low-Code Plattformen. Die Entwickler behalten jedoch stets die volle Kontrolle über den generierten Code. Der Code wird an den Stellen manuell erweitert und ergänzt, wo die Automatisierung an ihre Grenzen stößt. Der generierte Code und dessen Ausführung ist dabei nicht vom Produkt Virtual Developer abhängig.

Entwicklung mit Virtual Developer

Durch die Automatisierung ergeben sich unter anderem folgende Vorteile:

  • Es kann mit einem kleinen Team gearbeitet werden.
  • In kurzer Zeit kann viel Funktionalität umgesetzt werden. Der Schwerpunkt liegt auf der individuellen, manuellen Implementierung von Fachlogik.
  • Die Struktur des generierten Codes ist – unabhängig von der Fachlichkeit – stets dieselbe. Dadurch findet sich jeder Entwickler überall schnell zurecht. Eventuelle Sicherheitsrisiken oder Fehler im handgeschriebenen Code lassen sich, zum Beispiel in Code-Reviews, schnell erkennen.

Die Komponenten der entwickelten Software werden in Docker-Images verpackt und kommen in Form von Docker-Containern in der Cloud zur Ausführung. Die Verwendung von dedizierten Test-, Integrations- und Produktions-Systemen führt zu einer zuverlässigen und gleichzeitig flexiblen Produktionsstraße, die sowohl manuelle als auch automatisierte Tests erlaubt. Es gibt also eine erprobte Vorgehensweise, die auch DevOps-Methoden sehr gut unterstützt. Im Gegensatz zu klassischen Low-Code Plattformen wird dieser Teil jedoch nicht „versteckt“, sondern ist von Entwicklern bei Bedarf frei gestaltbar.

Zusammenfassung

In diesem Blog-Post wurden der Aufbau einer sicheren, Mandantenfähigen „Software as a Service“ für eine Zutrittskontroll-Software und das Vorgehen zu deren Entwicklung skizziert. Der System-Aufbau und die Entwicklungsmethodik lassen sich genauso gut für andere fachliche Anforderungen anwenden. Der Einsatz des Automatisierungs-Werkzeugs Virtual Developer eignet sich dabei besonders gut zur Entwicklung neuer Software:

  • Produktentwicklung (Standardsoftware)
    • Modernisierung eines existierenden Produktes, das noch keine Cloud-Fähigkeit besitzt oder noch keine „Software as a Service“-Eigenschaft mit sich bringt
    • Entwicklung eines neuen Produktes, dessen wesentlicher Bestandteil „Software as a Service“ ist oder das Cloud-fähig sein soll
  • Individualsoftware: Digitalisierung betrieblicher Abläufe durch ein modernes System, das auf Cloud-Technologien basiert

Ausblick

Es wird an dieser Stelle weitere Blog-Posts zum Thema „Entwicklung und Betrieb von Cloud-Systemen und Software as a Service“ geben. Darin werden einzelne Punkte dieses Blog-Posts vertieft. Dazu kommen noch weitere Themen, wie die Verwaltung von Mandanten und die Anbindung weiterer Systeme über Webservices, welche in diesem Post nicht erwähnt wurden. Auch über Virtual Developer wird mehr zu erfahren sein.

Die Zusammenarbeit mit der nubicon GmbH endet nicht mit der Zutrittskontrolle. Parallel wird an einem Cloud-System zur Zeiterfassung gearbeitet. Näheres dazu gibt es zukünftig auch an dieser Stelle zu lesen.

Möchten Sie mehr über die Digitalisierungsangebote der Generative Software GmbH erfahren? Dann nehmen Sie bitte Kontakt mit Marcus Munzert auf. Wir beraten Sie gerne.

Marcus Munzert
Marcus Munzert
Marcus Munzert ist geschäftsführender Gesellschafter der Generative Software GmbH. Seit 1998 entwickelt er mit Java und ist ein überzeugter Nutzer von Java/Jakarta EE und OSGi. Er ist seit 2002 auf die modellgetriebene Entwicklung spezialisiert und verfügt über langjährige Erfahrung als Software-Architekt, Berater, Entwickler, Projektleiter, Trainer und Qualitätsmanager.
gdpr-image
Diese Webseite verwendet Cookies, um Ihnen ein angenehmeres Surfen zu ermöglichen.
Mehr erfahren