Java-Sicherheit: Richtlinien und Berechtigungen besser verwalten

Die AccessController-Klasse ermöglicht eine abgestufte Zugriffskontrolle. Das ist seit Java 1.3 eines der Hauptfeatures des neuen Java-Sicherheitsmodells. Der Sicherheits-Manager wird aus Gründen der Abwärtskompatibilität immer noch in Java unterstützt. Doch inzwischen verwaltet die AccessController-Klasse die Zugriffskontrolle. Deshalb wird die Implementierung des Sicherheits-Managers der AccessController-Klasse in Java 2 nicht empfohlen. So lässt sich beispielsweise die Methode SecurityManager.checkRead(String Dateiname) wie folgt implementieren:


checkPermission(new FilePermission(fileName,"read"));

Und so sieht die entsprechende Methode SecurityManager.checkPermission(Permission Berechtigung) aus:


java.security.AccessController.checkPermission(permission);

Der Zugriff-Controller entscheidet, ob ein Zugriff gewährt wird. Dabei überprüft die Methode checkPermission(), ob der Code privilegiert ausgeführt werden muss. Falls das zutrifft, geht es mit der Methode doPrivileged() weiter. Der Zugriff-Controller liefert daneben eine Referenz auf den aktuellen Zugriffsverwaltungskontext. Das geschieht mit der Methode getContext().

Die AccessControlContext-Klasse verkapselt alle Informationen über Zugriffsparameter in der Anwendung. Sie kann eine oder mehrere ProtectionDomain-Klassen umfassen. Jede Klasse enthält Zugriffsrechte, die sich auf einen bestimmten Codeabschnitt beziehen. Für diesen Zweck stellt die ProtectionDomain-Klasse zwei weitere Klassen zur Verfügung:

  • Die PermissionCollection zum Speichern eines Satzes von Berechtigungen.
  • Die Klasse CodeSource zur Ablage von Informationen über den Speicherort des Codes in Form einer URL.

Die ProtectionDomain-Klasse speichert auch Signaturinformationen in der SignedBy-Klasse, die wiederum ein Array von Zertifikatsobjekten enthält. Code, der aus derselben Quelle stammt und von denselben Personen (also Identitäten) signiert wurde, befindet sich in derselben Protection-Domain. Die checkPermission()-Methode des AccessControlContext-Objekts überprüft die Zugriffsberechtigungen in Bezug auf ProtectionDomain-Objekte, die für den aktuellen Kontext gelten.

Für Aktionen, die Sonderrechte während der Ausführung erfordern, lässt sich die doPrivileged()-Methode einsetzen. Dabei kommt ein vereinfachtes Entscheidungsverfahren zum Einsatz. Es wird angenommen, dass die aufrufende Protection-Domain über die Berechtigung zur Ausführung privilegierter Operationen verfügt. Die Arbeit mit doPrivileged() erfolgt normalerweise über eine PrivilegedAction-Schnittstelle, die keine Ausnahmefehler generiert.


AccessController.doPrivileged(new PrivilegedAction() {
Public Object run() {
// Die privilegierte Aktion kann einen Wert oder "null" zurückgeben.
}
}
);

Der zweite Parameter für die doPrivileged()-Methode ist das AccessControlContext-Objekt. Es verweist auf einen korrekten Kontext, der zur Begrenzung des Zugriffs verwendet werden muss. Der Zugriff-Controller bietet daneben noch die getcontext()-Methode, um den Kontext zu bestimmen und zu verwenden.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

MadMxShell: Hacker verbreiten neue Backdoor per Malvertising

Die Anzeigen richten sich an IT-Teams und Administratoren. Ziel ist der Zugriff auf IT-Systeme.

2 Tagen ago

April-Patches für Windows legen VPN-Verbindungen lahm

Betroffen sind Windows 10 und Windows 11. Laut Microsoft treten unter Umständen VPN-Verbindungsfehler auf. Eine…

2 Tagen ago

AMD steigert Umsatz und Gewinn im ersten Quartal

Server-CPUs und Server-GPUs legen deutlich zu. Das Gaming-Segment schwächelt indes.

2 Tagen ago

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

4 Tagen ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

4 Tagen ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

4 Tagen ago