Job-Verarbeitung

Das Sicherheitskonzept von CRIMSy sieht vor, dass ein Knoten in einer demilitarisierten Zone betrieben wird. Ein Knoten kann daher nicht selbständig Verbindungen zu internen Ressourcen aufbauen. In bestimmten Fällen wird jedoch Zugriff auf interne Ressourcen benötigt:
  • Druckjobs für Barcode-Drucker, die aufgrund besonderer Anforderungen an Treiber und Label-Formaten nicht über den gewöhnlichen Weg als PDF-Datei abgewickelt werden können
  • Compute-Jobs für aufwendige Berechnungen (z.B. Quantenchemie, künstliche Intelligenz, …), die die Ressourcen des lokalen Knotens hinsichtlich Rechenaufwand oder Speicherbedarf sprengen

CRIMSy sieht in diesem Falle vor, dass ein zusätzlicher Dienst (CRIMSy Agency) regelmäßig beim Knoten anfragt, ob neue Aufträge vorhanden sind. CRIMSy stellt hierzu eine REST-Schnittstelle bereit, die sich jedoch in einem Punkt von den übrigen im System verwendeten REST-Schnittstellen unterscheidet. Normalerweise werden die REST-Schnittstellen über die CRIMSy-PKI abgesichert, d.h. die Gültigkeit der Zugriffe wird mittels der privaten und öffentlichen Schlüssel der Knoten überprüft. Im Kontext der Jobverarbeitung verbietet sich die Benutzung des privaten Schlüssels eines Knotens, da dies der unkontrollierte Verbreitung des privaten Schlüssels Vorschub leisten würde. Die Nutzung zusätzlicher Schlüsselpaare wiederum würde massiv die Komplexität des Vorhabens erhöhen. Da davon ausgegangen wird, dass der Dienst CRIMSy Agency in einer Umgebung mit moderatem Risiko betrieben wird, findet die Absicherung dieser Schnittstelle daher über ein shared secret statt. In CRIMSy kann das shared secret im Menü Systemeinstellungen konfiguriert werden.

CRIMSy Agency selbst ist sehr einfach gehalten, um eine Anpassung an örtliche Gegebenheiten vornehmen zu können. Vorgesehen ist beispielsweise die Anbindung an CUPS für Druckaufträge. Das Programm soll als Dämon-Prozess ausgeführt werden und fragt den Server in regelmäßigen Abständen ab (derzeit alle 5 Sekunden). Für jeden Job wird ein Shellskript aufgerufen. Das Shellskript erhält den Jobtyp (PRINT oder COMPUTE), dem Namen der Queue und die Job-Id als Kommandozeilenparameter. Die eigentlichen Daten werden dem Shellskript über Standardeingabe übermittelt. Die Ergebnisse bzw. Ausgaben eines Jobs sollen vom Shellskripts über Standardausgabe an CRIMSy Agency übermittelt werden. Die eigentliche Anpassung an lokale Gegebenheiten findet im Shellskript statt. Die mitgelieferte Vorlage kann nach belieben angepasst und modifiziert werden.