Systemressourcen und APIs (Java-2-Sicherheit) für die Entwicklung von Anwendungen schützen

Java™ 2-Sicherheit ist ein weit verbreitetes Programmiermodell mit großem Einfluss auf die Anwendungsentwicklung.

Vorbereitungen

Java 2-Sicherheit ist orthogonal zu Java Platform, Enterprise Edition ( Java EE ) rollenbasierte Sicherheit; Sie können sie unabhängig von der Verwaltungssicherheit deaktivieren oder aktivieren.

Es bietet jedoch eine zusätzliche Ebene des Zugriffskontrollschutzes zusätzlich zu den Java EE rollenbasierte Autorisierung. Sie ist insbesondere auf den Schutz von Systemressourcen und Anwendungsprogrammierschnittstellen (APIs) ausgerichtet. Administratoren müssen die Vorteile und Risiken einer Deaktivierung der Java 2-Sicherheit gegeneinander abwägen.

Die folgenden Empfehlungen sollen dabei helfen, die Java 2-Sicherheit in einer Test- oder Produktionsumgebung zu aktivieren:
  1. Stellen Sie sicher, dass die Anwendung mit dem Java 2-Sicherheitsprogrammiermodell entwickelt wird. Entwickler müssen wissen, ob die in den Anwendungen verwendeten APIs durch Java 2-Sicherheit geschützt sind. Es ist sehr wichtig, dass die erforderlichen Berechtigungen für die verwendeten APIs in der Richtliniendatei deklariert werden.was.policy oder die Anwendung kann nicht ausgeführt werden, wenn die Java 2-Sicherheit aktiviert ist. Entwickler können auf der Website nach Development Kit-APIs suchen, die durch Java 2-Sicherheit geschützt sind. Informationen zum Besuchen dieser Website finden Sie im Abschnitt "Programmiermodell und Entscheidungen" des Artikels "Sicherheit: Lernmaterial".
  2. Stellen Sie sicher, dass migrierte Anwendungen aus früheren Releases die erforderlichen Berechtigungen erhalten. Da Java 2-Sicherheit in früheren Versionen nicht oder nur teilweise unterstützt wurde, WebSphere® Application Server Bei vor Version 5 entwickelten Anwendungen wird höchstwahrscheinlich nicht das Java 2-Sicherheitsprogrammiermodell verwendet. Es gibt keine einfache Methode, mit der Sie herausfinden können, ob alle erforderlichen Berechtigungen für die Anwendung verfügbar sind. Sie können die folgenden Aktivitäten ausführen, um die zusätzlichen Berechtigungen zu ermitteln, die eine Anwendung erfordert:
    • Codeprüfung
    • Prüfung der Anwendungsdokumentation
    • Sandbox-Tests migrierter Unternehmensanwendungen mit aktivierter Java 2-Sicherheit in einer Vorproduktionsumgebung. Aktivieren Sie die Ablaufverfolgung in WebSphere Java 2-Sicherheitsmanager zur Unterstützung bei der Ermittlung der fehlenden Berechtigungen in der Anwendungsrichtliniendatei. Die Trace-Spezifikation lautet:com.ibm.ws.security.core.SecurityManager=all=enabled.
    • Verwenden Sie die Systemeigenschaft "com.ibm.websphere.java2secman.norethrow" für die Unterstützung des Debugging. Verwenden Sie diese Eigenschaft nicht in Produktionsumgebungen.

[AIX Solaris HP-UX Linux Windows][z/OS]Der Standardberechtigungssatz für Anwendungen ist der empfohlene Berechtigungssatz, der definiert ist in J2EE 1.3 Spezifikation. Der Standardwert wird in der Stammverzeichnis_des_Anwendungsservers/profiles/profile_name/config/cells/cell_name/nodes/node_name/app.policyRichtliniendatei mit den im Development Kit definierten Berechtigungen (JAVA_HOME/jre/lib/security/java.policy)-Richtliniendatei, die jedem Berechtigungen erteilt. Anwendungen werden jedoch Berechtigungen verweigert, die in derprofiles/profile_name/config/cells/cell_name/filter.policyeportiert. Die in der Datei filter.policy deklarierten Berechtigungen werden bei der Überprüfung der Berechtigungen für Anwendungen gefiltert.

