3.2.3 server.policy(バッチサーバ用セキュリティポリシーファイル)
- 〈この項の構成〉
(1) 形式
J2SEのセキュリティポリシーファイル形式に従います。
(2) ファイルの格納先
-
Windowsの場合
<Application Serverのインストールディレクトリ>\CC\server\usrconf\ejb\<サーバ名称>\
-
UNIXの場合
/opt/Cosminexus/CC/server/usrconf/ejb/<サーバ名称>/
(3) 機能
バッチサーバを実行するJavaVMのセキュリティポリシーを指定します。
バッチサーバの稼働中に,このファイルの内容を変更した場合,変更した内容は次にバッチサーバを起動したときに反映されます。
(4) 記述例
使用されるポリシーファイルの内容を次に示します。
// (1) // Grant all permissions to anything loaded from the // EJB server itself grant codeBase "file:${ejbserver.install.root}/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${tpbroker.java.home}/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/DABJ/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/manager/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/c4web/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/c4web/exlib/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/jaxp/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/CTM/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/PRF/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/wss/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/XMLSEC/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${ejbserver.install.root}/sfo/lib/*" { permission java.security.AllPermission; }; grant codeBase "file:${hntrlib.home}/classes/*" { permission java.security.AllPermission; }; grant codeBase "file:${cosminexus.home}/common/lib/*" { permission java.security.AllPermission; }; // (2) // Grant all permissions to the container generated stubs and // implementation classes grant codeBase "file:${ejbserver.http.root}/ejb/${ejbserver.serverName}/containers/-" { permission java.security.AllPermission; }; // (3) // Grant all permissions to imported resource (datasource) implementations // implementation classes grant codeBase "http://*/ejb/${ejbserver.serverName}/import/resjars/-" { permission java.security.AllPermission; }; // (4) // Grant permissions to resource adapters // grant codeBase "file:${ejbserver.http.root}/ejb/${ejbserver.serverName}/rarjars/-" { // For Cosminexus TP1 Connector & TP1/Client/J permission java.util.PropertyPermission "*", "read, write"; // For Cosminexus TP1 Connector & TP1/Client/J & Cosminexus Reliable Messaging permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete"; permission java.net.SocketPermission "*", "connect,listen,accept"; // For TP1/Message Queue - Access permission java.lang.RuntimePermission "loadLibrary.*"; // For TP1/Message Queue - Access & Cosminexus Reliable Messaging permission java.lang.RuntimePermission "modifyThreadGroup"; permission java.lang.RuntimePermission "modifyThread"; // For DB Connector permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; // For authentication (from J2EE RI server.policy file) permission javax.security.auth.PrivateCredentialPermission "* * \"*\"", "read"; // For Cosminexus Reliable Messaging permission javax.security.auth.AuthPermission "modifyPrivateCredentials"; permission java.lang.RuntimePermission "getenv.HRMDIR"; // (5) // Grant permissions to JSP/Servlet // grant codeBase "file:${ejbserver.http.root}/web/${ejbserver.serverName}/-" { permission java.lang.RuntimePermission "loadLibrary.*"; permission java.lang.RuntimePermission "queuePrintJob"; permission java.lang.RuntimePermission "modifyThread"; permission java.lang.RuntimePermission "modifyThreadGroup"; permission java.net.SocketPermission "*", "connect"; permission java.io.FilePermission "<<ALL FILES>>", "read, write"; permission java.util.PropertyPermission "*", "read"; }; // (6) // Grant permissions to Cosminexus Service Coordinator // grant codeBase "file:${cosminexus.home}/CSC/lib/*" { permission java.lang.security.AIIPermission; }; // (7) // // Grant minimal permissions to everything else: // Batch applications // EJBs // client implementation classes grant { permission java.security.AllPermission; };
記述例の(1)〜(7)について説明します。
- (1)
-
バッチサーバが使用するクラスファイルに対して次の権限を許可します。
-
すべてのアクセス権を許可
-
- (2)
-
バッチサーバが生成するスタブとスケルトンなどのクラスファイルに対して次の権限を許可します。
-
すべてのアクセス権を許可
-
- (3)
-
バッチサーバが使用するリソースのクラスファイルに対して次の権限を許可します。
-
すべてのアクセス権を許可
-
- (4)
-
バッチサーバが使用するリソースアダプタのクラスファイルに対して次の権限を許可します。
-
すべてのプロパティ情報に対して読み取り,および書き込みを許可
-
すべてのファイルに対して読み取り,書き込み,および削除を許可
-
すべてのソケット通信に対してネットワークへの接続,接続での待機,および接続の受け付けを許可
-
すべてのライブラリのロードを許可
-
スレッドグループの変更を許可
-
スレッドの変更を許可
-
すべてのリフレクション操作を許可
-
任意のSubjectが所有する,すべての非公開Credentialへのアクセスを許可
-
Subjectに関連づけられた非公開CredentialのSetの変更を許可
-
環境変数HRMDIRの値の取得を許可
- 注意事項
-
-
リソースアダプタ内のJARファイルの展開先であるバッチサーバ管理下のディレクトリが記載されています。
-
バッチサーバで動作するすべてのリソースアダプタが有効範囲です。
-
-
- (5)
-
JSP/サーブレットのクラスファイルに対して次の権限を許可します。
-
すべてのライブラリのロードを許可
-
印刷ジョブ要求を許可
-
スレッドの変更を許可
-
スレッドグループの変更を許可
-
すべてのソケット通信に対してネットワーク接続を許可
-
すべてのファイルに対して読み取り,および書き込みを許可
-
すべてのプロパティ情報の読み取りを許可
-
- (6)
-
Service Coordinatorのクラスファイルに対して次の権限を許可します。
-
すべてのアクセス権を許可
-
- (7)
-
すべてのクラスファイルに対して次の権限を許可します。
-
すべてのアクセス権を許可
-
(5) 注意事項
-
構文が不正または適切なアクセス権限が設定されていないserver.policyファイルを使用した場合,java.lang.StackOverflowErrorまたはjava.lang.OutOfMemoryErrorが発生してバッチサーバが異常終了することがあります。
-
サーバをセットアップするときに生成されたserver.policyファイルには,バッチサーバを動作させるために最低限必要な権限が記述されています。生成されたserver.policyファイルの記述行の削除および変更はしないでください。ただし,signedBy,codeBase,およびprincipalが指定されていないgrantにあるjava.security.AllPermissionは,次の権限を設定すれば削除できます。
-
java.util.PropertyPermission "*", "read";
-
java.lang.RuntimePermission "queuePrintJob";
-
java.net.SocketPermission "*", "connect";
-