ページの先頭行へ戻る
Interstage Studio J Business Kit 解説書
FUJITSU Software

2.3.3 セキュリティレベルの設定

アプレットを実行するときのセキュリティレベルの設定方法を説明します。

ポリシーファイルと呼ばれる設定ファイルを使用します。ポリシーファイルとは、アプレットごとにセキュリティチェックの対象となる各操作を許可するかを設定するためのファイルです。

JBKプラグインが使用するポリシーファイルの詳細は以下の説明を参照してください。なお、ポリシーファイルによるセキュリティ設定の詳細は、JDKのドキュメントを参照してください。

JBKプラグインが使用するポリシーファイル

JBKプラグインは、以下の2種類のポリシーファイルを使用します。

JBKプラグインによるアプレット実行の際には、これらのポリシーファイルの設定が両方とも有効になります。同じアプレットに対する権限設定が両方のポリシーファイルに記述されている場合には、両方の権限が許可されます。

アプレットの権限の設定はどちらのポリシーファイルに記述してもかまいません。JBKプラグインのポリシーファイルに記述すると、使用するJava SEを切り替えた場合やJava SEを再インストールした場合にも、デフォルトのポリシーファイルに設定を記述し直すことなく常に同じ設定が使用できるようになります。

ポリシーファイルの記述例

以下は、あるアプレットにすべての権限を許可したい場合のポリシーファイルの記述例です。

grant codeBase "(アプレットのコードベースを表すURL)" {
    //AllPermissionは、すべての権限を表すパーミッション
    permission java.security.AllPermission;
};

この記述例のAllPermissionは、すべての権限をアプレットに許可するため、注意が必要です。実際の運用時では、AllPermissionの代わりに必要な権限だけを記述するようにします。

ポイント

JBKプラグインが独自のポリシーファイルを使用するのを止めたい場合には、jbkplugin.properties内のポリシーファイルの格納場所の指定行(“jbk.plugin.policy.url”が記述されている行)を削除するか、行の先頭に'#'を挿入してコメント行にしてください。

各操作に必要な権限

セキュリティチェックの対象となる各操作を行うために必要な権限を、下表に示します。これらの権限の詳細およびポリシーファイルへの設定方法は、JDKのドキュメントを参照してください。

対象となる操作

必要な権限

ローカルのファイルの読込み

(ファイル記述子による読込み)
java.lang.RuntimePermission "readFileDescriptor";

(ファイル名による読込み)
java.io.FilePermission "{file}","read";

ローカルのファイルへの書込み

(ファイル記述子による書込み)
java.lang.RuntimePermission "writeFileDescriptor";

(ファイル名による書込み)
java.io.FilePermission "{file}","write";

ローカルのファイルの削除

java.io.FilePermission "{file}","delete";

ネットワーク接続の要求(connect)

(ポート番号が-1の場合)
java.net.SocketPermission "{host}","resolve";

(それ以外の場合)
java.net.SocketPermission "{host}:{port}","connect";

ネットワークポートでの待機(listen)

(ポート番号が0の場合)
java.net.SocketPermission "localhost:1024-","lesten";

(それ以外の場合)
java.net.SocketPermission "localhost:{port}","lesten";

ネットワーク接続要求の受理(accept)

java.net.SocketPermission "{host}:{port}","accept";

マルチキャストの使用

java.net.SocketPermission(maddr.getHostAddress(),"accept,connect");

ネットワーク関連クラスのファクトリの設定

java.lang.RuntimePermission "setFactory";

他のスレッドグループのスレッドの操作

(スレッドの操作)
java.lang.RuntimePermission "modifyThread";

(スレッドグループの操作)
java.lang.RuntimePermission "modifyThreadGroup";

ローカルのアプリケーションの起動

(アプリケーションの起動コマンドが絶対パスで指定されている場合)
java.io.FilePermission "{cmd}","execute";

(相対パスで指定されている場合)
java.io.FilePermission "-","execute";

ローカルのライブラリ(DLL)のロード

java.lang.RuntimePermission "loadLibrary.{lib}";

システムプロパティへのアクセス

(System.getProperties()を使用する場合)
java.util.PropertyPermission "*","read,write";

(System.getProperty(String key)を使用する場合)
java.util.PropertyPermission "{key}","read,write";

ウィンドウの作成

java.awt.AWTPermission "showWindowWithoutWarningBanner";

アプレットからのクラスのロード

java.lang.RuntimePermission "getClassLoader";

印刷ジョブへのアクセス

java.lang.RuntimePermission "queuePrintJob";

クリップボードへのアクセス

java.awt.AWTPermission "accessClipboard";

AWTのイベントキューへのアクセス

java.awt.AWTPermission "accessEventQueue";

クラスローダの操作

java.lang.RuntimePermission "getClassLoader";

ブラウザの終了

※JBKプラグインでは、アプレットがブラウザを終了させることを許可していません。

注意

画像ファイルをダウンロードすると例外が発生します。(JDK/JRE 8場合)

画像ファイルまたは、それを含むJARファイルに対するjava.net.URLPermissionを追加してください

waveファイルをダウンロードして再生すると例外が発生します。

「他のスレッドグループのスレッドの操作」の権限を追加してください