World Map
Java Service Wrapperは、御社Javaアプリケーション製品の安定した信頼性を高める最短最善の方法です。
  • Free Trial
  • Buy Now
セキュリティ・モデル

Java セキュリティ・モデル と Java Service Wrapper を理解する

Java Service Wrapperは、パーミッション(アクセス権限)のシリーズを実装しており、 標準 Javaセキュリティ・モデルを採用しているWrapper APIへのアクセスを 完全にコントロールするために利用されます。

Javaアプリケーション内部から他のサービスをコントロールする

Wrapperでは、 適切なコントロール・コードを送信することで、システム上のいかなるサービス上で、 開始、停止、問い合わせ(interrogate)、その他の運用の管理をすることが可能です。 これはとてもパワフルに強力でありますが、 不正に利用されると、サーバー上に深刻なセキュリティ問題を開けることにもなります。 この理由のため、デフォルトで、 [WrapperManager.sendServiceControlCode(...)] メソッドへのアクセスは無効になっています。 これを利用をするためには、JVMにセキュリティ・マネージャーをインストールして、 特定のパーミッション(アクセス権限)が与えられていることが必要です。

セキュリティ・マネージャーを設定する行為は、 セキュリティ・エラーでアプリケーション開始の失敗など、 多くの問題を引き起こすことになりますのでご注意ください。 アプリケーションに適切なパーミッション(アクセス権限)を許可するために、 様々な設定に入る必要があります。 セキュリティ・マネージャーに関する詳しい情報は、サン・チュートリアルをご覧ください: http://java.sun.com/docs/books/tutorial/security/tour2/index.html

セキュリティ・マネージャーをセットアップする:

ご利用のJVMにセキュリティ・マネージャーをセットアップする一番簡単な方法は、 ご利用の [wrapper.conf] ファイルに次のプロパティを追加することです:

コンフィギュレーション設定例:
wrapper.java.additional.1=-Djava.security.manager
wrapper.java.additional.2=-Djava.security.policy=../conf/java.policy

java.security.manager:

最初のシステム・プロパティ [ java.security.manager (J2SE 5.0) (JavaSE6) ] は、JVMが作成されるときにセキュリティ・マネージャーを作成するよう、Javaに指示します。

java.security.policy:

2つ目のシステム・プロパティ [ java.security.policy (J2SE 5.0) (JavaSE6) ] は、アプリケーション内部で許可されるべきパーミッション(アクセス権限)を示すファイルの配置を指示します。

ポリシー・ファイルは、シンプルなテキスト・ファイルです。

ポリシー・ファイル設定例:
// Give Wrapper classes full permissions
grant codeBase "file:../lib/wrapper.jar" {
        permission java.security.AllPermission;
};

// Grant various permissions to a specific service.
grant codeBase "file:../lib/-" {
        permission org.tanukisoftware.wrapper.security.WrapperServicePermission
"myservice", "interrogate,start,stop";
};

最初のブロックは、クラス[wrapper.jar]に完全なパーミッション(アクセス権限)を与えます。 これは、 Wrapperがアプリケーション全体を制御できるように、 つまりアプリケーションがすることは何でも全てWrapperから制御できるようになります。

2つ目のブロックは、特定のサービスにパーミッション(アクセス権限)を与えます。 ご利用の「lib」ディレクトリーの「jar」ファイルにある、 いかなる他のクラスが、 Wrapper経由で"myservice" サービスの開始、停止、問い合わせ(interrogate)を コールにさせることができることを意味しています。 もし、これがない場合には、コールは結果として 「SecurityExceptions(セキュリティ例外)」が投げられることになります。