Java セキュリティー・マネージャーの使用可能化

デフォルトで、Java™ アプリケーションには、Java API に対して要求されるアクティビティーのセキュリティー制限がありません。Java セキュリティーを使用して Java アプリケーションを安全ではない可能性のある操作の実行から保護するため、アプリケーションを実行する JVM のセキュリティー・マネージャーを有効にすることができます。

このタスクについて

セキュリティー・マネージャーはセキュリティー・ポリシーを実施します。セキュリティー・ポリシーとは、コード・ソースに割り当てられた許可 (システム・アクセス権) のセットです。Java プラットフォームにはデフォルトのポリシー・ファイルが用意されています。ただし、Java セキュリティーがアクティブであるときに、Java アプリケーションを CICS® で正常に実行できるようにするには、アプリケーションの実行に必要な許可を CICS に付与する追加のポリシー・ファイルを指定する必要があります。

この追加のポリシー・ファイルは、セキュリティー・マネージャーが有効になっている各種の JVM に対して指定する必要があります。CICS には、独自のポリシーを作成するために使用できるサンプルが用意されています。

注: Java セキュリティー・マネージャーの使用可能化は、Liberty JVM サーバーではサポートされていません。
  • OSGi セキュリティー・エージェントのサンプルは、プロジェクトに com.ibm.cics.server.examples.security という名前の OSGi ミドルウェア・バンドルを作成します。 その中には、セキュリティー・プロファイルが含まれています。 このプロファイルは、それが置かれているフレームワーク内のすべての OSGi バンドルに適用されます。
  • example.permissions ファイルには、JVM サーバーで実行中のアプリケーションに固有の許可が含まれています。 それには、アプリケーションが System.exit() メソッドを使用していないことを確認するチェックが含まれます。
  • CICS には、zFS の中で OSGi バンドルの配置先となるディレクトリーに対する読み取りアクセス権限と実行アクセス権限が必要です。

JVM サーバーの OSGi フレームワークで実行されるアプリケーションの場合:

手順

  1. CICS Explorer® SDK でプラグイン・プロジェクトを作成して、提供される OSGi セキュリティー・エージェントのサンプルを選択します。
  2. プロジェクトで、example.permissions ファイルを選択して、セキュリティー・ポリシーの許可を編集します。
    1. CICS zFS および DB2® インストール・ディレクトリーが正しく指定されていることを確認します。
    2. 必要に応じて、他の許可を追加します。
  3. OSGi バンドルを /u/bundles などの zFS の適切なディレクトリーに配置します。
  4. JVM サーバーの JVM プロファイルを編集して、以下のように OSGi バンドルを OSGI_BUNDLES オプションの他のバンドルの前に追加します。
    • OSGI_BUNDLES=/u/bundles/com.ibm.cics.server.examples.security_1.0.0.jar
  5. JVM プロファイルに次の Java プロパティーを追加して、セキュリティーを有効にします。
    • -Djava.security.policy=all.policy
  6. JVM プロファイルに次の Java 環境変数を追加して、OSGi フレームワーク内でセキュリティーを有効にします。
    • org.osgi.framework.security=osgi
  7. OSGi フレームワークを Java 2 セキュリティーで開始できるようにするには、以下のポリシーを追加します。
    • grant { permission java.security.AllPermission; };
  8. 変更を保存し、JVMSERVER リソースを使用可能にして、ミドルウェア・バンドルを JVM サーバーにインストールします。
  9. オプション: Java 2 セキュリティーをアクティブにします。
    1. Java 2 セキュリティー・ポリシー・メカニズムをアクティブにするには、それを適切な JVM プロファイルに追加する必要があります。また、Java 2 セキュリティー・ポリシーを編集して、適切な許可を付与する必要があります。
    2. Java 2 セキュリティー・ポリシー・メカニズムがアクティブな状態で Java アプリケーションから JDBC または SQLJ を使用するには、IBM® Data Server Driver for JDBC and SQLJ を使用する必要があります。
    3. Java 2 セキュリティー・ポリシー・メカニズムをアクティブにするには、JVM プロファイルを編集します。に記載されている Java 2 セキュリティー・ポリシーのセットアップ方法を参照してください。
    4. Java 2 セキュリティー・ポリシーを編集して JDBC ドライバーに許可を付与するには、例 1 に示されている行を追加します。db2xxx の部分には、使用している DB2 ライブラリーすべてが置かれている親ディレクトリーを指定します。対象の許可は、このレベルより下にあるすべてのディレクトリーとファイルに適用されます。これにより、JDBC と SQLJ を使用できるようになります。
    5. 例 2 に示されている行を追加して、Java 2 セキュリティー・ポリシーを編集して読み取り許可を付与します。読み取り許可を追加しないで Java プログラムを実行すると、AccessControlExceptions と予測不能な結果が生成されます。Java 2 セキュリティー・ポリシーで JDBC および SQLJ を使用できます。
    例 1:
    grant codeBase "file:/usr/lpp/db2xxx/-" {
      permission java.security.AllPermission;
    };   
    例 2:
    grant {
    
    // allows anyone to read properties
    permission java.util.PropertyPermission "*", "read";
    
    };

タスクの結果

Java アプリケーションが呼び出されると、JVM は、クラスのコード・ソースを判別し、セキュリティー・ポリシーを調べてから、適切な許可をクラスに付与します。