Datei "was.policy" für Java-2-Sicherheit konfigurieren
Sie müssen die Datei was.policy aktualisieren, wenn die Anwendung auf bestimmte Ressourcen zugreifen muss.
Vorbereitende Schritte
Profilstammverzeichnis/config/cells/Zellenname/applications/
Name_der_EAR-Datei/deployments/Anwendungsname/META-INF/was.policy
Die Beschreibung der Java-2-Sicherheitsrichtliniendateien enthält eine Liste verfügbarer Richtliniendateien, die von WebSphere Application Server Version 6.1 unterstützt werden.
Alle
in den folgenden Dateien enthaltenen Berechtigungen werden auf die Unternehmensanwendung von WebSphere Application Server angewendet:
- 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.
Änderungen, die an diesen Dateien vorgenommen wurden, werden auf anderen Knoten in der Zelle repliziert.
Symbol | Definition |
---|---|
file:${application} | Die Berechtigungen gelten für alle Ressourcen, die in der Anwendung verwendet werden. |
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. |
In WebSphere Application Server müssen
Anwendungen, die Threads bearbeiten, die entsprechenden, in der Datei
was.policy oder app.policy angegebenen Threadberechtigungen
besitzen. Sind die Threadberechtigungen nicht angegeben, kann die Anwendung keine
Threads bearbeiten, und WebSphere Application Server löst eine Ausnahme des Typs
java.security.AccessControlException aus.
Wenn Sie die Berechtigungen der Datei was.policy für eine bestimmte Anwendung
hinzufügen, ist es nicht erforderlich, WebSphere Application Server erneut zu starten. Ein Administrator
muss den folgenden Code der Datei was.policy bzw.
app.policy für eine Anwendung hinzufügen, um Threads bearbeiten zu können:
grant codeBase "file:${application}" {
permission java.lang.RuntimePermission "stopThread";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
};
Ein Administrator kann die Threadberechtigungen der Datei app.policy
hinzufügen, die Änderung der Berechtigung macht jedoch einen Neustart von WebSphere
Application Server erforderlich.Wichtig: Das Schlüsselwort "Signed By" und das JAAS-Principalschlüsselwort
(Java Authentication and Authorization Service)
werden in der Datei was.policy nicht unterstützt.
Das Schlüsselwort Signed By wird jedoch in den folgenden Richtliniendateien
unterstützt: java.policy, server.policy und client.policy. Das
JAAS-Principalschlüsselwort wird in einer JAAS-Richtliniendatei unterstützt, wenn es von der
JVM-Systemeigenschaft java.security.auth.policy
angegeben wird. Sie können die
Richtliniendateien für Berechtigung in der Datei java.security.auth.policy statisch
mit auth.policy.url.n=URL setzen. URL steht hier für die Adresse der
Berechtigungsrichtlinie.
Für eine differenziertere Angabe kann der Modulname angegeben werden. Beispiel:
grant codeBase "file:DefaultWebApplication.war" {
permission java.security.SecurityPermission "printIdentity";
};
grant codeBase "file:IncCMP11.jar" {
permission java.io.FilePermission
"${user.install.root}${/}bin${/}DefaultDB${/}-",
"read,write,delete";
};
Symbol | Definition |
---|---|
${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 |
Informationen zu diesem Vorgang
Tipp: Syntaxfehler in den Richtliniendateien verhindern, dass der Anwendungsserver gestartet wird. Gehen Sie beim Bearbeiten der
Richtliniendateien sehr sorgfältig vor.
Vorgehensweise
Ergebnisse
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)
![[z/OS]](../images/ngzos.gif)
![[IBM i]](../images/iseries.gif)
Anmerkung: Die folgenden Beispiele sind nur zur besseren Lesbarkeit auf mehrere Zeilen aufgeteilt.
Sie müssen die Berechtigung jedoch in einer Zeile eingeben.
![[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)
Wenn ein Java-Programm diese Ausnahme empfängt und das Hinzufügen dieser Berechtigung vertretbar ist, fügen Sie der Datei was.policy die folgende Berechtigung hinzu:
![[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";
};
Um zu entscheiden, ob eine Berechtigung hinzugefügt werden soll, lesen Sie die Informationen im Artikel "Zugriffssteuerungsausnahme für Java-2-Sicherheit".