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.

Die Liste der verfügbaren Richtliniendateien, die in WebSphere Application Server unterstützt werden, finden Sie im Artikel zu den Richtliniendateien für die Java 2-Sicherheit. Die Datei app.policy ist eine Standardrichtliniendatei, die von allen WebSphere Application Server-Unternehmensanwendungen gemeinsam genutzt wird. Alle in den folgenden Dateien enthaltenen Berechtigungen werden auf die WebSphere Application Server-Unternehmensanwendungen 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.

In diesen Dateien vorgenommene Änderungen werden auf anderen Knoten in der Zelle von WebSphere Application Server Network Deployment repliziert.

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 ein Administrator der Datei app.policy Threadberechtigungen hinzufügt, erfordert die Berechtigungsänderung einen Neustart von WebSphere Application Server. 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";
}; 
Wichtig: Das Schlüsselwort "Signed By" und das JAAS-Principal-Schlüsselwort (Java Authentication and Authorization Service) werden in der Datei app.policy nicht unterstützt. Von den folgenden Richtliniendateien wird das Schlüsselwort "Signed By" jedoch unterstützt: java.policy, server.policy und client.policy. Das JAAS-Principal-Schlüsselwort wird in einer JAAS-Richtliniendatei unterstützt, wenn es von der JVM-Systemeigenschaft java.security.auth.policy angegeben wird. Sie können die Berechtigungsrichtliniendateien in der Eigenschaft java.security.auth.policy statisch mit auth.policy.url.n=URL festlegen, wobei URL hier für die Adresse der Berechtigungsrichtlinie steht.
Wenn die Standardberechtigungen für Unternehmensanwendungen (die Gesamtmenge der in den Dateien java.policy, server.policy und app.policy definierten Berechtigungen) ausreichen, ist keine Aktion erforderlich. Die Standarddatei app.policy wird automatisch verwendet. Sollte für alle Unternehmensanwendungen der Zelle eine bestimmte Änderung erforderlich sein, aktualisieren Sie die Datei app.policy. Syntaxfehler in den Richtliniendateien verhindern, dass die Anwendungsserver gestartet werden. Gehen Sie beim Bearbeiten dieser Richtliniendateien sorgfältig vor.
Anmerkung: Aktualisierungen der Datei app.policy gelten nur für die Unternehmensanwendungen, die auf dem Knoten ausgeführt werden, zu dem die Datei app.policy gehört.

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]
wsadmin> set obj [$AdminConfig extract cells/Zellenname/node/Knotenname/app.policy c:\temp\test\app.policy]
[IBM i][z/OS]
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]
wsadmin> $AdminConfig checkin cells/Zellenname/nodes/Knotenname/app.policy c:\temp\test\app.policy $obj
[IBM i][z/OS]
wsadmin> $AdminConfig checkin cells/Zellenname/nodes/Knotenname/app.policy  temp/test/app.policy $obj
Tabelle 1. Symbole für die Zuordnung von Berechtigungslisten zu einem bestimmten Ressourcentyp. Es wurden mehrere produktspezifische Symbole definiert, um die Berechtigungslisten einem bestimmten Ressourcentyp zuzuordnen.
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.
Tabelle 2. Symbole zum Festlegen des Pfads und des Namens für die Berechtigung "java.io.FilePermission". Es werden fünf eingebettete Symbole bereitgestellt, mit denen Sie den Pfad und den Namen für die Berechtigung "java.io.FilePermission" angeben können. Diese Symbole ermöglichen es, Berechtigungen flexibel anzugeben. Der absolute Dateipfad wird nach der Installation der Anwendung festgelegt.
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
Tipp: ${Pfad.des.WAS-Moduls} kann im Eintrag ${Anwendung} nicht verwendet werden.

[IBM i][z/OS]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:

Achtung: Im folgenden Codebeispiel sind die ersten beiden Zeilen, die sich auf die Berechtigung java.io.FilePermission beziehen, nur zu Darstellungszwecken auf zwei Zeilen aufgeteilt.
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";
};
Wenn alle WebSphere Application Server-Unternehmensanwendungen in einer Zelle Berechtigungen benötigen, die nicht als Standardwerte in den Dateien java.policy, server.policy und app.policy definiert sind, müssen Sie die Datei app.policy aktualisieren. Eine fehlende Berechtigung äußert sich durch die Ausnahme java.security.AccessControlException.
Anmerkung: Aktualisierungen der Datei "app.policy" gelten nur für Unternehmensanwendungen, die auf dem Knoten ausgeführt werden, zu dem die Datei "app.policy" gehört.
[Windows] Die fehlende Berechtigung ist in den Ausnahmedaten angegeben. Beispiel:
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]
grant codeBase "file:user_client_installed_location" {   
  permission java.io.FilePermission 
"C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar", "read"; };
[IBM i]
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.


Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsec_apppolicy
Dateiname:rsec_apppolicy.html