グラフ・サンドボックスの構成

グラフ・サンドボックスの構成方法。

DSE Graphには、デフォルトで有効になっているサンドボックス・ルールがあり、DSEインスタンスに悪影響を与える可能性のある悪意のあるコードがJVM内で実行されるのを防ぎます。
注: グラフ・サンドボックスは、DSE 5.0.11以降、DSE 5.1.4以降、およびDSE 6.0.0では、デフォルトで有効になっています。
サンドボックス・ルールは、ブラックリスト(実行禁止)とホワイトリスト(実行許可)の両方のパッケージ、スーパークラスおよびタイプに定義されています。dse.yamlファイルのデフォルトのサンドボックス・ルールはオーバーライドされる場合があります。サンドボックス・ルールは以下の順で適用されます。
  1. blacklist_supers(リスト項目を実装または拡張するすべてのクラスを含む)
  2. blacklist_packages(すべてのサブパッケージを含む)
  3. whitelist_packages(すべてのサブパッケージを含む)
  4. whitelist_types(サブクラスは含まず、指定されたタイプのみを含む)
  5. 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