FabAccess

Zugangs- und Maschinenkontrollsystem für offene Werstätten und FabLabs.


Was ist FabAccess?

Wir entwickeln ein föderierbares Verwaltungssystem für FabLabs, Makerspaces und Hackerspaces. Mit FabAccess soll der Zugriff auf Maschinen verwaltet werden, um so Unfälle zu vermeiden.

FabAccess besitzt dabei drei Hauptfunktionalitäten:

FabAccess ist in eine Client-Server Struktur aufgeteilt. Unsere Server Anwendung hat den Codenamen Diflouroborane(BFFH) und ist in Rust geschrieben. Unsere Client Anwendung hat den Codenamen Borepin und ist in C# mit Xamarin geschrieben.

Zur Kommunikation zwischen den Anwendungen verwenden wir Cap’n Proto.

Die Anforderungen für FabAccess wurden mit Mitgliedern des Verbands offener Werkstätten und mit Betreibern von FabLabs an Hochschulen entwickelt. Das daraus entstandene Lastenheft findet sich in unserem GitLab Projekt dazu.

Maschinenverwaltung

Das Prinzip von FabAcces ist es, Maschinen ein- und auszuschalten über den Stromanschluss. So sind Maschinen im Normalfall stromlos und damit ungefährlich. Erst wenn Nutzer an der Maschine sind, die für die sichere Bedienung befähigt und eingewiesen sind, wird die Maschine mit dem Stromnetz verbunden.

Wir wollen dabei die Idee von Neil Gershenfeld, dass Nutzer selbstständig den Umgang mit Maschinen lernen, mit den Anforderungen von offenen Werkstätten kombinieren, dass Nutzer sich dabei nicht verletzten. Somit benötigen Nutzer für gefährliche Maschinen eine Einweisung, dieses Prinzip wird dann im Berechtigungssystem abgebildet.

Die Abnahme von Maschinen, die eine Reinigung nach Gebrauch benötigen, wird dabei auch unterstützt. So wird die Nutzbarkeit von Maschinen für den nächsten Nutzer sichergestellt und der Verschleiß verringert.

Wir unterstützen auch das Reservieren von Maschinen, wollen aber keine Zeitplanung für die Nutzer übernehmen. Daher ist der Kompromiss, den wir umsetzten, dass Nutzer Maschine nur beispielsweise eine halbe Stunde reservieren können, um so den Weg zum FabLab sich keine Sorgen darüber machenmüssen, dass jemand anderes in der Zeit die Maschine für 5 Stunden verwendet.

Berechtigungssystem

Das Berechtigungssystem ermöglicht es, die Zugriffe auf Maschinen nur für bestimmt Nutzer zu erlauben. Somit kann darüber die Einweisungen für gefährliche Maschinen abgebildet werden, es sind aber durch die hohe Konfigurierbarkeit des RBAC Systems (Rollen basiertes Zugriffssystem) komplexere Abbildungen möglich.

Auch die Abbildungen von einfachen Maschinen, die keine Einweisung benötigen, ist möglich.

Nutzerverwaltung

Die Nutzerverwaltung soll es ermöglichen, den Überblick über die Nutzer im Space nicht zu verlieren. FabAccess ist als SmartCard System gedacht, somit erhält jeder Nutzer eine NXP Mifare DESFire (FabCard) Karte, um sich an der Maschinen zu authentifizieren.

Um den administrativen Aufwand zu verringern, können sich Nutzer selbstständig anmelden und können dann nach der Prüfung der Daten durch den Betreiber freigeschaltet werden. Die Schließung eines Nutzungsvertrages wird dabei abgebildet.

Mit der FabCard können Nutzer sich sowohl an den Maschinen authentifizieren als auch an unserem Client Borepin.

Wie schaltet Ihr die Maschinen?

Für den Anfang trennen wir Maschinen vom Strom, somit können wir kostengünstige Lösungen wie den Shelly Plug oder jedes mit Tasmota flashbares System unterstützten. Die Erweiterung auf andere Möglichkeiten unterstützten wir dabei durch unser modulares System.

Da die Kommunikation mit der FabCard etwas Schwieriger ist, stellen wir unseren eigenen FabReader als Open Hardware Projekt zur Verfügung sowie die dazu passenden Software. Unseren FabReader findest du als Projekt bei GitLab.

Was bedeutet Föderation bei FabAccess?

FabAccess ist als selbstständiges selbstgehostetes System für jeden Space gedacht, so können die Spaces selber über das komplette System verfügen und es eigenständig bis in kleinste Detail konfigurieren. Um die Zusammenarbeit von Spaces zu ermöglichen und zu fördern, können die einzelnen FabAccess Instanzen (BFFH) mit einander föderieren. Dadurch können Nutzer zwischen diesen Spaces mit verringertem Verwaltungsaufwand hin und her wechseln. Wir wollen so die Spezialisierung von Spaces ermöglichen, ohne das Nutzer die Vorteile eines vollausgestatten Spaces verlieren, auch kleineren Spaces wird so der Einstieg vereinfacht.

Föderation ist dabei als aktive Zusammenarbeit erdacht, also müssen sich die Betreiber dieser Spaces dazu entscheiden zu föderieren. Jeder Space kann so den Partner für die Föderation selber wählen.

Wie wird Föderation umgesetzt

Wir haben Föderation in 3 Stufen eingeteilt:

  1. Teilen von Nutzern
  2. Teilen von Berechtigungen
  3. Teilen von Abrechnungen

Diese Stufen bauen aufeinander auf, so können sich Betreiber einfacher an eine Föderation wagen und die Vorteile mit jeder Stufe erfahren.

