安全清单
以下清单重点介绍了 Neo4j 中可能需要额外关注的特定领域,以确保在部署 Neo4j 后,您的应用程序具有适当的安全级别。
-
在安全服务器和安全网络中部署 Neo4j
-
使用子网和防火墙来划分网络。
-
仅打开您需要的端口。有关相关端口列表,请参阅端口。
特别是,确保外部无法访问由设置
dbms.backup.listen_address
指定的端口。未能保护此端口可能会打开一个安全漏洞,未经授权的用户可以通过该漏洞将数据库复制到其他机器。
-
-
保护静态数据
-
保护传输中的数据
-
对于对 Neo4j 数据库的远程访问,仅使用加密的 Bolt 或 HTTPS。
-
使用由受信任的证书颁发机构颁发的 SSL 证书。
-
有关配置 Neo4j 安装以使用加密通信的信息,请参阅SSL 框架。
-
如果使用集群,请配置并使用加密进行集群内部通信。有关详细信息,请参阅集群内部加密。
-
如果使用集群,请配置并使用加密进行备份。这确保只有具有指定 SSL 策略和 SSL 证书的服务器才能访问服务器并执行备份。
-
有关配置 Bolt 和 HTTPS 连接器,请参阅配置网络连接器。
-
如果使用 LDAP,请通过 StartTLS 配置您的 LDAP 系统加密。有关更多信息,请参阅通过 StartTLS 使用加密的 LDAP。
-
-
掌握自定义扩展的安全性
-
验证您部署的任何自定义代码(存储过程和非托管扩展),并确保它们不会无意中暴露产品或数据的任何部分。
-
检查设置
dbms.security.procedures.unrestricted
和dbms.security.procedures.allowlist
,以确保它们仅包含有意公开的扩展。
-
-
确保您对 Neo4j 文件具有正确的文件权限。
-
通过限制对 bin、lib 和 plugins 目录的访问来防止未经授权的扩展执行。只有 Neo4j 运行所用的操作系统用户才应具有这些文件的权限。有关权限级别,请参阅文件权限中的说明。
-
如果启用了
LOAD CSV
,请确保它不允许未经授权的用户导入数据。如何配置LOAD CSV
在Cypher 手册 →LOAD CSV
中进行了描述。 -
使用 Neo4j 身份验证。设置
dbms.security.auth_enabled
控制原生身份验证。默认值为true
。 -
检查 neo4j.conf 文件中与已弃用功能相关的端口的JVM 特定配置设置,例如远程 JMX(由参数设置
dbms.jvm.additional=-Dcom.sun.management.jmxremote.port=3637
控制)。 -
查看浏览器凭据处理,以确定 Neo4j Browser 中的默认凭据处理是否符合您的安全规定。如有必要,请按照说明进行配置。
-
使用 Neo4j 的最新补丁版本,并建立发布安全公告时进行更新的流程。