三权分立
大约 10 分钟
三权分立
开启三权分立后,系统管理、用户授权和安全审计分别由不同管理员负责。任何单个管理员都不能同时完成全部管理操作。
本页介绍的功能自 V2.0.11.1 起提供。

权限类型和职责对应关系如下:
| 管理员 | 全局权限 | 主要职责 |
|---|---|---|
| 系统管理员(DBA) | SYSTEM | 集群运维、系统配置和 DDL 等系统管理操作。 |
| 安全管理员(DSA) | SECURITY | 管理用户和角色,并为普通用户或角色授予权限。 |
| 审计管理员(DAA) | AUDIT | 维护审计规则并查看审计日志。 |
普通用户、角色和数据权限的基本概念及 SQL 语法请参见权限管理(V2.0.7 起)。
1. 使用方式
1.1 配置参数
在 iotdb-system.properties 中设置:
| 参数 | 默认值 | 生效方式 | 说明 |
|---|---|---|---|
enable_separation_of_powers | false | 热加载 | 是否启用三权分立。初始值为 false;仅支持从 false 修改为 true。启用后不能恢复为 false。 |
enable_separation_of_powers=true警告:三权分立启用后不能关闭,原
root用户将立即无法登录。
1.2 初始管理员
首次开启三权分立时,系统自动创建三个内置初始管理员:
| 用户名 | 管理员类型 | 默认全局权限 |
|---|---|---|
sys_admin | 初始系统管理员 | SYSTEM |
security_admin | 初始安全管理员 | SECURITY |
audit_admin | 初始审计管理员 | AUDIT |
三个初始管理员的默认密码均为 TimechoDB@2021。首次登录后,请立即分别修改三个账号的密码。
初始管理员的用户名和密码只能由账号自身修改。初始管理员的对应全局权限不能被撤销。
2. 管理模型
2.1 核心原则
- 同一用户只能拥有
SYSTEM、SECURITY、AUDIT中的一种管理权限,但仍可根据业务需要获得普通数据权限。 - 系统中可以存在多个系统管理员、安全管理员和审计管理员。
SYSTEM权限只能由初始系统管理员授予或撤销。SECURITY权限只能由初始安全管理员授予或撤销。AUDIT权限只能由初始审计管理员授予或撤销。- 新管理员必须先由安全管理员创建为普通用户,再由对应类型的初始管理员授予全局权限。
2.2 普通用户和角色
- 普通用户不拥有
SYSTEM、SECURITY或AUDIT全局权限,只能由安全管理员创建,其普通权限也由安全管理员授予或撤销。 - 角色只能包含普通权限。角色的创建、删除、用户绑定以及角色权限的授予和撤销均由安全管理员负责。
2.3 新增管理员流程
- 使用
security_admin创建新用户。 - 根据目标管理员类型,使用
sys_admin、security_admin或audit_admin登录。 - 为新用户授予
SYSTEM、SECURITY或AUDIT。 - 使用新管理员账号登录,修改创建用户时设置的密码,并确认该账号只能执行对应类型的管理操作。
- 可通过审计日志检查用户创建和权限授予记录。
3. 操作鉴权
3.1 通用功能
用户管理
| 操作 | 系统管理员 | 安全管理员 | 审计管理员 |
|---|---|---|---|
| 创建用户 | 不支持 | 支持 | 不支持 |
| 删除用户 | 不支持 | 可删除普通用户;仅初始安全管理员可删除其他安全管理员 | 不支持 |
| 修改用户密码 | 只能修改自己的密码 | 可修改普通用户密码;初始安全管理员只能修改自己的密码,其他安全管理员可由其修改 | 只能修改自己的密码 |
| 解除用户锁定 | 不支持 | 支持 | 不支持 |
| 修改用户名 | 只能修改自己的用户名 | 可修改普通用户名;初始安全管理员只能修改自己的用户名,其他安全管理员可由其修改 | 只能修改自己的用户名 |
| 设置用户连接数 | 不支持 | 可修改除初始管理员外用户的连接数;初始安全管理员只能修改自己的连接数 | 不支持 |
| 查询用户 | 普通系统管理员只能看到自己;初始系统管理员可查看所有系统管理员 | 可查看所有用户 | 普通审计管理员只能看到自己;初始审计管理员可查看所有审计管理员 |
| 授予或撤销用户全局权限 | 仅初始系统管理员可管理 SYSTEM | 仅初始安全管理员可管理 SECURITY | 仅初始审计管理员可管理 AUDIT |
| 授予或撤销普通用户权限 | 不支持 | 支持 | 不支持 |
| 查询用户权限 | 普通系统管理员只能查看自己;初始系统管理员可查看所有系统管理员 | 可查看所有用户 | 普通审计管理员只能查看自己;初始审计管理员可查看所有审计管理员 |
角色管理
| 操作 | 系统管理员 | 安全管理员 | 审计管理员 |
|---|---|---|---|
| 创建、删除角色 | 不支持 | 支持 | 不支持 |
| 查询角色 | 普通系统管理员只能查看自己的角色;初始系统管理员可查看所有系统管理员的角色 | 支持 | 普通审计管理员只能查看自己的角色;初始审计管理员可查看所有审计管理员的角色 |
| 授予或撤销角色权限 | 不支持 | 支持,仅限普通权限 | 不支持 |
| 授予或撤销用户角色 | 不支持 | 支持 | 不支持 |
| 查询角色权限 | 普通系统管理员只能查看自己角色的权限;初始系统管理员可查看所有系统管理员角色 | 可查看所有角色 | 普通审计管理员只能查看自己角色的权限;初始审计管理员可查看所有审计管理员角色 |
安全审计
| 功能或操作 | 系统管理员 | 安全管理员 | 审计管理员 |
|---|---|---|---|
| 维护和查询审计日志规则 | 不支持 | 不支持 | 支持 |
集群运维
| 功能或操作 | 系统管理员 | 安全管理员 | 审计管理员 |
|---|---|---|---|
| 查看 ConfigNode、DataNode、集群和 Region 信息,迁移 Region | 支持 | 不支持 | 不支持 |
| 查询版本、时间戳、当前用户等通用信息 | 支持 | 具体支持范围参见对应 SQL 说明 | 具体支持范围参见对应 SQL 说明 |
| 刷新、清缓存、设置系统状态、数据修复等集群运维 | 支持 | 不支持 | 不支持 |
| 查看和终止查询 | 支持 | 只能操作自己的查询 | 只能操作自己的查询 |
SET CONFIGURATION | 支持普通系统配置 | 支持标记为 SECURITY 的安全配置 | 支持标记为 AUDIT 的审计配置 |
LOAD CONFIGURATION | 全局禁止 | 全局禁止 | 全局禁止 |
UDF 管理
| 功能或操作 | 系统管理员 | 安全管理员 | 审计管理员 |
|---|---|---|---|
| 创建、删除 UDF | 支持 | 不支持 | 不支持 |
| 展示、使用 UDF | 支持 | 支持 | 支持 |
流处理相关
| 功能或操作 | 系统管理员 | 安全管理员 | 审计管理员 |
|---|---|---|---|
| 创建、删除、修改、启动、停止 Pipe | 支持 | 不支持 | 不支持 |
| 展示 Pipe | 支持 | 仅查看与自己相关的 Pipe | 仅查看与自己相关的 Pipe |
| 创建、删除、展示 Pipe 插件 | 支持 | 不支持 | 不支持 |
| 创建、展示、删除主题以及删除、查看订阅 | 支持 | 不支持 | 不支持 |
| 消费订阅主题 | 根据当前用户的数据权限判断是否允许访问 | 根据当前用户的数据权限判断是否允许访问 | 根据当前用户的数据权限判断是否允许访问 |
数据库管理
| 功能或操作 | 系统管理员 | 安全管理员 | 审计管理员 |
|---|---|---|---|
| 创建、修改、删除数据库 | 可以操作普通数据库,但不能操作审计库 | 需要目标数据库对应的 CREATE、ALTER 或 DROP 权限 | 需要目标数据库对应的 CREATE、ALTER 或 DROP 权限 |
| 展示数据库 | 可以查看普通数据库 | 只能查看有权限访问的普通数据库 | 可以查看审计库以及有权限访问的普通数据库 |
AINode 模型管理
| 功能或操作 | 系统管理员 | 安全管理员 | 审计管理员 |
|---|---|---|---|
| 创建、训练、删除、加载或卸载模型,查看 GPU 资源 | 支持 | 不支持 | 不支持 |
| 模型训练时读取数据 | 需具备待训练数据的查询权限 | 需具备待训练数据的查询权限 | 需具备待训练数据的查询权限 |
| 模型推理查询或使用 | 支持 | 支持 | 支持 |
3.2 树模型专有
管理员使用树模型访问数据时,仍需具备目标路径对应的数据权限。下表列出了不同操作需要的权限。
| 功能 | 操作 | 权限要求 |
|---|---|---|
| 数据生命周期管理 | 设置或取消 TTL | 三类管理员均需目标路径的 WRITE_SCHEMA 权限 |
| 数据生命周期管理 | 展示 TTL | 三类管理员均需目标路径的 READ_SCHEMA 权限 |
| 元数据管理 | 创建、修改、删除或展示序列视图 | 三类管理员均需对应路径的 WRITE_SCHEMA 或 READ_SCHEMA 权限 |
| 元数据管理 | 创建、删除、修改或展示设备与序列 | 三类管理员均需对应路径的 WRITE_SCHEMA 或 READ_SCHEMA 权限 |
| 模板管理 | 创建、挂载、卸载、删除或修改模板 | 系统管理员支持;安全管理员和审计管理员不支持 |
| 模板管理 | 激活、解除或查询模板 | 三类管理员均需对应路径的 WRITE_SCHEMA 或 READ_SCHEMA 权限 |
| 集群管理 | 测试连接、分区槽管理、配额设置等 | 仅系统管理员支持 |
| 任务管理 | 创建、删除或展示 Trigger | 仅系统管理员支持 |
| 任务管理 | 创建、查询或删除连续查询 | 仅系统管理员支持 |
| 数据操作 | LOAD、INSERT 等数据写入 | 三类管理员均需 WRITE_DATA 权限 |
| 数据操作 | 删除或更新数据 | 三类管理员均需 WRITE_DATA 权限 |
| 数据操作 | SELECT、EXPLAIN 等查询 | 三类管理员均需 READ_DATA 权限 |
| 数据操作 | 查询写回 | 三类管理员均需 READ_DATA 和 WRITE_DATA 权限 |
| Pipe 运行时 | 从源路径读取数据 | 执行用户需具备源路径的 READ_DATA 权限 |
4. 操作示例
4.1 创建管理员候选用户
使用表模型 CLI,以 security_admin 登录并创建三个管理员候选用户:
CREATE USER system1 '<StrongPassword>';
CREATE USER security1 '<StrongPassword>';
CREATE USER audit1 '<StrongPassword>';4.2 授予系统管理权限
在表模型连接中使用 sys_admin 登录:
GRANT SYSTEM TO USER system1;4.3 授予安全管理权限
在表模型连接中使用 security_admin 登录:
GRANT SECURITY TO USER security1;4.4 授予审计管理权限
在表模型连接中使用 audit_admin 登录:
GRANT AUDIT TO USER audit1;