身份验证和授权

本页面概述了 Neo4j 中的身份验证和授权。

身份验证

身份验证是验证用户身份的过程。Neo4j 具有以下身份验证 (auth) 提供者,可以执行用户和角色身份验证

本机身份验证提供者

Neo4j 提供一个本机身份验证提供者,它将用户和角色信息存储在 system 数据库中。以下参数控制此提供者

  • dbms.security.auth_enabled (默认值:true) — 启用访问 Neo4j 的身份验证要求。

    如果您需要禁用身份验证,请确保在恢复阶段阻止所有网络连接,以便用户只能通过 localhost 连接到 Neo4j。例如,如果您需要恢复 admin 用户密码或将用户分配到 admin 角色,则需要执行此操作。有关更多信息,请参阅 密码和用户恢复
  • dbms.security.auth_lock_time (默认值:5s) — 用户帐户在配置的失败身份验证尝试次数后被锁定的时间。

  • dbms.security.auth_max_failed_attempts (默认值:3) — 在对用户锁定实施配置时间之前,允许的失败身份验证尝试次数。
    触发时,Neo4j 会在 *security.log* 中记录包含时间戳和消息 failed to log in: too many failed attempts 的错误。

有关相关的 Cypher 命令,请参阅 管理用户语法管理角色语法管理权限语法。在 细粒度访问控制(示例) 中提供了说明使用本机身份验证提供程序的各种场景。

用户身份验证提供者

用户身份验证提供程序允许您将外部定义的用户(例如,在第三方身份提供程序(如 OIDC 或 LDAP)中)链接到 Neo4j 内部用户模型。有关详细信息,请参阅 用户身份验证提供程序

LDAP 身份验证提供程序

通过外部安全软件(如 Active Directory 或 OpenLDAP)控制身份验证和授权,这些软件通过内置的 LDAP 连接器访问。在 与 LDAP 目录服务的集成 中提供了使用 Active Directory 的 LDAP 插件的说明。

单点登录提供程序

与单点登录服务(如 Okta、Auth0 或 Microsoft Entra ID)集成,为所有系统提供集中式身份验证和授权。Neo4j 支持流行的 OpenID Connect 机制,以与身份提供程序集成。配置步骤在 单点登录集成 中进行了描述。

自定义构建的插件身份验证提供程序

用于构建自定义集成的插件选项。建议将此选项用作与 Neo4j 专业服务 协商的自定义交付的一部分。有关详细信息,请参阅 Java 参考 → 身份验证和授权插件

Kerberos 身份验证和单点登录

除了 LDAP、本机和自定义提供程序之外,Neo4j 还支持 Kerberos 进行身份验证和单点登录。Kerberos 支持通过 Neo4j Kerberos 附加组件 提供。

混合模式身份验证

Neo4j 还支持混合模式身份验证,允许您在数据库设置中使用多个身份验证提供程序。有关详细信息和示例,请参阅 将 Neo4j 设置为使用 LDAP配置 Neo4j 以使用 OpenID Connect

授权

授权是确定用户是否允许执行特定操作的过程。授权使用基于角色的访问控制 (RBAC) 进行管理。RBAC 是一种限制授权用户访问的方法。它是一种将权限分配给角色,然后将角色分配给用户的方法。这简化了用户管理,因为权限分配给角色而不是分配给单个用户。角色根据其底层的 *权限* 定义,可以使用本章中描述的 Cypher 命令添加或删除这些访问权限来修改角色。

Neo4j 提供了一组 内置角色,还允许您创建具有特定权限的自定义角色。您还可以使用 *子图* 访问控制,通过该控制,可以将对图的读取访问权限限制为标签、关系类型和属性的特定组合。

这些页面中描述的功能适用于企业版。社区版也提供了一组有限的用户管理功能。内置角色功能 对此进行了简要概述。

Neo4j 安全模型存储在系统图中,该系统图在 system 数据库 中维护。所有管理命令都需要针对它执行。当通过 配置网络连接器 连接到 DBMS 时,管理命令会自动路由到 system 数据库。

术语

以下术语与 Neo4j 中的基于角色的访问控制相关

活动用户

系统中处于活动状态的用户,可以对数据执行任何分配角色所规定的操作。这与挂起用户形成对比。

管理员

已分配管理员角色的用户。

身份验证提供程序

附加到用户的属性,这些属性定义了该用户要使用哪个身份验证和授权配置。

身份验证

验证用户身份的过程,通常使用凭据(如用户名和密码)或加密令牌(如 JWT)。

授权

根据已验证的身份,确定用户在 Neo4j 中的访问权限和特权的过程。

当前用户

正在调用命令的当前登录用户。

密码策略

密码策略是一组关于构成有效密码的规则。对于 Neo4j,适用以下规则

  • 密码不能是空字符串。

  • 更改密码时,新密码不能与旧密码相同。

  • 密码长度必须至少为 8 个字符。

角色

一组权限,使用户能够对数据执行特定操作。用户可以拥有多个角色。

挂起用户

被挂起的用户无法以任何方式访问数据库,无论分配了哪些角色。

用户
  • 用户由用户名和凭据组成,其中凭据是用于验证用户身份的信息单元,例如密码。

  • 用户可以代表人、应用程序等。