コラム 「Tomcatへ適用可能な標準的パーミッションクラス」
本稿では触れませんが、標準のパーミッションクラス以外にも多数のパーミッションクラスが存在し、自分で定義可能なカスタムパーミッションを利用することも可能です。
- java.util.PropertyPermission
「java.home」といったJava VMのプロパティの読み込み/書き込みアクセスを制御 - java.lang.RuntimePermission
「exit()」メソッドや「exec()」メソッドのようないくつかのSystemクラス/Runtimeクラスのメソッドの使用を制御。パッケージのアクセス/定義も制御できる - java.io.FilePermission
ファイル、ディレクトリへ読み込み/書き込み/実行のアクセスを制御 - java.net.SocketPermission
ネットワークソケット使用を制御 - java.net.NetPermission
マルチキャストネットワーク接続使用を制御 - java.lang.reflect.ReflectPermissionクラス・イントロスペクション(class introspection)を行うためのリフレクション使用を制御
- java.security.SecurityPermission
セキュリティメソッドへのアクセスの制御 - java.security.AllPermission
すべてのパーミッションへのアクセスを許可。Tomcatをセキュリティマネージャなしで実行するのと同じ状態になるので、危険
セキュリティポリシーにセキュリティマネージャを設定
セキュリティポリシーの定義方法が分かったところで、Cometチャットを利用するためのセキュリティポリシー定義に戻りましょう。Webアプリケーションを発行する際には、利用するアプリケーションの用途に合わせて「WEB APPLICATION PERMISSINOS」に内容を追記していく必要があります。
それでは、実際にCometチャット用にセキュリティポリシーを定義してみます。まずは、設置されているファイルを定義していきます。内容は以下のようになります。
grant codeBase "file:${catalina.home}/webapps/ROOT/WEB-INF/classes/CometServlet.class" { };
次に、許可するパーミッションクラスを定義します。本来であればパーミッションは利用最低限で定義すべきですが、今回はすべてのパーミッションを許可してしまいます。
permission java.security.AllPermission;
この2つの定義を併せた内容を「catalina.policy」ファイルに追記します。
// for CometChat Servlet // grant codeBase "file:${catalina.home}/webapps/ROOT/WEB-INF/classes/CometServlet.class" { permission java.security.AllPermission; };
ファイルの内容を追記したら、ポリシーを適用するためにTomcatを再起動します。起動用のスクリプトに再起動のパラメータを付け、「/etc/init.d/tomcat restart」コマンドを実行します。
[root@www ~]# /etc/init.d/tomcat restart
再起動が完了して再度Cometチャットを起動してみると、無事に起動できました。
実際利用してみると……。
ちゃんとチャットできることが確認できました。
セキュリティポリシーの定義を慎重に
セキュリティポリシーの設定は人の手に掛かっているので「確実に安全」とはいえませんが、セキュリティポリシーの定義を慎重に行っていけば、少なくともいままでよりは安全に、信頼できるWebアプリケーションサーバを構築できるでしょう。
駆け足でしたが以上で、Tomcat 6の新機能紹介と、非常に簡単ながらTomcatでセキュアなWebアプリケーションサーバを構築する方法を紹介する本連載はおしまいです。あとは、利用する環境に合わせてどんどん設定を試してみてください。本連載が少しでも読者の業務に役立てば幸いです。
【参考文献】
著者プロフィール
x-lab チーム
株式会社アメニクスのR&D部門として、企業の価値向上を目的に結成された研究開発チーム(x-lab=amenix laboratory)。
アメニクスの社員をはじめ、システム開発技術者のみに限らず、MBA教授や外資系出身エンジニアなど幅広いメンバーが所属している。IT技術からマーケティング、金融テクノロジーなどさまざまな分野で活動中。
主な著書
Copyright © ITmedia, Inc. All Rights Reserved.