身份验证和授权
本页面概述了 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 个字符。
-
- 角色
-
一组权限,使用户能够对数据执行特定操作。用户可以拥有多个角色。
- 挂起用户
-
被挂起的用户无法以任何方式访问数据库,无论分配了哪些角色。
- 用户
-
-
用户由用户名和凭据组成,其中凭据是用于验证用户身份的信息单元,例如密码。
-
用户可以代表人、应用程序等。
-