アプレットを実行するときのセキュリティレベルの設定方法を説明します。
ポリシーファイルと呼ばれる設定ファイルを使用します。ポリシーファイルとは、アプレットごとにセキュリティチェックの対象となる各操作を許可するかを設定するためのファイルです。
JBKプラグインが使用するポリシーファイルの詳細は以下の説明を参照してください。なお、ポリシーファイルによるセキュリティ設定の詳細は、JDKのドキュメントを参照してください。
JBKプラグインが使用するポリシーファイル
JBKプラグインは、以下の2種類のポリシーファイルを使用します。
JBKプラグインのポリシーファイル
JBKプラグインのポリシーファイルの格納場所は、jbkplugin.propertiesの中の以下の行に記述されています。
jbk.plugin.policy.url=<ポリシーファイルの格納場所を表すURL> |
ポリシーファイルの絶対パスをURL形式で指定します。初期設定は以下のようになっています。
file:${jbk.home}/classes/jbkplugin.policy |
${jbk.home}は、以下のどちらかになります。両方の製品をインストールした場合は後でインストールしたものが有効になります。
JBKダウンロードインストーラのインストールフォルダ、またはInterstage Application Serverクライアントパッケージのインストールフォルダ配下のJBKDIフォルダ
Interstage Studioインストールフォルダ\IDE\JBK
注意
インストールフォルダに空白を含む場合、${jbk.home}を使用しないでください。
ポリシーファイルの読み込みに失敗します。
Java SEのデフォルトのポリシーファイル
Java SEには、以下の場所にデフォルトのポリシーファイルが用意されています。
JDK:(JDKのインストールフォルダ)\jre\lib\security\java.policy
JRE:(JREのインストールフォルダ)\lib\security\java.policy
共通:(${user.home})\.java.policy
${user.home}は、Javaのシステムプロパティで、ユーザのホームフォルダを示します。
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.io.FilePermission "{file}","delete"; |
ネットワーク接続の要求(connect) | (ポート番号が-1の場合) |
(それ以外の場合) | |
ネットワークポートでの待機(listen) | (ポート番号が0の場合) |
(それ以外の場合) | |
ネットワーク接続要求の受理(accept) | java.net.SocketPermission "{host}:{port}","accept"; |
マルチキャストの使用 | java.net.SocketPermission(maddr.getHostAddress(),"accept,connect"); |
ネットワーク関連クラスのファクトリの設定 | java.lang.RuntimePermission "setFactory"; |
他のスレッドグループのスレッドの操作 | (スレッドの操作) |
(スレッドグループの操作) | |
ローカルのアプリケーションの起動 | (アプリケーションの起動コマンドが絶対パスで指定されている場合) |
(相対パスで指定されている場合) | |
ローカルのライブラリ(DLL)のロード | java.lang.RuntimePermission "loadLibrary.{lib}"; |
システムプロパティへのアクセス | (System.getProperties()を使用する場合) |
(System.getProperty(String key)を使用する場合) | |
ウィンドウの作成 | 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ファイルをダウンロードして再生すると例外が発生します。
「他のスレッドグループのスレッドの操作」の権限を追加してください