身份验证与授权
本页概述了 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
的错误。
-
- 用户认证提供商
-
用户认证提供商允许您将外部定义的用户(例如,在第三方身份提供商(如 OIDC 或 LDAP)中的用户)链接到 Neo4j 内部用户模型。更多信息,请参阅用户认证提供商。
- LDAP 认证提供商
-
通过外部安全软件(如 Active Directory 或 OpenLDAP)控制身份验证和授权,这些软件通过内置的 LDAP 连接器访问。使用 Active Directory 的 LDAP 插件的描述可在与 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 中的基于角色的访问控制相关:
- 活动用户
-
在系统中处于活动状态并可以根据任何分配的角色对数据执行操作的用户。这与被暂停的用户相对。
- 管理员
-
被分配了 admin 角色的用户。
- 认证提供商
-
附加到用户的属性,定义该用户要使用的身份验证和授权配置。
- 身份验证
-
验证用户身份的过程,通常使用凭证(如用户名和密码)或加密令牌(如 JWT)。
- 授权
-
根据用户已验证的身份,确定其在 Neo4j 中的访问权限和特权的过程。
- 当前用户
-
这是当前登录并调用命令的用户。
- 密码策略
-
密码策略是一组关于有效密码构成规则。对于 Neo4j,适用以下规则:
-
密码不能为空字符串。
-
更改密码时,新密码不能与旧密码相同。
-
密码长度必须至少为 8 个字符。
-
- 角色
-
一组权限的集合,使用户能够对数据执行特定操作。一个用户可以拥有多个角色。
- 暂停用户
-
被暂停的用户无法以任何身份访问数据库,无论其被分配了任何角色。
- 用户
-
-
用户由用户名和凭证组成,凭证是验证用户身份的信息单位,例如密码。
-
用户可以代表人、应用程序等。
-