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

KI-gestütztes Programmieren bringt IT-Herausforderungen mit sich

OutSystems-Studie: 62 Prozent der Befragten haben Sicherheits- und Governance-Bedenken bei Softwareentwicklung mit KI-Unterstützung.

1 Tag ago

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

4 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

5 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

5 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

5 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

6 Tagen ago