Java Security Architecture #

Java-Programme laufen normalerweise in einer "Sandbox" ab. D.h. sie haben keinen kompletten Zugriff auf den Computer, auf dem sie laufen, sondern können nur innerhalb der Java-VM arbeiten. Der Zugriff auf lokale Ressourcen wie Dateien, Netzwerk, etc. geschieht über einen Security-Manager. Dieser ist normalerweise entsprechend der Sicherheitsanforderungen konfiguriert. Das heisst praktisch, daß Programme, die direkt (z.B. von der Konsole) gestartet werden, alles dürfen und daß Programme, die aus dem Web heraus gestartet werden (Applets oder JavaWebStart) erstmal nichts dürfen. Es gibt aber auch Umgebungen z.B. für Webanwendungen, wo mehrere Applikationen in einer VM laufen und jede eine eigene Security Policy haben kann.

Einige Dinge, die verboten sind, wie das Schreiben von beliebigen Dateien, ist auf den ersten Blick einsichtig. Über andere Dinge muss man etwas nachdenken. So ist z.B. ein Teil der Java Reflection API "verboten", weil man sonst zu viel über private Klassen erfahren könnte. Das macht bei Installationen z.B. in einem Webserver (TomcatUnterDebian) sehr wohl Sinn, ist bei einem JavaWebStart-Programm aber etwas übertrieben.

Warum? #

Warum muss man sich nun mit diesem Thema beschäftigen? Wer Programme entwickeln will, die er an andere weitergeben will, hat mit JavaWebStart ein sehr luxuriöses Werkzeug zur Verfügung. Auch Applets in Webseiten sind für den einen oder anderen Zweck sehr interessant. Ein normaler Benutzer möchte aber vielleicht kein Programm starten, das ihn vor dem Start warnt, das die Security Policy dafür ausser Kraft gesetzt werden muss. Nun muss man also wissen, was man in so einem Programm darf und was nicht. Ich selber habe ein Programm geschrieben, das eigentlich (dachte ich bisher) nichts böses tut. Dennoch kann ich es nicht ohne Freigabe der Permissions per Webstart starten. Dies habe ich nun vor, zu ändern. Aus diesem Grunde möchte ich mich mit der Konfiguration der Security Architektur aber insbesondere auch damit beschäftigen, wie man programmiert, ohne diese zu verletzen. Die dabei gewonnenen Erkenntnisse möchte ich auf dieser Seite auch anderen zur Verfügung stellen.

Ein paar Links zur Erklärung des Themas:


Kategorien
KategorieJava