Skip to content

セキュリティマネージャー完全ガイド

セキュリティマネージャー完全ガイド

Section titled “セキュリティマネージャー完全ガイド”

Javaのセキュリティマネージャーの仕組みと実践的な使用方法を、実務で使える実装例とベストプラクティスとともに詳しく解説します。

1. セキュリティマネージャーとは

Section titled “1. セキュリティマネージャーとは”

セキュリティマネージャーの役割

Section titled “セキュリティマネージャーの役割”

セキュリティマネージャーは、Javaアプリケーションのセキュリティポリシーを強制する仕組みです。

セキュリティマネージャーの用途
├─ ファイルアクセスの制御
├─ ネットワークアクセスの制御
├─ システムプロパティの制御
└─ サンドボックス環境の実現

セキュリティマネージャーの有効化

Section titled “セキュリティマネージャーの有効化”
// セキュリティマネージャーの設定
System.setSecurityManager(new SecurityManager());
// または、起動時に設定
// java -Djava.security.manager MyApp

2. セキュリティポリシーファイル

Section titled “2. セキュリティポリシーファイル”
policy.policy
grant {
// ファイル読み取り権限
permission java.io.FilePermission "/tmp/*", "read";
// ファイル書き込み権限
permission java.io.FilePermission "/tmp/*", "write";
// ネットワークアクセス権限
permission java.net.SocketPermission "localhost:8080", "connect";
// システムプロパティ読み取り権限
permission java.util.PropertyPermission "user.home", "read";
};
Terminal window
# ポリシーファイルを指定して起動
java -Djava.security.manager \
-Djava.security.policy=policy.policy \
MyApp

3. カスタムセキュリティマネージャー

Section titled “3. カスタムセキュリティマネージャー”
import java.security.*;
public class CustomSecurityManager extends SecurityManager {
@Override
public void checkRead(String file) {
if (file.startsWith("/etc/")) {
throw new SecurityException(
"Access denied to /etc/ directory");
}
}
@Override
public void checkWrite(String file) {
if (file.startsWith("/etc/")) {
throw new SecurityException(
"Write access denied to /etc/ directory");
}
}
@Override
public void checkConnect(String host, int port) {
if (port < 1024) {
throw new SecurityException(
"Cannot connect to privileged ports");
}
}
}
public class SandboxExample {
public static void main(String[] args) {
// セキュリティマネージャーを設定
System.setSecurityManager(new SecurityManager());
// 制限された環境でコードを実行
try {
// ファイルアクセス
File file = new File("/tmp/test.txt");
file.createNewFile(); // ポリシーによっては失敗する可能性
} catch (SecurityException e) {
System.err.println("Security violation: " + e.getMessage());
}
}
}

セキュリティマネージャー完全ガイドのポイント:

  • セキュリティマネージャー: セキュリティポリシーの強制
  • ポリシーファイル: 権限の定義
  • カスタムマネージャー: 独自のセキュリティチェック
  • サンドボックス: 制限された環境での実行

適切なセキュリティマネージャーの使用により、安全なアプリケーションを構築できます。