Sichere Java-Programme mit "Fabric"
Wissenschaftler der US-amerikanischen Cornell-Universität haben eine auf Java aufsetzende Sprache für verteilte Anwendungen entwickelt, die den Zugriff auf einzelne Objekte kontrolliert.
- Christian Kirsch
Um die Sicherheit von Anwendungen zu verbessern, die in verteilten Systemen laufen, haben sechs Wissenschaftler der Cornell-Universität die Sprache Fabric (PDF) entwickelt. Sie erweitert das ebenfalls aus Cornell stammende Jif um Transaktionen, Aufrufe von Funktionen auf entfernten Rechnern und das dauerhafte Speichern von Objekten.
(Bild: cornell.edu)
Das zentrale Konzept von Fabric und Jif sind "Principals", die Sicherheitsanforderungen formulieren und durchsetzen. Verknüpfungen und Operatoren ermöglichen das Modellieren von Benutzern, Prozessen, Gruppen oder anwendungsspezifischen Einheiten mit jeweils eigenen Sicherheitsanforderungen. Principals können Lese- oder Schreibrechte für Objekte haben, die in sogenannten Labels formuliert sind: int {Alice Bob} x; legt fest, dass der Principal Alice die Variable x kontrolliert und Bob auf ihren Wert zugreifen darf. Die Regel {Alice←Bob} erlaubt Bob, den Wert von x zu ändern. Beim Übersetzen prüft der Compiler zunächst, ob der Quellcode die Zugriffsrechte der Objekte respektiert. Anschließend erzeugt er Java-Code, den er dem üblichen Java-Compiler zur Weiterverarbeitung übergibt.
An der Ausführung eines Fabric-Programms sind mehrere Prozesse beteiligt: Storage-Knoten verwalten die benötigten Objekte, Worker-Knoten führen die Anwendung aus und Verteilungsknoten ("Dissemination Nodes") stellen zur Entlastung von Storage-Knoten Kopien von Objekten bereit. Diese Prozesse können auf derselben Maschine laufen, in der Regel innerhalb einer JVM, oder im Netz verteilt sein.
Fabric steht jetzt als Version 0.1 zum Herunterladen (Archiv) zur Verfügung. Es benötigt Java 1.6 und das Apache-Buildwerkzeug Ant. Den Autoren zufolge sollte es auf den gängigen Unix-Varianten laufen. (ck)