検証されていないスクリプトをいくつか実行しようとしています (まだ決定されていない言語で書かれていますが、Java ベースである必要があるため、JRuby、Groovy、Jython、BeanShell などがすべて候補です)。私は、これらのスクリプトがいくつかのことを実行できるようにし、他のことを実行できないようにしたいと考えています。
通常は、Java の SecurityManager を使用するだけで済みます。これは非常に単純で、ファイルとネットワークへのアクセス、JVM をシャットダウンする機能などを制限できます。これは、ブロックしたい高レベルのものにはうまく機能します。
ただし、許可したいことがいくつかありますが、提供しているカスタム API/ライブラリを介してのみです。たとえば、直接のネットワーク アクセスで yahoo.com への URLConnection を開くことを許可したくありませんが、MyURLConnection でそれが行われていれば問題ありません。つまり、許可したい一連のメソッド/クラスがあり、それ以外はすべて立ち入り禁止にしたいということです。
この種のセキュリティは、標準の Java セキュリティ モデルで実現できるとは思いませんが、おそらく実現できるでしょう。スクリプト言語自体のパフォーマンスや柔軟性に関する特定の要件はありません (スクリプトは、基本的なループ/分岐を使用した API への単純な手続き型呼び出しになります)。したがって、すべてのリフレクション呼び出しでセキュリティ チェックをチェックする「大きな」オーバーヘッドでさえ、私には問題ありません。
提案?