セキュリティーマネージャーの運用方法について説明します。
デフォルトの状態では、IJServerクラスタのセキュリティーマネージャーは無効となっています。
セキュリティーマネージャーを有効とするには、Interstage Java EE管理コンソール、またはasadminコマンドで以下の設定を行い、IJServerクラスタを再起動してください。
Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [セキュリティ]のセキュリティーマネージャーのチェックボックスを有効とする。
または、
[設定] > [クラスタ名-config] または [server-config] > [JVM 設定] > [JVMオプション]タブ のオプションに[-Djava.security.manager]を追加する。
asadminのcreate-jvm-options
[-Djava.security.manager]を追加する。
セキュリティーマネージャーを無効にする場合は、上記で設定したJVMオプションへの変更を元に戻し、IJServerクラスタを再起動してください。asadminコマンドで行う場合は、delete-jvm-optionsサブコマンドを使用します。
デフォルトのpolicyファイルは、IJServerクラスタが作成されると以下のディレクトリへ自動的に出力され、JVMオプションに設定されます。
デフォルトのpolicyファイルには、IJServerクラスタ内の動作に必要なアクセス権がすでに設定されています。運用環境に合わせてpolicyファイルを編集してください。
[Java EE共通ディレクトリ]\nodeagents\ijna\[サーバーインスタンス名]\config\server.policy
[Java EE共通ディレクトリ]/nodeagents/ijna/[サーバーインスタンス名]/config/server.policy
policyファイルは、任意の場所に保管することもできます。その場合は、デフォルトのpolicyファイルを任意のディレクトリ配下にコピーし、コピーしたファイルを編集してください。
作成したpolicyファイルは、JVM オプション:-Djava.security.policyにフルパスで設定し、IJServerクラスタを再起動することにより有効となります。
設定は、Interstage Java EE管理コンソールまたはasadminのcreate-jvm-optionsで行います。
Interstage Java EE管理コンソール
[設定] > [クラスタ名-config] または [server-config] > [JVM 設定] > [JVM オプション]タブ
asadminのcreate-jvm-options
注意
policyファイル編集時の注意事項
デフォルトのpolicyファイル内には、IJServerクラスタが動作するために必要権限が設定されています。
「// Core server classes get all permissions by default」から「//Required to register MBeans, fails otherwise」の変更および削除は行わないでください。変更した場合、IJServerクラスタが起動できなくなる可能性があります。
policyファイルへマルチバイト文字を使用する場合は、policyファイルをUTF-8で保管するか、システムプロパティへ「-Dsun.security.policy.utf8=false」を設定してください。
policyファイルは、grant構文と複数のpermission構文により構成されます。セキュリティレベルの低下を防ぐためアクセス権を設定する場合は、すべてのアプリケーションではなく、変更が必要なアプリケーションへ適切なアクセス権を設定してください。
アプリケーションのアクセス権は、policyファイルに記述されている「// Please change the following content if necessary.」より下の定義を変更してください。デフォルトでいくつかのアクセス権が定義されているため、必要に応じて変更してください。
例えば、デフォルトではすべてのファイルへの読み込み/書き込みが許可されていますが、特定の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.instanceRoot}/applications/j2ee-apps/[アプリケーション名]/-" { permission java.io.FilePermission "<<ALL FILES>>", "read,write"; ・・・※2 }; |
各アプリケーションのアクセス制御を行う場合は、grant文のcodeBaseを設定する必要があります。
省略値の${com.sun.aas.instanceRoot}変数については、「9.8.1 定義時に利用できるプロパティ」を参照してください。
IJServerクラスタに配備されたすべてのjava EEアプリケーション(EARモジュール)に対してアクセス制御を行う場合は、以下のように指定します。
grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-apps/- " { |
java EEアプリケーション(EARモジュール)ごとにアクセス制御を行う場合は、以下のように指定します。
grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-apps/[アプリケーション名]/-" { |
Webモジュール(war)、EJBモジュール(ejb-jar)、connector(rar)などのモジュールごとにアクセス制御を行う場合は、以下のように指定します。
grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-modules/[モジュール名]/-" { |
配備時に出力されるスタブコードに対してアクセス制御を行う場合は、以下のように指定します。
grant codeBase file:${com.sun.aas.instanceRoot}/generated/-" { |
JSPに対してアクセス制御を行う場合は、JSPのコンパイル結果の保管先ディレクトリを指定してください。デフォルトでは、上記スタブと同じ値です。
コンパイル結果出力ディレクトリを変更している場合は、コンパイル結果出力先ディレクトリを指定してください。
server.policyファイル内に設定するアクセス権(permission構文)の詳細については、以下のサイトを参照してください。
PermissionクラスのJavadoc は、以下のサイトを参照してください。