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]Die Standardberechtigungen für Anwendungen entsprechen den empfohlenen Berechtigungen, wie sie in der Spezifikation J2EE 1.3 definiert sind. 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.

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

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.