エンタープライズ:特集 2003/08/24 23:01:00 更新

[JAVA Developer特別企画]
Tomcatで試すJava 2 セキュリティ (2/6)

JAVA Developer 2003年10月号より転載

Tomcatとプラットフォームセキュリティ
 Tomcatなどサーブレットコンテナでのプラットフォームセキュリティというのは、どのように理解すればよいでしょうか。
 システムのアーキテクチャによって千差万別だとは思いますが、基本を理解すれば難解な点はありません。

●単純な例
 まず、大雑把なイメージをつかんでいただくために図3を例にして説明しましょう。TomcatをインストールしたCATALINA_HOME(※1)、J2SDKをインストールしたJAVA_HOME(※2)、独自アプリケーションのmyappからなります。

※1 以下、TomcatをインストールしたディレクトリをCATALINA_HOMEと表記します。
※2 以下、J2SDKをインストールしたディレクトリをJAVA_HOMEと表記します。

図3 Webアプリケーションの構成例
図3 Webアプリケーションの構成例

 図3の例で説明すると、たとえばmy appディレクトリに自作アプリケーションをデプロイしますので、myapp/WEB-INF/classes/ディレクトリ以下のクラスファイルになにかを許可するセキュリティポリシーを設定します。
 また、そのクラスはmyapp/WEB-INF/lib/ディレクトリのライブラリも利用するでしょうから、ライブラリに許可するセキュリティの設定も必要です。このとき、これらをまとめてmyapp/WEB-INF/ディレクトリ以下のクラスファイルおよびJARファイルへの設定としてまとめることも可能です。
 このように、Webアプリケーションの実行ファイルを配置するディレクトリと、そのコードが許される振る舞いをポリシーに定義する、というのがコンテナ上で動作するプログラムのセキュリティになります。

プラットフォームセキュリティの利用
 それでは、具体的な利用方法の説明に移りましょう。
 このセキュリティ機能を利用するには、まずセキュリティマネージャをインストールする必要があります。インストールとはいっても、別途ファイルをインストールするわけではなく、「セキュリティマネージャという機能を利用する」という程度に理解して差し支えありません。

●セキュリティマネージャの利用
 Java仮想マシンの起動時に「-Djava.security.manager」を指定するだけでかまいません。


> java -Djava.security.manager MyApp

 また、このオペレーションはプログラム的にコーディング可能です。プログラムの先頭で、次のようなコードを実行するようにしておけば、それだけでもセキュリティマネージャがインストールされます。


System.setSecurityManager(
new SecurityManager())

 ここでSecurityManagerクラスの役割は、パーミッションの有無を実際にチェックするためのもので、checkXXXというチェックメソッドを多数提供しています。
 しかし、用途に応じてセキュリティをカスタマイズする場合(前述のように概念的セキュリティを自作する場合)は、これらのチェックメソッドでは不十分なケースがあります。
 そのため、このクラスを拡張して独自のセキュリティマネージャを作り、システムにインストールすることも可能です。
 その例がjava.rmi.RMISecurityManagerで、RMIを利用する場合はこのクラスをsetSecurityManagerメソッドでインストールします。
 前述のコマンドラインで独自のセキュリティマネージャをインストールする場合は、


> java -Djava.security.manager=java.
rmi.RMISecurityManager MyApp

のようにして起動します。
 Tomcatの場合、起動スクリプトに「-security」オプションをつけるとセキュリティマネージャがインストールされます。


> startup -security

 SecurityManagerクラスは、より正確にはjava.lang.SecurityManagerクラスです。java.securityパッケージではなくjava.langパッケージに含まれている点に注意してください。

[JAVA Developer特別企画]
Tomcatで試すJava 2 セキュリティ
・Tomcatとプラットフォームセキュリティ
・パーミッションクラス
・Tomcatにおけるポリシー設定例

関連リンク
▼JAVA Developer
▼定期購読のご案内
▼バックナンバー販売協力店

JAVA Developer10月号表紙 JAVA Developer 10月号

大特集
再入門 J2SE

特集2 Oracle9i Application Server
[特別企画]
・例外処理のメカニズム
・データベース移行術(2)
 「Oracle→DB2編」
・Tomcatで試すJava2セキュリティ

前のページ | 1 2 3 4 5 6 | 次のページ

[水沢典行,JAVA Developer]