開発者がカスタムのGroovyスクリプトとフリーマーカーテンプレートをアップロードできるようにするシステムを開発しています。
デフォルトのJavaセキュリティインフラストラクチャを使用して、非常に高いレベルで特定のレベルのセキュリティを提供できます。つまり、コードがファイルシステムまたはネットワークにアクセスできないようにしますが、特定のメソッドへのアクセスを制限する必要があります。
私の計画は、GroovyおよびFreemarkerランタイムを変更して、特定のメソッドをホワイトリストまたはブラックリストに登録するアノテーションを読み取ることでしたが、これにより、コードのフォークバージョンを維持する必要があります。これは望ましくありません。
基本的にできる必要があるのは、GroovyまたはFreemarkerから呼び出されたときに特定のメソッドが実行されないようにすることだけです。コールスタックを調べるハックを検討しましたが、これは大規模なスピードヒットになります(そしてそれはかなり厄介です)。
これを実装するための他のアイデアはありますか?