[IBM i]Die Standardberechtigungen für Anwendungen entsprechen den empfohlenen Berechtigungen, wie sie in der Spezifikation J2EE 1.3 definiert sind. Der Standardwert wird in der Profilstamm/config/cells/cell_name/nodes/node_name/app.policyRichtliniendatei mit Berechtigungen, die in der Richtliniendatei des Development Kit definiert sind und jedem Berechtigungen erteilen. Derjava.policy Die Datei befindet sich im java_home Verzeichnis, abhängig von der für das Profil aktivierten Java Virtual Machine (JVM).
Notiz: Nur Java SE 6 hat eine JRE. (Beispiel:/QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit/jre/lib/ext ).
Für alle Java-Virtual-Machines ist diejava.policyDatei wird systemweit verwendet. Bearbeiten Sie nicht diejava.policyDatei auf dem Server. Anwendungen werden Berechtigungen verweigert, die in der Profilstamm/config/cells/cell_name/filter.policyeportiert. Die in der Datei filter.policy deklarierten Berechtigungen werden bei der Überprüfung der Berechtigungen für Anwendungen gefiltert.
[IBM i]Verwenden Sie dieshowVariables Befehl des AdminTask Objekt zum Abrufen von JAVA_HOME für den Knoten, der mit dem Profil des Servers verknüpft ist. Wenn der Knoten z. B. myNode heißt, gehen Sie wie folgt vor:
  1. Geben Sie QShell ein.
  2. Rufen Sie mit cd das Verzeichnis Profilstammverzeichnis/bin auf.
  3. Führen Sie den folgenden Befehl aus:
    wsadmin -conntype NONE -c '$AdminTask showVariables {-scope Node=myNode -variableName JAVA_HOME}'

Definieren Sie die erforderlichen Berechtigungen für eine Anwendung in der Datei was.policy und betten Sie die Datei was.policy als IHREAPP.ear/META-INF/was.policy in die EAR-Datei (Enterprise Archive, Unternehmensarchiv) der Datei ein.

Die folgenden Schritte beschreiben, wie die Java-2-Sicherheit auf Zellebene für WebSphere Application Server Network Deployment und auf Serverebene für WebSphere Application Server Express durchgesetzt wird

Vorgehensweise

  1. Klicken Sicherheit > Globale Sicherheit.
    Die Anzeige "Globale Sicherheit" erscheint.
  2. Wähle aus Verwenden Sie Java 2-Sicherheit, um den Anwendungszugriff auf lokale Ressourcen einzuschränken Möglichkeit.
  3. Klicken OK oder Anwenden.
  4. Klicken Speichern, um die Änderungen zu speichern.
  5. Starten Sie den Server erneut, damit die Änderungen wirksam werden.

Ergebnisse

Die Java 2-Sicherheit ist für die Server aktiviert und wird erzwungen. Die Java 2-Sicherheitsberechtigung wird ausgewählt, wenn eine durch Java 2-Sicherheit geschützte API aufgerufen wird.
Wann sollte Java 2-Sicherheit verwendet werden?
  1. Aktivieren Sie den Schutz für Systemressourcen, beispielsweise beim Öffnen oder Abhören einer Socket-Verbindung, beim Lesen oder Schreiben in Dateisystemen des Betriebssystems oder beim Lesen oder Schreiben von Systemeigenschaften der Java Virtual Machine.
  2. Verhindern Sie, dass der Anwendungscode zerstörerische APIs aufruft, z. B. die Methode System.exit, die den Anwendungsserver beendet.
  3. Verhindern Sie, dass Anwendungscode privilegierte Informationen (Kennwörter) abruft oder zusätzliche Berechtigungen erhält (durch Abrufen der Serverberechtigungsnachweise).

Nächste Schritte

Sie können Java 2-Sicherheit auf Serverebene erzwingen für WebSphere Application Server Network Deployment indem Sie die folgenden Schritte ausführen.
Notiz: Änderungen an den Java 2-Sicherheitseinstellungen auf Serverebene überschreiben die Einstellungen auf Zellenebene.
  1. Klicken Sie auf Server > Anwendungsserver > Servername.
  2. Klicken Sie unter "Sicherheit" auf Serversicherheit.
  3. Wählen Sie die Option Sicherheitseinstellungen für diesen Server überschreiben Zelleneinstellungen aus.
  4. Wähle aus Verwenden Sie Java 2-Sicherheit, um den Anwendungszugriff auf lokale Ressourcen einzuschränken Möglichkeit.
  5. Klicken OK oder Anwenden.
  6. Klicken Sie auf Speichern, um die Änderungen zu speichern.
  7. Starten Sie den Server erneut, damit die Änderungen wirksam werden.
Der Java 2-Sicherheitsmanager wurde erweitert, um die Java 2-Sicherheitsberechtigungen, die allen Klassen im Aufrufstapel gewährt werden, auszugeben, wenn einer Anwendung der Zugriff auf eine Ressource verweigert wird. Die Ausnahme java.security.AccessControlException wird erzeugt. Diese Traceoption ist standardmäßig jedoch inaktiviert. Sie können diese Funktion aktivieren, indem Sie den Server-Trace-Dienst mit demcom.ibm.ws.security.core.SecurityManager=all=enabledTrace-Spezifikation. Wenn die Ausnahme erstellt wird, liefert der Trace-Dump Hinweise, um festzustellen, ob der Anwendung Berechtigungen fehlen oder der Produkt-Runtime-Code oder die verwendeten Drittanbieter-Bibliotheken nicht richtig alsprivilegedbeim Zugriff auf durch Java 2-Sicherheit geschützte Ressourcen.

Sehen Sie sich die Leitfaden zur Bestimmung von Sicherheitsproblemen für Details.