身份验证与授权

本页面概述了 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 身份验证提供程序

通过内置的 LDAP 连接器,使用 Active Directory 或 OpenLDAP 等外部安全软件来控制身份验证和授权。有关使用 Active Directory 的 LDAP 插件的说明,请参阅 与 LDAP 目录服务集成

单点登录 (SSO) 提供程序

与 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 提供了一组内置角色,并允许您创建具有特定权限的自定义角色。您还可以使用子图访问控制,通过该控制,图的读取权限可以限定为标签、关系类型和属性的特定组合。

本页所述的功能适用于企业版 (Enterprise Edition)。社区版 (Community Edition) 也提供了一组有限的用户管理功能。内置角色功能 提供了这些功能的快速概述。

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

术语表

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

活动用户 (active user)

在系统中处于活动状态,并能够执行任何已分配角色所规定的数据操作的用户。这与挂起用户相对。

管理员 (administrator)

已被分配 admin 角色的用户。

身份验证提供程序 (auth provider)

附加在用户上的属性,用于定义该用户使用的身份验证和授权配置。

身份验证 (authentication)

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

授权 (authorization)

基于验证后的身份,确定用户在 Neo4j 中的访问权限和特权的过程。

当前用户 (current user)

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

密码策略 (password policy)

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

  • 密码不能为空字符串。

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

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

角色 (role)

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

挂起用户 (suspended user)

已被挂起的用户,无论分配了什么角色,都无法以任何身份访问数据库。

用户 (user)
  • 用户由用户名和凭据组成,后者是验证用户身份的信息单元(例如密码)。

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