Aktivieren eines Java-Sicherheitsmanagers

Standardmäßig gelten in Java™-Anwendungen keine Sicherheitseinschränkungen für Aktivitäten, die von der Java-API angefordert werden. Um die Java-Sicherheit für den Schutz einer Java-Anwendung vor der Ausführung potenziell unsicherer Aktionen zu verwenden, können Sie einen Sicherheitsmanager für die JVM aktivieren, in der die Anwendung ausgeführt wird.

Informationen zu diesem Vorgang

Der Sicherheitsmanager setzt eine Sicherheitsrichtlinie um. Eine Sicherheitsrichtlinie enthält die Berechtigungen (Systemzugriffsberechtigungen), die den Codequellen zugewiesen wurden. Die Java-Plattform enthält bereits eine Standardrichtliniendatei. Damit jedoch Java-Anwendungen erfolgreich in CICS ausgeführt werden können, während die Java-Sicherheit aktiv ist, müssen Sie eine zusätzliche Richtliniendatei angeben, die CICS die Berechtigungen gibt, die für die Ausführung der Anwendung erforderlich sind.

Diese zusätzliche Richtliniendatei müssen Sie für jede JVM mit aktiviertem Sicherheitsmanager angeben. CICS stellt einige Beispiele bereit, die Sie verwenden können, um eigene Richtlinien zu erstellen.

Hinweise: Die Aktivierung eines Java-Sicherheitsmanagers wird auf einem Liberty-JVM-Server nicht unterstützt.
  • Anhand dieses OSGi-Sicherheitsagentbeispiels wird das OSGi-Middleware-Bundle com.ibm.cics.server.examples.security in Ihrem Projekt, das ein Sicherheitsprofil enthält, erstellt. Dieses Profil wird auf alle OSGi-Bundles in dem Framework, in dem es installiert wurde, angewendet.
  • Die Datei example.permissions enthält Berechtigungen, die speziell für die Ausführung von Anwendungen in einem JVM-Server gelten. Dazu gehört auch eine Prüfung, mit der sichergestellt wird, dass die Anwendungen die Methode System.exit() nicht verwenden.
  • CICS muss Lese- und Ausführungszugriff für das Verzeichnis im z/OS-Dateisystem besitzen, wo Sie das OSGi-Bundle implementieren.

Für Anwendungen, die im OSGi-Framework eines JVM-Servers ausgeführt werden:

Vorgehensweise

  1. Erstellen Sie in CICS Explorer SDK ein Plug-in-Projekt und wählen das bereitgestellte Beispiel für den OSGi-Sicherheitsagenten aus.
  2. Wählen Sie im Projekt die Datei example.permissions aus, um die Berechtigungen für Ihre Sicherheitsrichtlinie zu bearbeiten.
    1. Überprüfen Sie, ob die Installationsverzeichnisse im CICS-z/OS-Dateisystem und von DB2 ordnungsgemäß angegeben wurden.
    2. Fügen Sie bei Bedarf weitere Berechtigungen hinzu.
  3. Implementieren Sie das OSGi-Bundle in einem geeigneten Verzeichnis im z/OS-Dateisystem (zum Beispiel /u/bundles).
  4. Bearbeiten Sie das JVM-Profil für den JVM-Server und fügen Sie das OSGi-Bundle vor allen anderen Bundles zur Option OSGI_BUNDLES hinzu:
    • OSGI_BUNDLES=/u/bundles/com.ibm.cics.server.examples.security_1.0.0.jar
  5. Fügen Sie die folgende Java-Eigenschaft zum JVM-Profil hinzu, um die Sicherheit zu aktivieren.
    • -Djava.security.policy=all.policy
  6. Fügen Sie die folgende Java-Umgebungsvariable zum JVM-Profil hinzu, um die Sicherheit im OSGi-Framework zu aktivieren:
    • org.osgi.framework.security=osgi
  7. Um zu ermöglichen, dass das OSGi-Framework mit der Sicherheit in Java 2 beginnt, fügen Sie die folgende Richtlinie hinzu:
    • grant { permission java.security.AllPermission; };
  8. Speichern Sie die Änderungen und ermöglichen Sie der JVMSERVER-Ressource die Installation des Middleware-Bundles im JVM-Server.
  9. Optional: Aktivieren Sie die Sicherheit in Java 2.
    1. Um einen Java 2-Sicherheitsrichtlinienmechanismus zu aktivieren, führen Sie diesen zum entsprechenden JVM-Profil hinzu. Zudem müssen Sie Ihre Java 2-Sicherheitsrichtlinie bearbeiten, um entsprechende Berechtigungen zu erteilen.
    2. Um JDBC oder SQLJ einer Java-Anwendung mit aktivem Java 2-Sicherheitsrichtlinienmechanismus verwenden zu können, verwenden Sie den IBM® Data Server-Treiber für JDBC und SQLJ.
    3. Um einen Java 2-Sicherheitsrichtlinienmechanismus verwenden zu können, bearbeiten Sie das JVM-Profil. In wird beschrieben, wie eine Java 2-Sicherheitsrichtlinie eingerichtet wird.
    4. Bearbeiten Sie die Java 2-Sicherheitsrichtlinie, um Berechtigungen für den JDBC-Treiber zu erteilen, indem Sie die in Beispiel 1 angezeigten Zeilen hinzufügen. Geben Sie anstelle von db2xxx ein Verzeichnis an, unter dem sich alle Ihre DB2-Bibliotheken befinden. Die Berechtigungen gelten für alle Verzeichnisse und Dateien unter dieser Ebene. Dadurch können Sie JDBC und SQLJ verwenden.
    5. Bearbeiten Sie die Java 2-Sicherheitsrichtlinie, um Leseberechtigungen zu erteilen, indem Sie die in Beispiel 2 angezeigten Zeilen hinzufügen. Wenn Sie keine Leseberechtigung hinzufügen, kann das Ausführen eines Java-Programms zu Ausnahmen bei der Zugriffssteuerung und unvorhersehbaren Ereignissen führen. Sie können JDBC und SQLJ mit einer Java 2-Sicherheitsrichtlinie verwenden.
    Beispiel 1:
    grant codeBase "file:/usr/lpp/db2xxx/-" {
      permission java.security.AllPermission;
    };   
    Beispiel 2:
    grant {
    
    // allows anyone to read properties
    permission java.util.PropertyPermission "*", "read";
    
    };

Ergebnisse

Wenn die Java-Anwendung aufgerufen wird, ermittelt die JVM die Codequelle für die Klasse und überprüft die Sicherheitsrichtlinie, bevor der Klasse die entsprechenden Berechtigungen erteilt werden.