用户权限管理 #

一、安全概述 #

1.1 Neo4j安全特性 #

text
安全特性:
├── 用户认证
├── 角色授权
├── 权限控制
├── 数据库访问控制
└── 图访问控制

1.2 认证方式 #

方式 说明
本地认证 Neo4j内置用户管理
LDAP 企业目录服务集成
OIDC OpenID Connect集成
Kerberos 企业单点登录

二、用户管理 #

2.1 创建用户 #

cypher
CREATE USER tom SET PASSWORD 'password123'

2.2 创建用户并要求修改密码 #

cypher
CREATE USER tom SET PASSWORD 'password123' CHANGE REQUIRED

2.3 修改密码 #

cypher
ALTER USER tom SET PASSWORD 'newpassword123'

2.4 修改其他用户密码 #

cypher
ALTER USER tom SET PASSWORD 'newpassword123' CHANGE REQUIRED

2.5 禁用用户 #

cypher
ALTER USER tom SET STATUS SUSPENDED

2.6 启用用户 #

cypher
ALTER USER tom SET STATUS ACTIVE

2.7 删除用户 #

cypher
DROP USER tom

2.8 查看所有用户 #

cypher
SHOW USERS

2.9 查看当前用户 #

cypher
SHOW CURRENT USER

三、角色管理 #

3.1 内置角色 #

角色 权限
PUBLIC 基本访问权限
READER 只读权限
EDITOR 读写权限
PUBLISHER 读写+创建标签
ARCHITECT 完全访问权限
ADMIN 管理员权限

3.2 创建角色 #

cypher
CREATE ROLE developer

3.3 复制角色 #

cypher
CREATE ROLE developer AS COPY OF editor

3.4 删除角色 #

cypher
DROP ROLE developer

3.5 查看所有角色 #

cypher
SHOW ROLES

3.6 查看角色权限 #

cypher
SHOW ROLE PRIVILEGES

四、权限管理 #

4.1 授予角色 #

cypher
GRANT ROLE editor TO tom

4.2 授予多个角色 #

cypher
GRANT ROLE editor, publisher TO tom

4.3 撤销角色 #

cypher
REVOKE ROLE editor FROM tom

4.4 授予数据库访问权限 #

cypher
GRANT ACCESS ON DATABASE neo4j TO tom

4.5 授予只读权限 #

cypher
GRANT TRAVERSE ON GRAPH neo4j TO reader
GRANT MATCH {*} ON GRAPH neo4j TO reader

4.6 授予写权限 #

cypher
GRANT CREATE {*} ON GRAPH neo4j TO editor
GRANT DELETE {*} ON GRAPH neo4j TO editor

4.7 授予特定标签权限 #

cypher
GRANT TRAVERSE ON GRAPH neo4j NODES Person TO reader
GRANT MATCH {name} ON GRAPH neo4j NODES Person TO reader

4.8 授予特定关系权限 #

cypher
GRANT TRAVERSE ON GRAPH neo4j RELATIONSHIPS KNOWS TO reader

4.9 撤销权限 #

cypher
REVOKE ACCESS ON DATABASE neo4j FROM tom
REVOKE MATCH {*} ON GRAPH neo4j FROM reader

4.10 查看用户权限 #

cypher
SHOW USER PRIVILEGES

五、数据库权限 #

5.1 数据库访问权限 #

cypher
GRANT ACCESS ON DATABASE neo4j TO tom
GRANT ACCESS ON DATABASE * TO admin_user

5.2 数据库管理权限 #

cypher
GRANT CREATE DATABASE ON DBMS TO admin
GRANT DROP DATABASE ON DBMS TO admin
GRANT SHOW DATABASE ON DBMS TO admin

5.3 数据库操作权限 #

cypher
GRANT START DATABASE ON DATABASE neo4j TO admin
GRANT STOP DATABASE ON DATABASE neo4j TO admin

六、图权限 #

6.1 图访问权限 #

cypher
GRANT ACCESS ON GRAPH neo4j TO reader

6.2 节点权限 #

cypher
GRANT TRAVERSE ON GRAPH neo4j NODES Person TO reader
GRANT MATCH {*} ON GRAPH neo4j NODES Person TO reader
GRANT CREATE ON GRAPH neo4j NODES Person TO editor
GRANT DELETE ON GRAPH neo4j NODES Person TO editor

