19 セキュアなスクリプト実行の構成
JavaScriptまたはGroovyでのスクリプトの直接入力をサポートするプロセッサは、EDQサーバーでの実行時にJavaクラスに直接アクセスして機密操作を実行できるため、セキュリティ上の問題が発生しました。この問題に対処するため、14.1.2.0.0より前のEDQバージョンは、セキュアなスクリプト実行のためにJava Security Managerフレームワークを使用するように構成できます。ただし、この機能はJDKバージョン17以降では非推奨です。
EDQ 14.1.2では、直接入力スクリプト・プロセッサおよびガジェットの動作を制御するためのscriptprocessor.security
という構成プロパティが導入されています。scriptprocessor.security
がtrue
に設定されている場合、EDQは次の動作を示します:
- Groovyスクリプトは許可されません。Javaクラスの直接使用を防ぐためにGroovyをサンドボックス化できなくなりました。
- JavaScriptスクリプトは、Javaクラスを直接参照できません。
- スクリプトは、importClassおよびimportClassSet関数を使用できません。
- デフォルトでは、スクリプトは(addLibraryによってロードされる)スクリプト・ライブラリを使用できません。
この拡張は、直接入力スクリプト・プロセッサおよびガジェットでのスクリプトの使用にのみ適用されます。スクリプトの他のすべての使用(トリガーなど)には影響しません。
スクリプトでのライブラリの使用
スクリプト・プロセッサのセキュリティが有効な場合、スクリプトは、EDQで提供されるどのスクリプト・ライブラリもロードできません。選択したライブラリの使用を有効にするには、localconfig/security/scripting
にlibraries.json
という名前のファイルを作成します。このJSONファイルには、ライブラリ名をキーとするオブジェクトが含まれている必要があります。各キーに関連付けられた値は、available属性を含むオブジェクトです。これがtrue
の場合、スクリプトでライブラリを使用できます。
例:
{ "logging": {"available": true},
"oci": {"available": true}
}
無限ループの防止
Javaクラスのセキュアでない直接使用以外に、ユーザーが無限ループを作成できる直接入力スクリプトに関する別の問題があります。プロセッサが実行されると、EDQサーバーは無期限に応答しない場合があります。
このようなループから保護するには、スクリプト・プロセッサのセキュリティを有効にするときに、次の追加プロパティを使用します:
script.processor.statement.limit = LIMIT
これにより、スクリプトの1回の呼出しで実行できるスクリプト文の数に制限が設定されます。制限を超えると、スクリプトは失敗します。場合によっては、JavaScript文をチューニングおよび最適化して、有効なスクリプトに対してエラーを生成しない値に設定する必要があることに注意してください。