ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Express Java EE運用ガイド
FUJITSU Software

5.3.8 セキュリティーマネージャーの運用

セキュリティーマネージャーの運用方法について説明します。

5.3.8.1 セキュリティーマネージャーの有効化と無効化

IJServerクラスタおよびInterstage Java EE DASサービスのインスタンスのセキュリティーマネージャーは、デフォルトで無効になっています。セキュリティーマネージャーを有効にするためには、Interstage Java EE管理コンソールまたはasadminコマンドで以下の設定を行い、IJServerクラスタを再起動してください。

セキュリティーマネージャーを無効にする場合は、Interstage Java EE管理コンソールまたはasadminのdelete-jvm-optionsサブコマンドを使用して上記の設定を元に戻し、IJServerクラスタを再起動してください。

注意

IIOP通信使用時の注意事項

セキュリティーマネージャーを使用するアプリケーションが、IIOP通信を行い、EJB、JMSまたはCORBAサービスアプリケーション呼出し機能を使用する場合は、以下のどちらかを行ってください。

  • システムプロパティに以下を設定してください。

    jdk.corba.allowOutputStreamSubclass=true
  • policyファイルに以下の権限を追加してください。

    permission java.io.SerializablePermission "enableSubclassImplementation";

上記設定を行っていない場合、IIOP通信時に以下の例外が発生する場合があります。

java.security.AccessControlException: access denied (java.io.SerializablePermission enableSubclassImplementation).

5.3.8.2 policyファイルの編集

IJServerクラスタを作成すると、そのIJServerクラスタで使用されるデフォルトのpolicyファイルが以下のディレクトリに配置されます。デフォルトのpolicyファイルには、IJServerクラスタの動作に必要なアクセス権が設定されています。

[Java EE共通ディレクトリ]\nodeagents\ijna\[サーバーインスタンス名]\config\server.policy

[Java EE共通ディレクトリ]/nodeagents/ijna/[サーバーインスタンス名]/config/server.policy

運用環境に合わせてセキュリティを強化する場合は、デフォルトのpolicyファイルを任意のディレクトリ配下にコピーし、コピーしたファイルを編集してください。また、デフォルトのpolicyファイルがIJServerクラスタで使用されないようにするため、IJServerクラスタのJVMオプションに「-Djava.security.policy=[編集したpolicyファイルのフルパス]」を設定してください。このJVMオプションは、IJServerクラスタを再起動することにより有効となります。
JVMオプションの設定は、Interstage Java EE管理コンソールまたはasadminのcreate-jvm-optionsサブコマンドで行います。

注意

policyファイル編集時の注意事項

Interstage Java EE DASサービスのpolicyファイルは変更しないでください。
デフォルトのpolicyファイルには、IJServerクラスタが動作するために必要な権限が設定されています。
「// Core server classes get all permissions by default」から「//Required to register MBeans, fails otherwise」の変更および削除は行わないでください。変更した場合、IJServerクラスタが起動できなくなる可能性があります。
policyファイルでマルチバイト文字を使用する場合は、policyファイルをUTF-8で保管するか、IJServerクラスタのJVMオプションに「-Dsun.security.policy.utf8=false」を設定してください。
policyファイルをデフォルト以外の場所に定義した場合、バックアップコマンドによるバックアップの対象となりません。手動でバックアップしてください。

5.3.8.3 アプリケーションのアクセス権の設定

policyファイルは、grant構文と複数のpermission構文により構成されます。セキュリティレベルの低下を防ぐためアクセス権を設定する場合は、すべてのアプリケーションではなく、変更が必要なアプリケーションへ適切なアクセス権を設定してください。
アプリケーションのアクセス権は、policyファイルの「// Please change the following content if necessary.// Basic set of required permissions granted to all remaining code」という記述の次から始まるgrant構文を変更してください。デフォルトでいくつかのアクセス権が定義されているため、必要に応じて変更してください。
例えば、デフォルトではすべてのファイルへの読み込み/書き込みが許可されていますが、特定のJava EEアプリケーションのみに権限を付与したい場合は、デフォルトの定義をコメントアウト(※1)し、特定のJava EEアプリケーションへの権限を追加(※2)してください。

// Please change the following content if necessary.
// Basic set of required permissions granted to all remaining code
grant {
                :
//    permission java.io.FilePermission       "<<ALL FILES>>", "read,write"; ・・・※1
                :
};
grant codeBase "file:${com.sun.aas.installRoot}/var/domains/interstage/applications/j2ee-apps/[アプリケーション名]/-" {
    permission java.io.FilePermission       "<<ALL FILES>>", "read,write"; ・・・※2
};

各アプリケーションのアクセス制御を行う場合は、grant文のcodeBaseを設定する必要があります。
省略値の${com.sun.aas.instanceRoot}変数、${com.sun.aas.installRoot}変数については、「6.8.1 定義時に利用できるプロパティ」を参照してください。

IJServerクラスタに配備されたすべてのJava EEアプリケーション(EARモジュール)に対してアクセス制御を行う場合は、以下のように指定します。

grant codeBase "file:${com.sun.aas.installRoot}/var/domains/interstage/applications/j2ee-apps/- " {
...
};

Java EEアプリケーション(EARモジュール)ごとにアクセス制御を行う場合は、以下のように指定します。

grant codeBase "file:${com.sun.aas.installRoot}/var/domains/interstage/applications/j2ee-apps/[アプリケーション名]/-" {
...
};

Webモジュール(war)、EJBモジュール(ejb-jar)、connector(rar)などのモジュールごとにアクセス制御を行う場合は、以下のように指定します。

grant codeBase "file:${com.sun.aas.installRoot}/var/domains/interstage/applications/j2ee-modules/[モジュール名]/-" {
...
};

配備時に出力されるスタブコードに対してアクセス制御を行う場合は、以下のように指定します。

grant codeBase "file:${com.sun.aas.instanceRoot}/generated/-" {
...
};

JSPに対してアクセス制御を行う場合は、JSPのコンパイル結果の保管先ディレクトリを指定してください。デフォルトでは、上記スタブと同じ値です。
コンパイル結果出力ディレクトリを変更している場合は、コンパイル結果出力先ディレクトリを指定してください。

server.policyファイル内に設定するアクセス権(permission構文)の詳細については、以下のサイトを参照してください。

PermissionクラスのJavadoc は、以下のサイトを参照してください。