Я хочу запустить некоторые не проверенные сценарии (написанные на языке, который еще не определен, но должен быть основан на Java, поэтому JRuby, Groovy, Jython, BeanShell и т.д. - все кандидаты). Я хочу, чтобы эти скрипты могли делать что-то и ограничивались другими делами.
Обычно я просто использую Java SecurityManager и делаю это с ним. Это довольно просто и позволяет мне ограничивать доступ к файлам и сети, возможность отключения JVM и т.д. И это будет хорошо работать для материала высокого уровня, который я хочу заблокировать.
Но есть некоторые вещи, которые я хочу разрешить, но только через мой пользовательский API/библиотеку, которую я предоставляю. Например, я не хочу разрешать прямой доступ к сети, чтобы открыть URLConnection на yahoo.com, но я в порядке, если это делается с MyURLConnection. То есть - существует набор методов/классов, которые я хочу разрешить, а затем все остальное, что я хочу быть вне пределов.
Я не считаю, что этот тип безопасности можно сделать со стандартной моделью безопасности Java, но, возможно, это возможно. У меня нет особых требований к производительности или гибкости самого языка сценариев (скрипты будут простыми процедурными вызовами для моего API с базовым циклом/ветвлением). Таким образом, даже "большие" накладные расходы, которые проверяют проверку безопасности на каждый вызов отражения, мне в порядке.
Предложения?