Um das Ganze besser zu erklären, haben wir ein Beispiel vorbereitet. Du betreibst den Space A und willst mit dem Space B föderieren.

Teilen von Nutzern

Unter dem Teilen von Nutzern verstehen wir, dass Nutzer von Space B bei dir im Space A sich mit der FabCard aus Space B authentifizieren können. Um bei dir im Space A die Maschinen nutzen zu dürfen, müssen die Nutzer aus Space B sich bei dir anmelden und deinen Nutzungsvertrag ausfüllen. Da die Nutzer aus Space B FabAccess schon kennen, werden Sie sich selbstständig registrieren und du musst nur nach einer kurzen Prüfung der Daten diese Nutzer akzeptieren. Dabei erhältst du immer die Kontaktdaten deiner Nutzer und bist nicht auf die Nutzerdaten des anderen Spaces angewiesen, sollte bei dir mal ein Unfall passieren. Die Authentifizierung der Nutzer übernimmt dann die BFFH Instanz des Space B. Um nicht immer mit jedem Space sofort aktiv föderieren zu müssen, ermöglichen wir es dir auch das Teilen von Nutzern für unbekannte Spaces zu erlauben. So kannst du nach einer aktiven Föderation mit dem anderen Space gleich die Nutzerdaten übernehmen, um so nicht noch mal alle Nutzer anzupassen. Bei einer Föderation sind nämlich die IDs der Nutzer in den beiden Spaces gleich und ermöglichen den nächsten Schritt in der Föderation.

Teilen von Berechtigungen

Nach dem das Teilen von Nutzern erfolgt ist und du sich mit dem Betreiber des Space B gut verstehst, stellt ihr beide fest, dass ihr einige gleiche Maschinen in euren Spaces besitzt. Da du dem Betreiber von Space B auch bei den Einweisungen von den Maschinen vertraust, könnt ihr in der 2. Stufe auch Berechtigungen teilen. Somit müssen Nutzer von Space B, die bei dir die gleiche Maschine wie im Space B verwenden wollen, von dir nicht noch mal eingewiesen werden. Das spart Zeit bei dir und bei den Nutzern von Space B. Du behältst dabei die Kontrolle, welche Gruppen von Space B bei dir im Space A welche Maschinen nutzen können, somit kannst du dir sicher sein, dass die Nutzer wirklich eingewiesen sind.

(Teilen von Abrechnungen)

Das Teilen von Abrechnungen stellt die letzte Stufe der Föderierbarkeit da. Da wir uns bei dem Thema noch nicht vollständig sicher sind, inwieweit das umgesetzt werden kann, steht es noch in Klammern. Die Idee zu der Föderation ist, dass Nutzer von Space B, die bei dir eine kostenpflichtige Maschine nutzen, ihre Abrechnung von Space B erhalten und nicht von dir. Das Geld der Nutzer von Space B kannst du dann mit dem Betreiber von Space B zum Beispiel monatlich verrechnen. Der Vorteil für den Nutzer liegt dabei darin, dass sie nicht bei jedem Space ihre Abrechnung machen müssen, sondern gesammelt bezahlen können.

Wie sicher ist Föderation?

Föderation benötigt Vertrauen jedoch möchten wir nicht, dass dieses Vertrauen einfach missbraucht werden kann. Daher ist der oben beschriebene Ansatz, dass du jeden deiner Nutzer auch kennst.

Um die Authentifizierung sicher zu gestalten, haben wir uns für die etwas teureren DESFire Karten entschieden. Diese haben den Vorteil, dass sie ein Ende-zu-Ende Verfahren unterstützen. Somit musst du nicht die Schlüssel deiner Karten an jeden Reader in einem anderen Space verteilen, sondern deine BFFH Instanz kommuniziert verschlüsselt direkt mit der Karte. Auf den FabCards befinden sich auch keine Informationen der Nutzer, sondern nur der DNS-Eintrag deines Space sowie eine pseudonymisierte Nutzer ID. Somit wollen wir die technische Seite der Föderation absichern und eine Zusammenarbeit möglichst einfach gestalten.

Ist FabAccess erweiterbar?

Ja, du kannst FabAccess um deine eigenen Bedürfnisse erweitern. Wenn du mehr Steuerung deiner Nutzer benötigst, dann kannst du zum Beispiel über Python ein Skript schreiben, dass unsere Cap’n Proto API von BFFH anspricht und so Gruppen zuteilt. Um die Anbindung von Abrechnungssystemen zu ermöglichen, bietet BFFH ein Audit Log an das dir in Echtzeit die aktuellen Aktionen in deinem Space ausgibt. So kannst du zum Beispiel Nutzungszeiten für Maschinen sekundengenau abrechnen. Oder wenn du ein Grafana Dashboard für einen Infomonitor brauchst, ist dass auch darüber möglich.

Sollten dir die von uns unterstützten Initiatoren oder Aktoren nicht ausreichen, dann kannst du deine eigenen Module einbinden, dafür musst du nur unsere Initiatoren und Aktoren API ansprechen.

Um den Einstieg in die erweitere Konfigurierbarkeit zu ermöglichen, stellen für alle unsere APIs eine Python Bibliothek zur Verfügung.

Das ist der Plan

Wir haben für die Umsetzung von FabAccess eine Förderung erhalten. So können wir uns voll auf die Entwicklung von FabAccess konzentrieren. Das Projekt FabAccess wird unter dem Förderkennzeichen 01IS20S41 im Förderprogramm Prototype Fund vom Bundesministerium für Bildung und Forschung (BMBF) gefördert.

Hast du Rückfragen zu FabAccess, dann kontaktier uns doch einfach. Die Möglichkeiten dazu findest du unter Kontakt.