6.3 关系权限 #

cypher
GRANT TRAVERSE ON GRAPH neo4j RELATIONSHIPS KNOWS TO reader
GRANT CREATE ON GRAPH neo4j RELATIONSHIPS KNOWS TO editor
GRANT DELETE ON GRAPH neo4j RELATIONSHIPS KNOWS TO editor

6.4 属性权限 #

cypher
GRANT MATCH {name, age} ON GRAPH neo4j NODES Person TO reader
GRANT SET PROPERTY {name, age} ON GRAPH neo4j NODES Person TO editor

七、权限组合 #

7.1 创建只读用户 #

cypher
CREATE USER readonly_user SET PASSWORD 'password123' CHANGE REQUIRED
GRANT ROLE reader TO readonly_user
GRANT ACCESS ON DATABASE neo4j TO readonly_user
GRANT TRAVERSE ON GRAPH neo4j TO readonly_user
GRANT MATCH {*} ON GRAPH neo4j TO readonly_user

7.2 创建编辑用户 #

cypher
CREATE USER editor_user SET PASSWORD 'password123' CHANGE REQUIRED
GRANT ROLE editor TO editor_user
GRANT ACCESS ON DATABASE neo4j TO editor_user
GRANT ALL ON GRAPH neo4j TO editor_user

7.3 创建管理员 #

cypher
CREATE USER admin_user SET PASSWORD 'password123' CHANGE REQUIRED
GRANT ROLE admin TO admin_user

八、安全最佳实践 #

8.1 密码策略 #

text
建议:
├── 使用强密码
├── 定期更换密码
├── 首次登录强制修改
├── 禁用默认密码
└── 使用密码管理器

8.2 最小权限原则 #

text
原则:
├── 只授予必要的权限
├── 使用角色管理权限
├── 定期审查权限
├── 及时撤销不需要的权限
└── 避免过度授权

8.3 用户管理 #

text
建议:
├── 禁用默认用户neo4j或修改密码
├── 为每个用户创建独立账户
├── 禁用离职员工账户
├── 记录用户操作日志
└── 定期审计用户列表

九、实际应用示例 #

9.1 应用程序用户 #

cypher
CREATE USER app_user SET PASSWORD 'secure_password' CHANGE REQUIRED
GRANT ROLE editor TO app_user
GRANT ACCESS ON DATABASE production TO app_user
GRANT ALL ON GRAPH production TO app_user

9.2 分析师用户 #

cypher
CREATE USER analyst_user SET PASSWORD 'secure_password' CHANGE REQUIRED
GRANT ROLE reader TO analyst_user
GRANT ACCESS ON DATABASE analytics TO analyst_user
GRANT TRAVERSE ON GRAPH analytics TO analyst_user
GRANT MATCH {*} ON GRAPH analytics TO analyst_user

9.3 多租户权限 #

cypher
CREATE USER tenant_a_user SET PASSWORD 'password' CHANGE REQUIRED
GRANT ACCESS ON DATABASE tenant_a TO tenant_a_user
GRANT ALL ON GRAPH tenant_a TO tenant_a_user

CREATE USER tenant_b_user SET PASSWORD 'password' CHANGE REQUIRED
GRANT ACCESS ON DATABASE tenant_b TO tenant_b_user
GRANT ALL ON GRAPH tenant_b TO tenant_b_user

十、总结 #

用户权限管理要点:

操作 语法 说明
创建用户 CREATE USER name SET PASSWORD ‘pwd’ 创建用户
授予角色 GRANT ROLE role TO user 授予角色
授予权限 GRANT ACCESS ON DATABASE db TO user 授予数据库访问权限
撤销权限 REVOKE ACCESS ON DATABASE db FROM user 撤销权限
查看用户 SHOW USERS 查看所有用户

最佳实践:

  1. 使用强密码策略
  2. 遵循最小权限原则
  3. 使用角色管理权限
  4. 定期审计用户和权限
  5. 及时禁用不需要的账户

下一步,让我们学习备份与恢复!

最后更新:2026-03-27