2.2.4 server.policy(J2EEサーバ用セキュリティポリシーファイル)
- 〈この項の構成〉
(1) 形式
J2SEのセキュリティポリシーファイル形式に従います。
(2) ファイルの格納先
-
Windowsの場合
<Application Serverのインストールディレクトリ>\CC\server\usrconf\ejb\<サーバ名称>\
-
UNIXの場合
/opt/Cosminexus/CC/server/usrconf/ejb/<サーバ名称>/
(3) 機能
J2EEサーバを実行するJavaVMのセキュリティポリシーを指定します。
J2EEサーバの稼働中に,このファイルの内容を変更した場合,変更した内容は次にJ2EEサーバを起動したときに反映されます。
(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:${ejbserver.install.root}/javaee/-" {
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}/jaxws/lib/*" {
permission java.security.AllPermission;
};
grant codeBase "file:${cosminexus.home}/jaxrs/lib/*" {
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;
};
grant codeBase "file:${ejbserver.install.root}/weld/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 uCosminexus TP1 Connector & TP1/Client/J
permission java.util.PropertyPermission "*", "read, write";
// For uCosminexus 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";
// For Cosminexus SOA FTP Inbound Adapter
permission java.lang.RuntimePermission "getClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
permission java.lang.RuntimePermission "accessDeclaredMembers";
};
// (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";
permission javax.security.auth.AuthPermission "getSubject";
permission javax.security.auth.AuthPermission "createLoginContext.*";
};
// (6)
// Grant permissions to Cosminexus Service Coordinator
//
grant codeBase "file:${cosminexus.home}/CSC/lib/*" {
permission java.security.AllPermission;
};
// (7)
// Grant permissions to custom login modules
//
grant codeBase "file:${cosminexus.home}/manager/modules/-" {
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission javax.security.auth.AuthPermission "modifyPrincipals";
permission javax.security.auth.AuthPermission "modifyPublicCredentials";
};
// (8)
// Grant minimal permissions to everything else:
// EJBs
// client implementation classes
grant {
permission java.util.PropertyPermission "*", "read";
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
};記述例の(1)〜(8)について説明します。
- (1)
-
J2EEサーバが使用するクラスファイルに対して次の権限を許可します。
-
すべてのアクセス権を許可
-
- (2)
-
J2EEサーバが生成するスタブとスケルトンなどのクラスファイルに対して次の権限を許可します。
-
すべてのアクセス権を許可
-
- (3)
-
J2EEサーバが使用するリソースのクラスファイルに対して次の権限を許可します。
-
すべてのアクセス権を許可
-
- (4)
-
J2EEサーバが使用するリソースアダプタのクラスファイルに対して次の権限を許可します。
-
すべてのプロパティ情報に対して読み取り,および書き込みを許可
-
すべてのファイルに対して読み取り,書き込み,および削除を許可
-
すべてのソケット通信に対してネットワークへの接続,接続での待機,および接続の受け付けを許可
-
すべてのライブラリのロードを許可
-
スレッドグループの変更を許可
-
スレッドの変更を許可
-
すべてのリフレクション操作を許可
-
任意のSubjectが所有する,すべての非公開Credentialへのアクセスを許可
-
Subjectに関連づけられた非公開CredentialのSetの変更を許可
-
環境変数HRMDIRの値の取得を許可
-
クラスローダの取得を許可
-
コンテキストクラスローダの設定を許可
-
クラスの宣言されたメンバへのアクセスを許可
- 注意事項
-
-
リソースアダプタ内のJARファイルの展開先であるJ2EEサーバ管理下のディレクトリが記載されています。
-
J2EEサーバで動作するすべてのリソースアダプタが有効範囲です。
-
-
- (5)
-
JSP/サーブレットのクラスファイルに対して次の権限を許可します。
-
すべてのライブラリのロードを許可
-
印刷ジョブ要求を許可
-
スレッドの変更を許可
-
スレッドグループの変更を許可
-
すべてのソケット通信に対してネットワーク接続を許可
-
すべてのファイルに対して読み取り,および書き込みを許可
-
すべてのプロパティ情報の読み取りを許可
-
Subjectの参照を許可
-
あらゆる名称でLoginContextクラスのインスタンス化を許可
-
- (6)
-
Service Coordinatorのクラスファイルに対し次の権限を許可します。
-
すべてのアクセス権を許可
-
- (7)
-
統合ユーザ管理のカスタムログインモジュールに対し次の権限を許可します。
-
すべてのファイルに対する読み込みを許可
-
SubjectにPrincipalおよびCredentialの追加を許可
-
- (8)
-
すべてのクラスファイルに対して次の権限を許可します。
-
すべてのプロパティ情報の読み取りを許可
-
印刷ジョブ要求を許可
-
すべてのソケット通信に対してネットワーク接続を許可
-
(5) 注意事項
-
構文が不正または適切なアクセス権限が設定されていないserver.policyファイルを使用した場合,java.lang.StackOverflowErrorまたはjava.lang.OutOfMemoryErrorが発生してJ2EEサーバが異常終了することがあります。
-
サーバをセットアップするときに生成されたserver.policyファイルには,J2EEサーバを動作させるために最低限必要な権限が記述されています。生成されたserver.policyファイルの記述行の削除および変更はしないでください。