用户权限管理 #
一、用户管理概述 #
1.1 安全模型 #
text
OrientDB安全模型:
├── User(用户)- 访问数据库的身份
├── Role(角色)- 权限的集合
└── Permission(权限)- 具体操作权限
1.2 内置用户 #
| 用户 | 说明 |
|---|---|
| root | 超级管理员 |
| admin | 数据库管理员 |
| reader | 只读用户 |
| writer | 读写用户 |
1.3 内置角色 #
| 角色 | 权限 |
|---|---|
| admin | 完全控制权限 |
| reader | 读取权限 |
| writer | 读写权限 |
二、用户管理 #
2.1 创建用户 #
sql
INSERT INTO OUser SET name = 'tom', password = 'password123', status = 'ACTIVE'
2.2 创建用户并分配角色 #
sql
INSERT INTO OUser SET
name = 'tom',
password = 'password123',
status = 'ACTIVE',
roles = (SELECT FROM ORole WHERE name = 'reader')
2.3 查看所有用户 #
sql
SELECT FROM OUser
SELECT name, status, roles.name FROM OUser
2.4 查看用户详情 #
sql
SELECT * FROM OUser WHERE name = 'tom'
2.5 修改密码 #
sql
UPDATE OUser SET password = 'newPassword123' WHERE name = 'tom'
2.6 禁用用户 #
sql
UPDATE OUser SET status = 'SUSPENDED' WHERE name = 'tom'
2.7 启用用户 #
sql
UPDATE OUser SET status = 'ACTIVE' WHERE name = 'tom'
2.8 删除用户 #
sql
DELETE FROM OUser WHERE name = 'tom'
三、角色管理 #
3.1 创建角色 #
sql
INSERT INTO ORole SET
name = 'developer',
mode = 0,
inheritedRole = (SELECT FROM ORole WHERE name = 'writer')
3.2 角色模式 #
| 模式 | 说明 |
|---|---|
| 0 | 允许除指定外的所有操作 |
| 1 | 拒绝除指定外的所有操作 |
3.3 查看所有角色 #
sql
SELECT FROM ORole
SELECT name, mode, rules FROM ORole
3.4 查看角色详情 #
sql
SELECT * FROM ORole WHERE name = 'developer'
3.5 删除角色 #
sql
DELETE FROM ORole WHERE name = 'developer'
四、权限类型 #
4.1 权限列表 #
| 权限 | 说明 |
|---|---|
| CREATE | 创建记录 |
| READ | 读取记录 |
| UPDATE | 更新记录 |
| DELETE | 删除记录 |
| EXECUTE | 执行函数 |
| ALL | 所有权限 |
4.2 权限级别 #
| 级别 | 说明 |
|---|---|
| NONE | 无权限 |
| READ | 读取权限 |
| READ_WRITE | 读写权限 |
| ALL | 完全权限 |
五、权限分配 #
5.1 授予数据库权限 #
sql
GRANT ALL ON DATABASE TO developer
GRANT READ ON DATABASE TO reader
5.2 授予类权限 #
sql
GRANT ALL ON Person TO developer
GRANT READ ON Person TO reader
GRANT READ, UPDATE ON Person TO editor
5.3 授予集群权限 #
sql
GRANT ALL ON CLUSTER:person_cluster TO developer
GRANT READ ON CLUSTER:person_cluster TO reader
5.4 授予函数权限 #
sql
GRANT EXECUTE ON FUNCTION:calculateAge TO developer
GRANT EXECUTE ON FUNCTION:* TO admin
5.5 批量授权 #
sql
GRANT ALL ON Person, Company, Order TO developer
六、权限撤销 #
6.1 撤销数据库权限 #
sql
REVOKE ALL ON DATABASE FROM developer
REVOKE READ ON DATABASE FROM reader
6.2 撤销类权限 #
sql
REVOKE ALL ON Person FROM developer
REVOKE DELETE ON Person FROM writer
6.3 撤销集群权限 #
sql
REVOKE ALL ON CLUSTER:person_cluster FROM developer
6.4 撤销函数权限 #
sql
REVOKE EXECUTE ON FUNCTION:calculateAge FROM developer
七、用户角色分配 #
7.1 分配角色给用户 #
sql
UPDATE OUser ADD roles = (SELECT FROM ORole WHERE name = 'developer') WHERE name = 'tom'
7.2 移除用户角色 #
sql
UPDATE OUser REMOVE roles = (SELECT FROM ORole WHERE name = 'developer') WHERE name = 'tom'
7.3 设置用户角色 #
sql
UPDATE OUser SET roles = (SELECT FROM ORole WHERE name IN ['reader', 'writer']) WHERE name = 'tom'
八、权限规则 #
8.1 添加权限规则 #
sql
UPDATE ORole PUT rules = 'Person', 15 WHERE name = 'developer'
权限值说明:
| 值 | 权限 |
|---|---|
| 1 | CREATE |
| 2 | READ |
| 4 | UPDATE |
| 8 | DELETE |
| 15 | ALL (1+2+4+8) |
8.2 查看权限规则 #
sql
SELECT name, rules FROM ORole WHERE name = 'developer'
8.3 删除权限规则 #
sql
UPDATE ORole REMOVE rules['Person'] WHERE name = 'developer'
九、实际应用示例 #
9.1 创建应用用户 #
sql
INSERT INTO ORole SET
name = 'app_user',
mode = 1,
inheritedRole = (SELECT FROM ORole WHERE name = 'reader')
GRANT READ, UPDATE ON User TO app_user
GRANT READ ON Product TO app_user
GRANT CREATE ON Order TO app_user
GRANT READ ON Order TO app_user WHERE createdBy = $currentUser
INSERT INTO OUser SET
name = 'app_service',
password = 'securePassword123!',
status = 'ACTIVE',
roles = (SELECT FROM ORole WHERE name = 'app_user')
9.2 创建只读用户 #
sql
INSERT INTO OUser SET
name = 'report_user',
password = 'reportPassword123',
status = 'ACTIVE',
roles = (SELECT FROM ORole WHERE name = 'reader')
9.3 创建管理员用户 #
sql
INSERT INTO OUser SET
name = 'db_admin',
password = 'adminPassword123!',
status = 'ACTIVE',
roles = (SELECT FROM ORole WHERE name = 'admin')
9.4 行级权限 #
sql
CREATE CLASS SecurityPolicy EXTENDS V
CREATE PROPERTY SecurityPolicy.resource STRING
CREATE PROPERTY SecurityPolicy.condition STRING
INSERT INTO SecurityPolicy SET
resource = 'Order',
condition = 'createdBy = $currentUser'
GRANT READ ON Order TO app_user WHERE createdBy = $currentUser
十、安全最佳实践 #
10.1 密码策略 #
text
密码策略建议:
├── 使用强密码
├── 定期更换密码
├── 避免使用默认密码
├── 密码加密存储
└── 使用密码哈希
10.2 最小权限原则 #
text
最小权限原则:
├── 只授予必要的权限
├── 使用角色管理权限
├── 定期审查权限
└── 及时撤销不需要的权限
10.3 安全配置 #
text
安全配置建议:
├── 修改默认root密码
├── 禁用不需要的用户
├── 启用SSL/TLS
├── 限制网络访问
└── 启用审计日志
十一、审计日志 #
11.1 启用审计 #
sql
ALTER DATABASE SET security.audit = true
11.2 查看审计日志 #
sql
SELECT FROM OAuditingLog
SELECT FROM OAuditingLog ORDER BY timestamp DESC LIMIT 100
11.3 审计日志过滤 #
sql
SELECT FROM OAuditingLog
WHERE operation = 'CREATE'
ORDER BY timestamp DESC
十二、总结 #
用户权限管理要点:
| 操作 | 语法 | 说明 |
|---|---|---|
| 创建用户 | INSERT INTO OUser | 创建新用户 |
| 创建角色 | INSERT INTO ORole | 创建新角色 |
| 授予权限 | GRANT … ON … TO | 授予权限 |
| 撤销权限 | REVOKE … ON … FROM | 撤销权限 |
| 分配角色 | UPDATE OUser ADD roles | 分配角色 |
下一步,让我们学习备份与恢复!
最后更新:2026-03-27