用户权限管理 #

一、用户管理概述 #

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