本文件是提交 PMC 审阅的建议,尚不是已批准的安全承诺。 按本地 IoTDB 主仓库 THREAT_MODEL.md 的 v0 章节组织;合入前需与目标版本核对。 当前 MCP 的运行约束见 Session 权限管理。
在组件表中显式增加 apache/iotdb-mcp-server,由 PMC 确认纳入主模型还是维护单独模型并互相引用。 不要因其位于独立仓库,就默认套用客户端 SDK 的范围排除。
建议组件表条目:
| Family | Entry point | Touches outside process | In model? |
|---|---|---|---|
| IoTDB MCP Server | MCP tools over stdio | IoTDB session RPC, local configuration, result files, policy approval files | In the MCP-specific boundary described below; database-side RBAC remains independently enforced |
明确四种参与者:部署管理员、负责交互与沙箱的宿主、调用 MCP 工具的 agent/MCP 客户端、 数据库账号。宿主可以管理 agent 的执行权限,但 agent 不因此自动获得管理员身份。 数据库凭据由 MCP 使用时,数据库账号权限也不等于 agent 对 MCP 管理策略的权限。
现有模型把“需要 root/admin 的操作”视为可信输入。对 MCP 应补充例外:
An MCP client does not become a trusted deployment administrator merely because the MCP server uses a database account with administrative privileges. An MCP client bypassing an operator-enforced MCP policy is an in-scope adversary even when the underlying database would authorize the SQL for the server's account.
在威胁主体中增加:已连接且能调用普通 MCP 工具的恶意客户端、被提示注入影响的 agent、 超出用户意图自行执行操作的 agent。攻击者可选择任意工具名、参数、调用顺序和并发请求, 也可自行填写危险操作确认布尔值。不能假设工具调用来自自然语言用户的真实授权。
数据操作还要跨越 MCP → IoTDB RBAC 边界。MCP 限制与数据库授权应同时满足, MCP 的部署上限不能扩大数据库账号本身的权限。
require(默认)和 allow(管理员显式选择)必须列为安全配置变体。 require 无可用通道时禁止扩大,不可自动降级为 allow。advisory 不提供 SQL 权限强制执行保证;strict 下才承诺相关执行检查。 当前默认 advisory 应清楚记录,PMC 可另行决定未来版本是否切换默认 strict。confirm_destructive=true 是攻击者可控输入,不等于人类身份、签名或独立审批凭据。建议 PMC 明确承诺并逐个核验调用入口:
| 场景 | 建议分流 |
|---|---|
| 普通 MCP 客户端能关闭已启用的 strict 或突破部署上限 | VALID:权限边界绕过 |
| require 模式下可伪造、替换或重放审批而扩大权限 | VALID:审批边界绕过 |
| 使用部署者明确开启的 allow 在部署上限内扩大 session 权限 | BY-DESIGN,前提是配置契约清楚 |
| 仅证明显式 advisory 不强制执行 SQL 权限 | 按已声明非保证判断;误导文档另行评估 |
| 已掌握管理员 shell 后编辑配置重启 | OUT-OF-MODEL: trusted-input,须证明已有管理权限 |
| 服务端持有高权限数据库账号,而 agent 仅有普通 MCP 工具权限 | 不得仅凭账号级别判为 trusted-input |
新增 HTTP/共享服务传输、多客户端共享实例、在线管理 API、宿主自动审批集成,或修改默认 enforcement/审批模式时,应触发模型复审。最终范围和承诺由 PMC 确认,并随发布版本绑定。