argius note

プログラミング関連

アクセス制限

今までまともに使ったことがなかったんだけど、初めて一からポリシーファイルを書いたのでメモ。
まず、access.policyというファイルに以下の内容を記述する。

grant {
	permission java.util.PropertyPermission "*", "read";
	permission java.net.SocketPermission "*:0-65535",
                                             "connect,resolve,accept";
	permission java.io.FilePermission "${/}var${/}tmp${/}-",
                                          "read,write,delete";
};

順番に、プロパティの読み取り許可、ネットワーク接続のIP全部とポート全部に対して接続・解決(DNS?)・受信を許可、ローカルファイルシステムの"/var/tmp"以下すべてに読み取り、書き込み、削除を許可。詳細は、JavaAPI仕様のjava.security.Permissionとそのサブクラスを参照。
次に、起動時のオプションにポリシーファイルを適用するよう指定。

$ java -Djava.security.manager -Djava.security.policy=access.policy \
> net.argius.Main

これでOK。ポリシーファイルは、";"(セミコロン)の書き忘れに注意。(括弧の外もね。)