グラフ・サンドボックスの構成
グラフ・サンドボックスの構成方法。
DSE Graphには、デフォルトで有効になっているサンドボックス・ルールがあり、DSEインスタンスに悪影響を与える可能性のある悪意のあるコードがJVM内で実行されるのを防ぎます。
注: グラフ・サンドボックスは、DSE 5.0.11以降、DSE 5.1.4以降、およびDSE 6.0.0では、デフォルトで有効になっています。
サンドボックス・ルールは、ブラックリスト(実行禁止)とホワイトリスト(実行許可)の両方のパッケージ、スーパークラスおよびタイプに定義されています。dse.yamlファイルのデフォルトのサンドボックス・ルールはオーバーライドされる場合があります。サンドボックス・ルールは以下の順で適用されます。 - blacklist_supers(リスト項目を実装または拡張するすべてのクラスを含む)
- blacklist_packages(すべてのサブパッケージを含む)
- whitelist_packages(すべてのサブパッケージを含む)
- whitelist_types(サブクラスは含まず、指定されたタイプのみを含む)
- whitelist_supers(リスト項目を実装または拡張するすべてのクラスを含む)
重要: 次の2つのクラスはブラックリストとしてハードコードされており、ホワイトリストに登録することはできません。
- java.lang.System:currentTimeMillisとnanoTime以外のすべてのメソッドはブロックされます(ブラックリストに登録)。
- java.lang.Thread:currentThread().isInterruptedは、toStringを使用してラップされたスレッドを返すことができる許可されたメソッドで、sleepは別の許可されたメソッドであり、他のすべてのメソッドは許可されません。
dse.yamlファイルの
gremlin_server
セクションにおいて、ホワイトリストとブラックリストに登録されている可能性のある項目の例を以下に示します。gremlin_server:
port: 8182
threadPoolWorker: 2
gremlinPool: 0
scriptEngines:
gremlin-groovy:
config:
# sandbox_enabled: false
sandbox_rules:
whitelist_packages:
- org.apache.tinkerpop.gremlin.process
- java.nio
whitelist_types:
- java.lang.String
- java.lang.Boolean
- com.datastax.bdp.graph.spark.SparkSnapshotBuilderImpl
- com.datastax.dse.graph.api.predicates.Search
whitelist_supers:
- groovy.lang.Script
- java.lang.Number
- java.util.Map
- org.apache.tinkerpop.gremlin.process.computer.GraphComputer
blacklist_packages:
- java.io
- org.apache.tinkerpop.gremlin.structure.io
- org.apache.tinkerpop.gremlin.groovy.jsr223
- java.nio.channels
blacklist_supers:
- java.lang.System
- java.io.File
- org.apache.tinkerpop.gremlin.structure.Transaction
dse.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストールInstaller-Servicesインストール |
/etc/dse/dse.yaml |
tarボール・インストールInstaller-No Servicesインストール |
installation_location/resources/dse/conf/dse.yaml |