このトピックでは、Javaクライアントのセキュリティ・レベル、ポリシー・ファイル、権限およびセキュリティ・ダイアログについて説明します。これらのセキュリティ機能によって、ユーザーは、JavaおよびJavaFXアプリケーションが実行できることを制御できます。
この節の内容は以下のとおりです。
Javaコントロール・パネルまたはインストール・オプションを使用して、ユーザーは、Webページに埋め込まれたりWebページから起動されるJavaおよびJavaFXアプリケーション(まとめてRich Internet Application (RIA)と呼ばれる)の実行時に使用されるセキュリティのレベルを制御できます。ユーザーは、ブラウザでのRIAの実行が許可されない無効化を含む、3つのセキュリティ・レベルから選択できます。セキュリティ・レベルの設定は、デスクトップ(スタンドアロンとも呼ばれる)アプリケーションには影響しません。
ブラウザ・プラグイン・ソフトウェアは、RIAの実行を試みる前に、JREバージョンがそのファミリのセキュリティ・ベースライン以上にあることと、JREの有効期間が最新のものであることを確認します。JREがセキュリティ・ベースラインを下回っていると判定された場合、またはベースラインを確認できず、現在の日付がJREの有効期限を過ぎている場合は、追加のセキュリティ警告が表示され、場合によってはRIAがブロックされます。RIAが自動的にブロックされない場合、ユーザーはRIAをブロックする、RIAの実行を継続する、またはjava.com
に移動して最新のリリースをダウンロードすることを選択できます。JREの有効期限は、JDK 7u21以降のJDK Updateリリースのリリース・ノートに記載されています。
JREでは、そのJREが(セキュリティ・ベースラインを上回っている)利用可能なセキュリティ修正をすべて含む最新のものであると引き続きみなされるかどうかを判断するために、Oracleサーバーによる定期チェックを利用しています。7u10リリース以降は、すべてのJREにハードコードされた有効期限が含まれています。その有効期限は、次回の「Critical Patch Update」の定期的なリリースのあとで終了するように計算されています。
Oracleサーバーに長期間アクセスできないJREは、適正な期間を経て追加の保護を提供し始めるようになり、セキュリティ修正を含む最新のものであるかのような動作を続けません。
JREがセキュリティ・ベースラインを下回るか、期限切れになるとどうなるのかをテストする場合は、23.1.2.1項「セキュリティ・ベースラインを下回ったJREのテスト」および23.1.2.2項「期限切れのJREのテスト」を参照してください。
JREがセキュリティ・ベースラインを下回ったときのアプリケーションの動作を調べるには、これらの手順に従います。
テスト対象のJREを選択します。
次のファイルが存在する場合は、それらを削除します。
<user-deployment-home>/deployment.properties
<user-deployment-home>/security/baseline.versions
<user-deployment-home>/security/update.timestamp
サポートされている各プラットフォームでのdeployment.propertiesファイルの場所については、
21.1項「配備構成ファイル(deployment.properties)」
を参照してください。
コマンドラインで、次のコマンドを実行します。
javaws -SSVBaselineUpdate
<user-deployment-home>/security/baseline.versions
ファイルがダウンロードされます。
<user-deployment-home>/security/baseline.versions
ファイルを編集します。
テストしているJREファミリのJREのバージョン番号を、テストしているバージョンよりも大きい値に設定します。たとえば、JREバージョン8u5をテストしている場合は、このファイル内のバージョンを1.8.0_99
に設定します。JREはこのファイルを定期的に更新することで、ファイルを読取り専用にして、ユーザーの変更内容が上書きされないようにします。
任意のRIAを実行します。
「Java Updateが必要」プロンプトが表示されます。「後で」をクリックしてアプリケーションの実行を継続します。このプロンプトについては、java.comの「「Java Updateが必要」というメッセージが表示されるのはなぜですか。」を参照してください。
テストが完了したら、手順2と手順3を繰り返して、それらのファイルの正しいバージョンを復元します。
JREが期限切れになった後のアプリケーションの動作を調べるには、これらの手順に従います。
テスト対象のJREを選択します。
次のファイルが存在する場合は、それらを削除します。
<user-deployment-home>/deployment.properties
<user-deployment-home>/security/baseline.versions
サポートされている各プラットフォームでのdeployment.propertiesファイルの場所については、
21.1項「配備構成ファイル(deployment.properties)」
を参照してください。
システムを、JREの有効期限を過ぎた将来の日付に設定します。テストしているリリースの「リリース・ノート」から有効期限を取得します。
任意のRIAを実行します。
「Java Updateが必要」プロンプトが表示されます。「後で」をクリックしてアプリケーションの実行を継続します。このプロンプトについては、java.comの「「Java Updateが必要」というメッセージが表示されるのはなぜですか。」を参照してください。
ブラウザを通じてJavaに完全にアクセスできないようにする場合は、Javaコントロール・パネルの「セキュリティ」タブにある「ブラウザでJavaコンテンツを有効にする」オプションを選択解除します。詳細は、20.4項「セキュリティ」を参照してください。
ブラウザからJavaを実行する必要がない場合は、Java Plug-inが含まれていないServer JREのインストールを検討してください。詳細は、「Server JRE (Java SE Runtime Environment) 7 Downloads」を参照してください。
注: これらの設定は、OracleのJavaブラウザ・プラグインを使用するすべてのブラウザに影響します。それらはスタンドアロン・アプリケーションには影響しません。
Javaコントロール・パネルの「セキュリティ」タブには、Webから実行されるRIAに設けられた制限を制御する「セキュリティ・レベル」設定が含まれています。ユーザーは、「高」または「非常に高」のレベルを選択できます。この設定は、RIAの実行が許可されるかどうかを判別するもので、許可される場合は、そのRIAの起動前に受け入れる必要のある警告が表示されます。警告には、RIAの署名ステータス、RIAの場所、およびRIAがセキュリティ・サンドボックスの外側で実行するための拡張権限を要求しているかどうかに関する情報が含まれています。
「非常に高」設定では、「署名者のCA」のキーストアに格納されている有効な証明書で署名され、メインJARファイルのマニフェストにPermissions属性が含まれているRIAのみが、セキュリティ・プロンプトを表示して実行されることが許可されます。「高」設定では、「署名者のCA」のキーストアに格納されている有効な証明書で署名され、メインJARファイルのマニフェストにPermissions属性が含まれているRIAは、セキュリティ・プロンプトを表示して実行されることが許可されます。証明書の失効ステータスをチェックできない場合もアプリケーションはセキュリティ・プロンプトを表示して実行されることが許可されます。セキュリティ・レベルの詳細は、20.4項「セキュリティ」を参照してください。
デフォルトのセキュリティ・レベルは「高」です。
アプリケーションを実行できるかどうかは、23.1.5項「セキュアな実行環境のためのセキュリティ・オプション」で説明されている設定にも影響されます。
次のオプションは、RIAの起動時の動作を設定するために、Javaコントロール・パネルの「詳細」タブで使用できます。
「ユーザーが署名済コンテンツにアクセス権を与えることを許可する」
「サンドボックス警告バナーを表示する」
「ユーザーがJNLPセキュリティ・リクエストを受け入れることを許可する」
「証明書が存在しないか1つのみ存在する場合にクライアント証明書の選択を尋ねない」
「サイト証明書でホスト名が一致しない場合に警告する」
「有効な場合でもサイト証明書を表示する」
詳細オプションの詳細は、20.5項「詳細」を参照してください。
注意: これらのオプションは、Microsoft Windowsでのみ使用できます。 |
JDK 7u10リリース以降では、ブラウザでJavaのセキュリティ・レベルを設定する際に、コマンド行インストール用の引数を使用できます。JREのインストールには、管理者特権が必要です。
インストールでは、WEB_JAVA
引数に次の効果があります。
WEB_JAVA
=1は、ブラウザでJavaを有効にします。
WEB_JAVA
=0は、ブラウザでJavaを無効にします。
インストールでは、WEB_JAVA_SECURITY_LEVEL
引数に次の効果があります。
WEB_JAVA_SECURITY_LEVEL
=VHは、セキュリティ・レベルを「非常に高」に設定します。
WEB_JAVA_SECURITY_LEVEL
=Hは、セキュリティ・レベルを「高」に設定します。
JREのインストール後は、Javaコントロール・パネルをチェックして、セキュリティ・レベルの設定が正しいことを確認してください。
この情報は、特権付きコードとサンドボックス・コード間の呼出しを含むRIAにも適用されます。詳細は、第27章「特権付きコードとサンドボックス・コードの混合」を参照してください。
RIAは、デフォルトでは、信頼されていないアプリケーションのコードに付与される一連の権限を定義する、セキュアなサンドボックス内で実行されます。
標準のJavaポリシー・ファイルは、信頼されていないアプリケーションに付与する権限を拡張するために使用できます。$JRE_HOME/lib/security/java.policy
(すべてのjavaプログラムにより使用される)に加えて、Java Web StartおよびJava Plug-inによりロードされるアプリケーションとアプレットは、deployment.system.security.policy
という配備構成プロパティでその位置を構成可能なポリシー・ファイルを追加的にロードします。
デフォルトのサンドボックスは、これらのポリシー・ファイルにより付与されたアクセス権が存在すれば、それらを組み合わせて、信頼されていないコードに付与するアクセス権を決定します。
もう1つのポリシー・ファイルの格納場所は配備構成プロパティdeployment.security.trusted.policy
により決定され、信頼されたコードに付与するアクセス権を制限するために使用されます。このプロパティが設定されない(デフォルト)の場合、信頼されたコードには、AllPermission
権限が付与されます。このプロパティが設定された場合、信頼されたコードには、信頼されていないコードに付与された権限と、このプロパティで指定するポリシー・ファイルにより付与された他の権限のみが付与されます。
配備構成には、コードを信頼するかどうか、またどのように信頼するかを決定するために、いくつかのプロパティが備えられています。通常、Java Plug-inの任意の署名付きJARファイル、およびAllPermission
権限を要求するJNLPファイルにリストされるJava Web Start内の署名付きJARファイルの任意のセットには、証明書チェーンが検証され、結果がセキュリティ・ダイアログに表示されてから、信頼が与えられます。
配備構成プロパティdeployment.user.security.trusted.certs
は、ユーザーによりすでに許可された証明書を含む証明書ストアを指定します。
配備構成プロパティdeployment.system.security.trusted.certs
は、システム管理者によりあらかじめ許可されている証明書の証明書ストアを指定するように設定できます。
Java Plug-inにおけるJARファイル、またはJava Web StartにおけるAllPermission
権限を要求するJNLPファイルのJARファイルのセットは、これらのストアの1つにある証明書で署名されると、信頼が与えられます。
配備構成プロパティdeployment.security.askgrantdialog.show
は、新しい証明書で署名された新しいコードに信頼を付与する許可をユーザーに与えるかどうかを制御できます。
Java Plug-inおよびJava Web Startは、Internet ExplorerおよびFirefoxのブラウザ・キーストアをサポートしています。ブラウザ・キーストアの証明書およびキーは、次の目的で使用されます。
署名検証
HTTPSサーバー認証
HTTPSクライアント認証
スマート・カード上の証明書と鍵がブラウザ・キーストアに公開された場合も、Java Plug-inおよびJava Web Startにより認識されます。
デフォルトでは、ブラウザ・キーストアのサポートは有効になっています。ユーザーは、Javaコントロール・パネルの「詳細」タブでサポートを構成できます。詳細は、20.5項「詳細」を参照してください。
Windowsでは、ブラウザ・キーストアはInternet Explorerによってサポートされます。Internet Explorerでの証明書とキーは、JavaおよびJavaFXアプリケーションがWindows上でデプロイされたときにJava Plug-inおよびJava Web Startにより自動的に認識されます。
この機能は、Internet Explorer 5.0以降でのみサポートされます。
LinuxおよびSolarisでは、ブラウザ・キーストアは、Mozillaによりサポートされます。Mozillaでの証明書とキーは、JavaおよびJavaFXアプリケーションがLinuxおよびSolaris上でデプロイされたときにJava Plug-inおよびJava Web Startにより認識されます。
Mozillaキーストアのサポートには、JSS (Network Security Services for Java)と呼ばれるMozillaライブラリが必要です。デフォルトでは、JSSはMozillaに含まれない個別のコンポーネントです。MozillaにJSSをインストールする場合は、配備者の責任で行ってください。Java Plug-inおよびJava Web Startでは、JSSがデプロイされた後でMozillaキーストア・サポートを有効にします。
この機能は、Mozilla 1.4以降およびJSS 3.2以降でサポートされます。またMozillaおよびJSSが同じプラットフォーム上で同じコンパイラを使用してコンパイルされていることを前提にしています。
Windows上にインストールするには、次の手順に従います。
Mozillaのインストール・ディレクトリの下にjss
ディレクトリを作成する。
JSS JARファイルをjssディレクトリにコピーする。
JSSネイティブ・ライブラリDLLをMozillaのインストール・ディレクトリにコピーする。
SolarisまたはLinux上にインストールするには、次の手順に従います。
Mozillaのインストール・ディレクトリの下にjss
ディレクトリを作成する。
JSS JARファイルをjssディレクトリにコピーする。
JSSネイティブ・ライブラリ.soをMozillaのインストール・ディレクトリにコピーする。
Mozilla起動スクリプト内の環境変数MOZILLA_HOMEを、Mozillaのインストール・ディレクトリに設定する。
Mozilla起動スクリプト内の環境変数LD_LIBRARY_PATHに、Mozillaのインストール・ディレクトリを含めるように変更する。
認証局のルート証明書ストアは、deployment.user.security.cacerts
およびdeployment.system.security.cacerts
プロパティで示されるファイルに格納された証明書ストアの和集合です。デフォルトではdeployment.system.security.cacerts
は、jre/lib/security
ディレクトリのcacerts
ファイルを示します。deployment.user.security.cacerts
は、Javaコントロール・パネルの「セキュリティ」タブにある「証明書」ダイアログ・ボックスを使用してインポートされる、任意の追加されたcacerts
を含むファイルを示します。
deployment.security.askgrantdialog.show
プロパティが許可し、適切に検証できる証明書チェーンを使用してコードが署名されている場合、ユーザーはコードに信頼を与えるよう求められます。次の各項では、セキュリティ・ダイアログについて説明します。
7u21リリース以降、RIAが起動されるときは、次のスクリーン・ショットのようなセキュリティ・プロンプトでユーザーに通知されるようになりました。
RIAに応じて、セキュリティ・プロンプトに次の情報が表示されます。
RIAの名前、またはアプリケーションが署名されていないという通知。
表示される名前は、JARファイル・マニフェストのApplication-Name
属性の値です。Application-Name
属性が存在しない場合は、Main-Class
属性の値が使用されます。どちらの属性もマニフェストに含まれていない場合は、セキュリティ・プロンプトに表示されるタイトルはありません。署名されていないRIAにはタイトルが表示されません。詳細は、26.3項「Application-Name属性」を参照してください。
使用されているJREが古い場合の警告。
ユーザーのシステムの更新プロセスを管理する企業では、配備プロパティdeployment.expiration.check.enabled
を設定することで、古くなったJREへの警告を抑止できます。詳細は、第21章「配備構成ファイルおよびプロパティ」を参照してください。
パブリッシャに関する情報。
アプリケーションが自己署名付きであるか、不明な機関によって署名されている場合、パブリッシャは「不明」と表示されます。
証明書に関する警告。
証明書が期限切れになっているか失効している場合、または失効している証明書を追跡するサーバーにアクセスできない場合は、プロンプトに警告が表示されます。証明書が将来のある日付まで有効でない場合にも警告が表示されます。
アプリケーションがアクセスされる場所。
この値は、Webサイトからアクセスされるアプリケーションの場合はURL、ローカル・ドライブからアクセスされるアプリケーションの場合はディレクトリです。
アプリケーションで必要とされるアクセスのレベル。
制限付きのアクセスではアプリケーションをセキュリティ・サンドボックスに制限し、無制限のアクセスではユーザーのシステム・リソースへのアクセス権をアプリケーションに提供します。
不足しているJARファイル・マニフェスト属性に関する警告。
JARファイル・マニフェスト属性は、アプリケーションの保護を強化するために使用できます。この警告は、推奨される属性がそのマニフェストに不足していることを通知します。詳細は、第26章「セキュリティ用のJARファイル・マニフェストの属性」を参照してください。
署名なし、または自己署名付きのアプリケーションでは、ユーザーが「実行」ボタンの前に選択する必要があるチェックボックスが有効になります。
プロンプトを次回から表示しないオプション。
署名付きのRIAの場合、このRIAと、同じ証明書で署名されている同じ場所からのRIAについて、次回から表示されるプロンプトをオフにできます。RIAがサンドボックス・アプリケーションの場合は、同じ証明書で署名されているほかのサンドボックス・アプリケーションについてのみ、プロンプトがオフになります。表示されているときに、「オプションの表示」をクリックすると、プロンプトをオフにするオプションにアクセスできます。
以前に非表示にされたプロンプトを復元するには、Javaコントロール・パネルの「セキュリティ」タブ上のボタンを使用します。詳細は、20.4.4項「セキュリティ・プロンプトの復元」を参照してください。
RIAの「実行」ボタン、RIAの「取消」ボタン、およびJREが古い場合は最新のJREへの「更新」ボタン。
セキュリティ・プロンプトの説明と例については、java.comにある「Javaからセキュリティ・プロンプトが表示される場合はどうすればよいですか。」を参照してください。
ユーザーが最善の操作性を得られるのは、RIAがセキュリティ・サンドボックスに制限され、信頼できる認証局からの最新の証明書で署名されている場合です。RIAを実行する際に、ユーザーは「実行」をクリックするだけで済みます。
状態がセキュアでなくなるにつれて、より強い警告メッセージが表示されるようになり、場合によっては、次の状況で説明しているように、ユーザーが実行する必要のあるアクションも増えていきます。
RIAが信頼できる認証局からの証明書で署名されていても、ユーザーのシステムへの無制限のアクセスを必要とする場合は、RIAの実行に伴うリスクについてユーザーに警告するプロンプトが表示されます。「実行」をクリックすると、RIAが起動されます。
RIAが証明書で署名されていて、証明書の失効ステータスをチェックできない場合は、RIAの実行に伴うリスクについてより強い警告を示すプロンプトが表示されます。ユーザーは、そのリスクを受け入れるオプションを選択し(それによって「実行」ボタンが有効になる)、そのあとで「実行」をクリックしてRIAを実行する必要があります。
サンドボックス・コードが特権付きコードへのアクセスを試みたり、RIAがアクセス権を持たないリソースへのアクセスを試みたりする場合など、場合によっては追加の警告が表示されます。これらの警告には、ユーザーからの追加の応答が必要です。
RIAの配備に関するガイドラインについては、Javaチュートリアルの「Deployment Best Practices」を参照してください。RIAのデプロイメントの処理方法の詳細は、第24章「Rich Internet Application配備プロセス」を参照してください。
Javaコントロール・パネルを使用すると、セキュリティ・プロンプトに関連するオプションを設定できます。「セキュリティ」タブには、Javaコンテンツをブラウザで実行できないようにするオプションがあります。「セキュリティ・レベル」設定は、アプレットが自動的にブロックされるかどうかや、RIAがブロックされない場合にユーザーが受信するプロンプト表示のレベルを判断します。詳細は、20.4項「セキュリティ」を参照してください。
「詳細」タブには、RIAを管理するためのオプションがあります。
「安全な実行環境」オプションでは、ユーザーが特権を付与することを許可するか禁止するかを制御できます。ユーザーが特権を付与することを許可されない場合、セキュリティ・プロンプトは表示されず、アプリケーションやアプリケーションの機能はブロックされます。
「混合コードのセキュリティ検証」オプションでは、混合コードを警告するプロンプトを表示するか非表示にするかを制御できます。それらのプロンプトが非表示になっている場合、一部の機能がユーザーへの通知なしにブロックされる可能性があります。
詳細は、20.5項「詳細」を参照してください。
ユーザーが使用するJava Web Startのカスタマイズには最終の設定が使用されます。デフォルトでは、サンドボックスに、AWTPermission
showWindowWithoutWarningBanner
は含まれません。このアクセス権がないと、すべてのトップ・レベルのウィンドウに、awtバナー「Java Application Window」または「Java Applet Window」が表示されます。配備構成プロパティdeployment.security.sandbox.awtwarningwindow
は、信頼されていないコードにこのアクセス権を追加するために使用されます。
プロパティの詳細は、第21章「配備構成ファイルおよびプロパティ」を参照してください。
Javaコントロール・パネルでのセキュリティの詳細は、20.4項「セキュリティ」を参照してください。