扩展安全
Neo4j 可以通过编写自定义代码来扩展,这些代码可以从 Cypher 中直接调用,如 Java 参考 → 用户定义过程 和 Java 参考 → 用户定义函数 中所述。本页介绍如何确保这些新增内容的安全。
允许列表
允许列表可用于仅允许从较大库中加载少量扩展。建议使用最小权限原则加载扩展。此原则规定您只加载执行查询所需的那些过程和函数。
配置设置 dbms.security.procedures.allowlist
用于命名应从库中提供的某些过程和函数。它定义了一个逗号分隔的过程和函数列表,这些过程和函数将被加载。列表中可以包含完全限定的过程名称,以及使用通配符 *
的部分名称。
在本示例中,我们需要允许使用 apoc.load.json
方法以及 apoc.coll
下的所有方法。我们不想提供来自 apoc
库的任何其他扩展,除了那些匹配这些条件的扩展。
# Example allow listing
dbms.security.procedures.allowlist=apoc.coll.*,apoc.load.json
关于 dbms.security.procedures.allowlist
应注意以下几点:
-
如果使用此设置,除了列出的扩展之外,其他扩展将不会被加载。特别是,如果将其设置为空字符串,则不会加载任何扩展。
|
解除限制
出于安全原因,默认情况下禁用使用内部 API 的过程和函数。在这种情况下,也建议使用最小权限原则,只解除您确信要使用的那些过程和函数。
可以通过配置设置 dbms.security.procedures.unrestricted
来解除对过程和函数的限制。它定义了一个以逗号分隔的过程和函数列表,这些过程和函数将不受限制。该列表可能包含完全限定的过程和函数名称,以及带有通配符 (*
) 表达式的部分名称。
在这个示例中,我们需要解除对过程 apoc.cypher.runFirstColumn
和 apoc.cypher.doIt
的使用限制。
# Example unrestricting
dbms.security.procedures.unrestricted=apoc.cypher.runFirstColumn,apoc.cypher.doIt