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

Die Java™-2-Sicherheit verwendet mehrere Richtliniendateien, um die erteilte Berechtigung für jedes Java-Programm zu bestimmen. Die Datei was.policy ist eine anwendungsspezifische Richtliniendatei für Unternehmensanwendungen von WebSphere Application Server. Diese Datei ist in die EAR-Datei META-INF/was.policy integriert. Die Datei was.policy befindet sich in dem folgenden Verzeichnis:
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.

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 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";
};
Tabelle 2. 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. . 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, Berechtigungen flexibel anzugeben. Der absolute Dateipfad wird nach der Installation der Anwendung eingesetzt.
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

Wenn die Standardberechtigungen für die Unternehmensanwendung ausreichend sind, ist keine Aktion erforderlich. Die Standardberechtigungen stellen eine Verknüpfung der in den Dateien java.policy, server.policy und app.policy definierten Berechtigungen dar. Muss eine Anwendung auf spezifische Ressourcen zugreifen, aktualisieren Sie die Datei was.policy. Bei den ersten beiden Schritten wird davon ausgegangen, dass Sie eine neue Richtliniendatei erstellen.
Tipp: Syntaxfehler in den Richtliniendateien verhindern, dass der Anwendungsserver gestartet wird. Gehen Sie beim Bearbeiten der Richtliniendateien sehr sorgfältig vor.

Vorgehensweise

  1. Erstellen oder bearbeiten Sie eine neue Datei was.policy mit PolicyTool. Weitere Informationen finden Sie im Artikel Mit PolicyTool Richtliniendateien für die Java-2-Sicherheit verwenden.
  2. Packen Sie die Datei was.policy in die EAR-Datei (Enterprise Archive).

    Weitere Informationen finden Sie im Artikel Anwendungen für die Java-2-Sicherheit die Datei "was.policy" hinzufügen.

    Die folgenden Anweisungen beschreiben, wie Sie eine Datei was.policy importieren.
    1. Importieren Sie die EAR-Datei in das Assembliertool.
    2. Öffnen Sie die Ansicht "Projektnavigator".
    3. Erweitern Sie die Anzeige für die EAR-Datei und klicken Sie auf META-INF. Sie finden die Datei was.policy möglicherweise im Verzeichnis META-INF. Wenn Sie die Datei löschen möchten, klicken Sie mit der rechten Maustaste auf den Dateinamen, und wählen Sie Löschen aus.
    4. Klicken Sie in der Ansicht "Projektnavigator" auf J2EE-Hierarchie.
    5. Importieren Sie die Datei was.policy, indem Sie mit der rechten Maustaste auf das Verzeichnis Modules im Implementierungsdeskriptor und anschließend auf Importieren > Importieren > Dateisystem klicken.
    6. Klicken Sie auf Weiter.
    7. Geben Sie im Feld Aus Verzeichnis den Namen des Pfads zur Datei was.policy ein, oder klicken Sie auf Durchsuchen, um die Datei zu suchen.
    8. Prüfen Sie, ob der im Feld In Verzeichnis angegebene Verzeichnispfad das richtige Verzeichnis META-INF enthält.
    9. Klicken Sie auf Fertig stellen.
    10. Klicken Sie zum Auswerten der EAR-Datei mit der rechten Maustaste auf die EAR-Datei, die das Verzeichnis "Modules" enthält, und klicken Sie auf Gültigkeitsprüfung ausführen.
    11. Klicken Sie zum Speichern der neuen EAR-Datei mit der rechten Maustaste auf die EAR-Datei und klicken Sie anschließend auf Export > Export EAR file. Wenn Sie die geänderte EAR-Datei nicht speichern, enthält die EAR-Datei zwar die neue Datei was.policy, aber wenn der Arbeitsbereich beschädigt wird, könnte die geänderte EAR-Datei verloren gehen.
    12. Klicken Sie zum Generieren des Implementierungscodes mit der rechten Maustaste auf die EAR-Datei. Klicken Sie dann auf Implementierungscode generieren.
  3. Aktualisieren Sie eine installierte Anwendung. Ändern Sie die Datei was.policy mit PolicyTool. Weitere Informationen finden Sie im Artikel Mit PolicyTool Richtliniendateien für die Java-2-Sicherheit verwenden.[z/OS]
    1. Extrahieren Sie die Richtliniendatei. Geben Sie in einer Eingabeaufforderung Folgendes ein:
      wsadmin> set obj [$AdminConfig extract profiles/Profilname/cells/Zellenname
      /application/Name_der_EAR-Datei/deployments/Anwendungsname
      /META_INF/was.policy c:/temp/test/was.policy]

      Geben Sie die drei obigen Zeilen in nur einer Zeile ein. Sie sind hier nur zur besseren Lesbarkeit auf mehrere Zeilen aufgeteilt.

    2. Editieren Sie die extrahierte Datei was.policy mit PolicyTool. Weitere Informationen finden Sie im Artikel Mit PolicyTool Richtliniendateien für die Java-2-Sicherheit verwenden.
    3. Geben Sie den Zugriff auf die Richtliniendatei frei. Geben Sie in einer Eingabeaufforderung Folgendes ein:
      wsadmin> $AdminConfig checkin profiles/Profilname/cells/Zellenname/application/
      Name_der_EAR-Datei/deployments/Anwendungsname/META_INF/was.policy
      c:/temp/test/was.policy $obj

      Geben Sie die drei obigen Zeilen in nur einer Zeile ein. Sie sind hier nur zur besseren Lesbarkeit auf mehrere Zeilen aufgeteilt.

Ergebnisse

Die aktualisierte Datei was.policy wird nach dem Neustart der Anwendung auf diese angewendet.

Beispiel

[IBM i][z/OS]
java.security.AccessControlException: access denied (java.io.FilePermission 
${was.install.root}/java/ext/mail.jar read)
[z/OS][IBM i]Wenn eine Anwendung auf eine bestimmte Ressource zugreifen muss, die in den Dateien java.policy, server.policy und app.policy nicht als Standard definiert ist, löschen Sie die Datei was.policy für diese Anwendung. Eine fehlende Berechtigung äußert sich durch die Ausnahme java.security.AccessControlException. Die fehlende Berechtigung ist in den Ausnahmedaten angegeben:
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][z/OS]
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][z/OS]
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".

Nächste Schritte

Die aktualisierte Datei app.policy tritt erst nach einem Neustart aller Anwendungen in Kraft.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



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