用户权限管理 #
一、安全概述 #
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 | 查看所有用户 |
最佳实践:
- 使用强密码策略
- 遵循最小权限原则
- 使用角色管理权限
- 定期审计用户和权限
- 及时禁用不需要的账户
下一步,让我们学习备份与恢复!
最后更新:2026-03-27