Java-Sicherheit: Richtlinien und Berechtigungen besser verwalten

Mit Java 2 lässt sich der Standardsicherheits-Manager konfigurieren, was das Erstellen eines eigenen Sicherheits-Managers stark vereinfacht. ZDNet zeigt, worauf zu achten ist, wie der Zugriff-Controller funktioniert, und Zugriffsberechtigungen verwaltet werden.

Vor geraumer Zeit hat ZDNet die Architektur des Java-Sicherheitsmodells vorgestellt. Dieses Mal geht es um weitere Aspekte der Java-Sicherheit: Sicherheits-Manager, Zugriff-Controller und Zugriffsberechtigungen.

Der Sicherheits-Manager (Security-Manager)

Der Sicherheits-Manager ist eine spezielle Klasse, die angibt, ob eine Klasse Zugriff auf eine bestimmte Ressource hat, etwa über direkten Dateizugriff oder eine Netzwerkverbindung. Um eine solche Entscheidung zu treffen, analysiert der Sicherheits-Manager die Quelle der Anfrage. Falls der Zugriff verweigert wird, löst das einen Ausnahmefehler aus (java.lang.SecurityException). Andernfalls wird der Aufruf wie üblich verarbeitet.

Jeder Prozess der JVM (Java Virtual Machine) erlaubt nur genau einen Sicherheits-Manager. Darüber hinaus lässt sich die JVM so konfigurieren, dass ein Austausch des Sicherheits-Managers nach dessen Erstellung nicht mehr zulässig ist. In diesem Fall existiert er ebenso lange wie die JVM selbst. Viele in Browsern integrierte JVMs erstellen einen einzelnen Sicherheits-Manager, ehe das erste Java-Applet geladen wird. Damit kann das Java-Applet eines Hackers den standardmäßigen Sicherheits-Manager eines Browsers nicht ersetzen. Ein unautorisierter Zugriff auf Systemressourcen wird somit vermieden.

In Java 2 ist das Erstellen eines eigenen Sicherheits-Managers wesentlich einfacher als in den bisherigen Versionen von Java. Denn der standardmäßige Sicherheits-Manager lässt sich konfigurieren. Falls er dann Verwendung finden soll, muss es der JVM mit einer Systemeigenschaft über die Befehlszeile mitgeteilt werden. Das geschieht wie folgt:


java -Djava.security.managerMyApplication
java -Djava.security.manager=default MyApplication

Die Klasse java.lang.SecurityManager verkapselt wichtige Features zur Interaktion der Anwendung mit dem Sicherheits-Manager im Gültigkeitsbereich der gerade laufenden JVM. Die Methode java.lang.System.getSecurityManager() liefert eine Referenz auf das aktuelle SecurityManager-Objekt. Falls dieses nicht vorhanden ist, wird ein Null-Wert zurückgegeben. Mit der Methode java.lang.System.setSecurityManager() lässt sich ein eigener Sicherheits-Manager einstellen. Falls die Installation nicht erlaubt ist, wird eine SecurityException ausgelöst.

Die SecurityManager-Klasse enthält viele öffentliche Methoden der Form checkXXX(). Jede Methode überprüft, ob der Zugriff auf eine entsprechende Ressource erlaubt ist. Bei Verweigerung wird wiederum eine SecurityException ausgelöst.

Die Methode checkPermission() kombiniert alle checkXXX()-Methoden. In Java-2-Implementierungen löst jeder Aufruf einer checkXXX()-Methode zugleich einen Aufruf von checkPermission() aus. Die checkPermission()-Methode ruft wiederum dieselbe Methode in der Klasse java.security.AccessController auf.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

ZDNet für mobile Geräte
ZDNet-App für Android herunterladen Lesen Sie ZDNet-Artikel in Google Currents ZDNet-App für iOS

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Java-Sicherheit: Richtlinien und Berechtigungen besser verwalten

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *