Anwendungen für die Java-2-Sicherheit die Datei "was.policy" hinzufügen
Wenn eine Anwendung auf Ressourcen zugreift, die weitergehende Berechtigungen erfordern, als in der Standarddatei app.policy gewährt werden, benötigt sie unter Umständen eine Datei was.policy.
Informationen zu diesem Vorgang
Die Standardrichtliniendatei für alle Anwendungen ist in der Datei app.policy angegeben. Diese Datei wird von der Produktsicherheit bereitgestellt, gilt für alle Anwendungen und sollte nicht geändert werden. Fügen Sie der Datei was.policy alle für eine Anwendung erforderlichen neuen Berechtigungen hinzu.
Die von WebSphere Application Server bereitgestellte Datei app.policy befindet sich an der Position Stammverzeichnis_des_Anwendungsservers/config/cells/profile/Profilname/config/Zellenname/nodes/Knotenname/app.policy. Den Inhalt der Datei app.policy sehen Sie im folgenden Beispiel:
// Die folgenden Berechtigungen gelten für alle Komponenten der Anwendung.
grant codeBase "file:${application}" {
// Folgendes ist für JavaMail erforderlich
permission java.io.FilePermission "
${was.install.root}${/}lib${/}activation-impl.jar",
"read";
permission java.io.FilePermission "
${was.install.root}${/}lib${/}mail-impl.jar","read";
};
// Die folgenden Berechtigungen gelten für alle .jar-Dateien des Diensprogramms (nicht die
// EJB-JAR-Dateien) in der Anwendung.
grant codeBase "file:${JARs}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// Die folgenden Berechtigungen gelten für die Connector-Ressourcen in der Anwendung.
grant codeBase "file:${Connector-Komponente}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// Die folgenden Berechtigungen gelten für alle Webmodule (.war-Dateien)
// in der Anwendung.
grant codeBase "file:${Webkomponente}" {
permission java.io.FilePermission "${Pfad.des.WAS-Moduls}${/}-", "read, write";
// "Pfad.des.WAS-Moduls" steht hier für den Pfad, in dem das Webmodul
// installiert ist. Weitere Symbole finden Sie im Abschnitt "Konzepte für
// dynamische Richtlinien".
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
// Die folgenden Berechtigungen gelten für alle EJB-Module der Anwendung.
grant codeBase "file:${EJB-Komponente}" {
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
Wenn für eine Anwendung oder Module einer Anwendung zusätzliche Berechtigungen erforderlich sind, verwenden Sie die Datei was.policy für diese Anwendung. Verwenden Sie beispielsweise codeBase für ${Anwendung}, und fügen Sie erforderliche Berechtigungen hinzu, um der gesamten Anwendung zusätzliche Berechtigungen einzuräumen. In ähnlicher Weise können Sie mit codeBase für ${Webkomponente} und ${EJB-Komponente} allen Webmodulen und EJB-Modulen der Anwendung zusätzliche Berechtigungen gewähren. Sie können, wie im folgenden Beispiel gezeigt, jedem Modul weitere Berechtigungen zuordnen (Datei .war oder Datei .jar).
Dieses Beispiel veranschaulicht, wie zusätzliche Berechtigungen für eine Anwendung in der Datei was.policy hinzugefügt werden:
// Einem Webmodul zusätzliche Berechtigungen erteilen
grant codeBase " file:aWebModule.war" {
permission java.security.SecurityPermission "printIdentity";
};
// Gewähren von zusätzlichen Berechtigungen für ein EJB-Modul
grant codeBase "file:aEJBModule.jar" {
permission java.io.FilePermission "
${user.install.root}${/}bin${/}DefaultDB${/}-", "read,write,delete";
// ${Installationsstammverzeichnis.für.Benutzer} ist hier die Systemeigenschaft,
// deren Wert im Stammverzeichnis_des_Anwendungsservers enthalten ist. };
Wenn Sie eine Datei was.policy für Ihre Anwendung verwenden möchten, führen Sie die folgenden Schritte aus:
Vorgehensweise
Ergebnisse
Beispiel
Dieser Schritt muss ausgeführt werden, damit Anwendungen bei aktivierter Java-2-Sicherheit ordnungsgemäß ausgeführt werden können. Wenn die Datei was.policy nicht erstellt wurde oder nicht die erforderlichen Berechtigungen enthält, greift die Anwendung unter Umständen nicht auf Systemressourcen zu.
Fehlende Berechtigungen äußern sich durch die Ausnahme java.security.AccessControlException. Die fehlende Berechtigung ist in den Ausnahmedaten angegeben. Beispiel:
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
java.security.AccessControlException: access denied (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
grant codeBase "file:Installationsposition_des_Benutzerclients" {
permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};
Die obigen Informationen wurden zur besseren Lesbarkeit auf mehrere Zeilen aufgeteilt. Geben Sie die Berechtigung in einer Zeile ein.