Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


15.1.6

Das Java-2-Sicherheitsmodell


[1.2]Das hier beschriebene Sicherheitsmodell wurde mit dem JDK 1.2 neu eingeführt. Es wird nicht von den in den Browsern integrierten Java-VMs (d. h. Microsoft Virtual Machine bzw. Netscape Communicator 4.x) unterstützt, daher muss für die Nutzung dieses Modells in Applets auf das Java-Plug-in zurückgegriffen werden. Wie in Abschnitt 15.1.5 beschrieben, kann es auch für Applikationen verwendet werden, wenn ein SecurityManager aktiviert wird.

Das Modell beruht auf so genannten Policies. Eine Policy besteht aus Regeln, die jeweils Berechtigungen gewähren. Alles, was nicht ausdrücklich in der Policy gestattet wird, ist nicht erlaubt. Eine Regel besteht aus folgenden Teilen:

Herkunftsort und Berechtigung sind stets ein fester Bestandteil einer Regel. Signatur und Identität sind dagegen optional.

Standardmäßig werden Policies in Dateien gespeichert. Das JRE versucht beim Start eines Programms zwei Policy-Dateien auszulesen: Insgesamt werden die Einträge beider Policy-Dateien »addiert«, d. h., effektiv hat das Programm jede Berechtigung, die in einer der genannten Dateien steht. Wenn keine dieser Dateien vorhanden ist, kommt eine Default-Policy zur Anwendung, die das Auslesen der System-Properties sowie das Binden von Sockets an nicht privilegierte Ports (d. h. höher als 1023) gestattet.

Abbildung 15.2: Das policytool
Abbildung 15.2

Die Policy-Dateien werden im ASCII-Format in einer vorgegebenen Syntax gespeichert. Sie können prinzipiell mit jedem beliebigen ASCII-Editor verändert werden. Einfacher ist die Definition von Berechtigungen jedoch mit dem policytool. Das policytool ist ein Programm, das im JRE enthalten ist und das Editieren von Policy-Dateien erlaubt.

Ein Screenshot des Policy-Tools ist in Abbildung 15.2 zu sehen. Über den Menüpunkt »Datei¦Öffnen« kann man eine bereits bestehende Policy-Datei in das policytool laden. Im Startfenster werden zunächst Regeln nach Herkunftsorten und Signierern angezeigt. Falls eine Regel an einen Benutzer gebunden ist, wird auch dieser angezeigt (so wie in der letzten Regel der Abbildung). Wählt man einen Eintrag aus und betätigt den Button »Richtlinieneintrag bearbeiten«, wird ein Fenster angezeigt, in dem alle Berechtigungen detailliert aufgelistet werden.

Abbildung 15.3: Policy-Einträge
Abbildung 15.3

Dieses Fenster ist in Abbildung 15.3 dargestellt. In den oberen zwei Textfeldern gibt man an, für welche Codebase bzw. für welchen Signierer die angezeigten Berechtigungen gelten. Die Codebase wird durch eine URL, der Signierer durch den Alias in der lokalen Public-Key-Datenbank angegeben. Lässt man diese Textfelder leer, so gelten die Berechtigungen für alle Herkunftsorte. Es ist dadurch auch möglich, spezielle Policies nach Signierer und Herkunftsort zu vergeben.

Optional kann die Berechtigung auf eine oder mehrere Identitäten (»Principals«) beschränkt werden. Eine Identität kann beispielsweise eine Benutzer-ID des Betriebssystems sein. Beim Hinzufügen eines Principals ist dessen Typ (z. B. »NTUserPrincipal«) sowie dessen Name anzugeben.

Um eine neue Berechtigung (Permission) hinzuzufügen, muss der Button »Berechtigung hinzufügen« betätigt werden. Beim Anlegen eines neuen Rechts müssen drei Parameter eingestellt werden: Neben der einzelnen Vergabe von Berechtigungen kann auch die java.security.AllPermission erteilt werden, die alle Berechtigungen einschließt, die vergeben werden können.

Sobald die Einstellungen mit dem policytool vorgenommen und gespeichert wurden, sind die neuen Berechtigungen automatisch aktiv. Folgender Ausschnitt zeigt einen Teil die Standard-Policy-Datei des JRE:
// Standard extensions get all permissions by default

grant codeBase "file:${java.home}/lib/ext/" {
  permission java.security.AllPermission;
};

// default permissions granted to all domains

grant { 
  permission java.lang.RuntimePermission "stopThread";

  permission java.net.SocketPermission "localhost:1024-", "listen";

  permission java.util.PropertyPermission "java.version", "read";
  permission java.util.PropertyPermission "java.vendor", "read";
        
  ...Berechtigungen für weitere System-Properties
};
Ein Beispiel für einen benutzerbezogenen Eintrag ist dem Abschnitt 15.2.4 zu entnehmen.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.