この記事は Google Cloud Translation APIを使用した自動翻訳です。
いくつかの文書は原文を読むのに良いかもしれません。
JavaのSecurity Managerは、Javaプラットフォームのセキュリティアーキテクチャの重要なコンポーネントです。 Javaアプリケーションまたはアプレットのセキュリティポリシーを適用します。
セキュリティ管理者は、アプリケーションがシステムリソースにアクセスする権限を照会および要求できるようにする一連のメソッドを定義するJavaクラスです。 SecurityManager クラスによって実装されます。
信頼できないアプレットまたはアプリケーションが実行されると、セキュリティマネージャが呼び出され、アプレットまたはアプリケーションが要求するシステムリソースにアクセスするために必要な権限があることを確認します。アプレットまたはアプリケーションに必要な権限がない場合、セキュリティ管理者は SecurityException をスローします。
セキュリティ管理者はまた、Javaプラットフォームの脆弱性を悪用しようとするマルウェアから保護する責任があります。たとえば、セキュリティマネージャを使用して、アプレットがローカルファイルシステムを読み書きするのを防ぎ、アプレットをダウンロードしたホスト以外のホストにネットワーク接続を作成するのを防ぐことができます。
セキュリティマネージャを使用するには、アプリケーションまたはアプレットがまずSecurityManager.getSecurityManager()メソッドを呼び出してセキュリティマネージャへの参照を取得する必要があります。セキュリティ管理者は、checkPermission() メソッドを使用して権限を確認するために使用できます。
次のコード例は、セキュリティマネージャを使用して、アプレットがローカルファイルシステムからファイルを読み取ることができるかどうかを確認する方法を示しています。
SecurityManager sm = System.getSecurityManager();
if(sm != null) {
try{
sm.checkPermission(new FilePermission("/tmp/foo.txt", "read"));
} catch(SecurityException se) {
// handle exception
}
}
アプレットまたはアプリケーションに必要な権限がない場合、checkPermission() メソッドは SecurityException をスローします。
Security Managerがすべてのセキュリティ問題の万能歯磨き粉ではないことに注意してください。セキュリティ管理者は、Javaアプリケーションまたはアプレットのセキュリティポリシーのみを実行できることを覚えておくことが重要です。すべてのセキュリティ脅威から保護することはできません。
たとえば、セキュリティ管理者はバッファオーバーフロー攻撃から保護することはできません。バッファオーバーフロー攻撃は、プログラムの脆弱性を悪用するためにプログラムにマルウェアを注入する攻撃の一種です。
バッファオーバーフロー攻撃は、多くの場合、プログラムを制御したり、プログラムをクラッシュさせるために使用されます。また、プログラムの実行時に実行されるプログラムにマルウェアを挿入するためにも使用できます。
バッファオーバーフロー攻撃から保護するには、バッファオーバーフローが発生しないようにする言語を使用することが重要です。たとえば、Javaは境界チェックと呼ばれるメモリセーフタイプを使用するため、バッファオーバーフローの発生を許可しません。
Javaアプリケーションを開発するときに安全なコーディング方式を使用することも重要です。安全なJava開発のためのいくつかのベストプラクティスは次のとおりです。
Javaセキュリティマネージャは、Javaプラットフォームセキュリティアーキテクチャの重要なコンポーネントです。 Javaアプリケーションまたはアプレットのセキュリティポリシーを適用します。セキュリティ管理者を使用すると、開発者はマルウェアや攻撃者が悪用する可能性のある脆弱性からアプリケーションを保護できます。