安全检查清单

以下清单重点介绍了 Neo4j 中可能需要额外注意的特定区域,以确保在部署 Neo4j 后为您的应用程序提供适当的安全级别。

  1. 在安全网络中的安全服务器上部署 Neo4j

    1. 使用子网和防火墙来分割网络。

      flat vs segmented network

    2. 仅打开您需要的端口。有关相关端口列表,请参阅 端口

      特别确保没有对设置 dbms.backup.listen_address 指定的端口进行外部访问。未保护此端口可能会打开安全漏洞,通过该漏洞未经授权的用户可以将数据库复制到其他机器上。

  2. 保护静态数据

    1. 使用卷加密(例如,Bitlocker)。

    2. 管理对数据库转储和备份的访问。有关更多信息,请参阅 备份脱机数据库 和备份 备份联机数据库

    3. 通过确保 Neo4j 文件的正确文件权限来管理对配置文件、数据文件和事务日志的访问。有关权限级别的说明,请参阅 文件权限

  3. 保护传输中的数据

    1. 对于对 Neo4j 数据库的远程访问,仅使用加密的 Bolt 或 HTTPS。

    2. 使用从受信任的证书颁发机构颁发的 SSL 证书。

    3. 有关将您的 Neo4j 安装配置为使用加密通信,请参阅 SSL 框架

    4. 如果使用集群,请为集群内通信配置和使用加密。有关详细信息,请参阅 集群内加密

    5. 如果使用集群,请为备份配置和使用加密。这确保只有具有指定 SSL 策略和 SSL 证书的服务器才能访问服务器并执行备份。

    6. 有关配置 Bolt 和 HTTPS 连接器,请参阅 配置连接器

    7. 如果使用 LDAP,请使用 StartTLS 通过加密配置您的 LDAP 系统。有关更多信息,请参阅使用 StartTLS 通过加密配置 LDAP

  4. 关注自定义扩展的安全问题。

    1. 验证您部署的任何自定义代码(过程和非托管扩展),并确保它们不会无意中泄露产品的任何部分或数据。

    2. 检查设置dbms.security.procedures.unrestricteddbms.security.procedures.allowlist,确保它们只包含有意公开的扩展。

  5. 确保您对 Neo4j 文件具有正确的文件权限

  6. 通过限制对 binlibplugins 目录的访问来防止执行未经授权的扩展。只有运行 Neo4j 的操作系统用户应该对这些文件具有权限。有关权限级别的说明,请参阅文件权限

  7. 在启用 LOAD CSV 的情况下,请确保它不允许未经授权的用户导入数据。有关如何配置 LOAD CSV 的说明,请参阅Cypher 手册 → LOAD CSV

  8. 使用 Neo4j 身份验证。设置dbms.security.auth_enabled控制本地身份验证。默认值为 true

  9. neo4j.conf 文件中检查您在JVM 特定配置设置中与已弃用功能相关的端口,例如远程 JMX(由参数设置 dbms.jvm.additional=-Dcom.sun.management.jmxremote.port=3637 控制)。

  10. 查看浏览器凭据处理,以确定 Neo4j 浏览器中的默认凭据处理是否符合您的安全法规。如有必要,请按照说明进行配置。

  11. 使用 Neo4j 的最新补丁版本,并在发布安全公告时建立更新流程。