Java-Sicherheit: Richtlinien und Berechtigungen besser verwalten

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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Alphabet übertrifft die Erwartungen im ersten Quartal

Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…

2 Tagen ago

Microsoft steigert Umsatz und Gewinn im dritten Fiskalquartal

Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…

2 Tagen ago

Digitalisierung! Aber wie?

Mehr Digitalisierung wird von den Unternehmen gefordert. Für KMU ist die Umsetzung jedoch nicht trivial,…

2 Tagen ago

Meta meldet Gewinnsprung im ersten Quartal

Der Nettoprofi wächst um 117 Prozent. Auch beim Umsatz erzielt die Facebook-Mutter ein deutliches Plus.…

2 Tagen ago

Maximieren Sie Kundenzufriedenheit mit strategischem, kundenorientiertem Marketing

Vom Standpunkt eines Verbrauchers aus betrachtet, stellt sich die Frage: Wie relevant und persönlich sind…

3 Tagen ago

Chatbot-Dienst checkt Nachrichteninhalte aus WhatsApp-Quellen

Scamio analysiert und bewertet die Gefahren und gibt Anwendern Ratschläge für den Umgang mit einer…

3 Tagen ago