身份验证与授权企业版
本页面概述了 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 身份验证提供程序
-
通过内置的 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)
-
-
用户由用户名和凭据组成,后者是验证用户身份的信息单元(例如密码)。
-
用户可以代表人类、应用程序等。
-