Berechtigungen in der Datei "app.policy"
Die Java™ 2-Sicherheit bestimmt anhand mehrerer Richtliniendateien die Berechtigung für jedes Java-Programm. Alle in den folgenden Dateien enthaltenen Berechtigungen werden auf die WebSphere Application Server-Unternehmensanwendung angewendet. Die Gesamtheit dieser Dateien bestimmt, welche Berechtigungen erteilt werden.
- Alle Richtliniendateien, die in den policy.url.*-Eigenschaften in der Datei java.security angegeben sind.
- Die app.policy-Dateien, die von Konfigurationsservices und Dateireplikationsservices verwaltet werden.
- Die Datei server.policy.
- Die Datei java.policy.
- Die Datei was.policy der Anwendung.
- Die Berechtigungsspezifikation der Datei ra.xml.
- Die gemeinsam genutzte Bibliothek, die der Datei library.policy entspricht.
In diesen Dateien vorgenommene Änderungen werden auf anderen Knoten in der Zelle von WebSphere Application Server Network Deployment repliziert.
grant codeBase "file:${application}" {
permission java.lang.RuntimePermission "stopThread";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
};
Geben Sie zum Extrahieren der Richtliniendatei an einer Eingabeaufforderung den folgenden Befehl mit den für Ihre Umgebung richtigen Variablenwerten in einer Zeile ein:
![[Windows]](../images/windows.gif)
wsadmin> set obj [$AdminConfig extract cells/Zellenname/node/Knotenname/app.policy c:\temp\test\app.policy]
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
wsadmin> set obj [$AdminConfig extract cells/Zellenname/node/Knotenname/app.policy /temp/test/app.policy]
Bearbeiten Sie die extrahierte Datei app.policy mit dem Richtlinientool. Weitere Informationen finden Sie im Artikel Mit PolicyTool Richtliniendateien für die Java-2-Sicherheit verwenden. Änderungen an der Datei app.policy sind lokal für den Knoten.
Geben Sie zum Überprüfen der Richtliniendatei an einer Eingabeaufforderung den folgenden Befehl mit den für Ihre Umgebung richtigen Variablenwerten in einer Zeile ein:
![[Windows]](../images/windows.gif)
wsadmin> $AdminConfig checkin cells/Zellenname/nodes/Knotenname/app.policy c:\temp\test\app.policy $obj
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
wsadmin> $AdminConfig checkin cells/Zellenname/nodes/Knotenname/app.policy temp/test/app.policy $obj
Symbol | Bedeutung |
---|---|
file:${application} | Die Berechtigungen gelten für alle Ressourcen in der Anwendung. |
file:${jars} | Die Berechtigungen gelten für alle JAR-Dateien (Java Archive) von Dienstprogrammen in der Anwendung. |
file:${ejbComponent} | Die Berechtigungen gelten für die Enterprise-Bean-Ressourcen in der Anwendung. |
file:${webComponent} | Die Berechtigungen gelten für Webressourcen in der Anwendung. |
file:${connectorComponent} | Die Berechtigungen gelten für die Connector-Ressourcen in der Anwendung und für eigenständige Connector-Ressourcen. |
Symbol | Bedeutung |
---|---|
${app.installed.path} | Pfad, in dem die Anwendung installiert ist. |
${was.module.path} | Pfad, in dem das Modul installiert ist. |
${current.cell.name} | Aktueller Zellenname |
${current.node.name} | Aktueller Knotenname |
${current.server.name} | Aktueller Servername |
Die von
WebSphere Application Server bereitgestellte Datei app.policy
befindet sich im Verzeichnis Profilstammverzeichnis/config/cells/Zellenname/nodes/Knotenname/app.policy
und enthält die folgenden Standardberechtigungen:
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";
};
grant codeBase "file:${JARs}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${Connector-Komponente}" {
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${Webkomponente}" {
permission java.io.FilePermission "${was.module.path}", "read";
permission java.io.FilePermission "${was.module.path}${/}-", "read, write"
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${EJB-Komponente}" {
permission java.lang.RuntimePermission "queuePrintJob";
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.net.SocketPermission "*", "connect";
permission java.util.PropertyPermission "*", "read";
permission java.io.FilePermission "*", "read,write";
};
![[Windows]](../images/windows.gif)
java.security.AccessControlException: access denied
(java.io.FilePermission
C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar read)
Wenn ein Java-Programm diese Ausnahme empfängt und das Hinzufügen dieser Berechtigung vertretbar ist, fügen Sie eine Berechtigung zur Datei server.policy hinzu. Beispiel:
![[Windows]](../images/windows.gif)
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar", "read"; };
![[IBM i]](../images/iseries.gif)
grant codeBase "file:user_client_installed_location" {
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. Sie müssen die Berechtigung jedoch in einer Zeile eingeben.
Bevor Sie sich entschließen, eine Berechtigung hinzuzufügen, lesen Sie den Artikel "AccessControlException".
Starten Sie alle Unternehmensanwendungen von WebSphere Application Server erneut, um sicherzustellen, dass die aktualisierte Datei app.policy verwendet wird.