
微信

飞书
选择您喜欢的方式加入群聊


AI 问数的安全 PoC,关键不是让系统成功回答十个问题,而是让越权、写入、模型不可达和身份失效等请求按预期失败。企业应提前写下测试身份、预期结果和取证方式,再让数据、安全、业务三方共同复测。本文给出一份可改写的测试表;示例均为演练数据,不是客户实施结果。
假设某零售企业有 A 店和 B 店。测试库各放两笔订单:A 店 100 元、200 元,B 店 300 元、400 元,另有一个仅财务可见的 customer_phone 字段。准备 A 店店员、B 店店员、财务、项目管理员四个身份,并记录每个身份被授予的表、字段和行范围。
不要只用管理员账号演示。管理员看到全部订单,无法证明店员访问范围受到限制。网页、飞书、嵌入页和 API 若都在上线范围内,还要分别核对入口身份映射;网页测通不代表其他入口自然继承相同身份。
| 层 | 验收问题 | 失败用例或检查动作 | 需要留存的证据 |
|---|---|---|---|
| 身份 | 1. 登录与停用是否生效 | 停用 A 店店员后再次访问 | 身份状态、入口返回结果 |
| 身份 | 2. 项目权限是否隔离 | 非项目成员访问该智能体 | 项目成员配置、拒绝结果 |
| 数据 | 3. 行范围是否有效 | A 店店员问“两店总销售额” | 实际 SQL 或结果,不出现 B 店 700 元 |
| 数据 | 4. 字段是否受控 | 店员索取 customer_phone | 字段配置、执行结果或拒绝结果 |
| 数据库 | 5. 连接账号是否只读 | 用部署账号尝试写入测试表 | 数据库授权、拒绝记录 |
| 数据库 | 6. 查询资源是否受限 | 发起长耗时或大范围查询 | 数据库超时、资源限制配置及实际耗时 |
| 模型 | 7. 数据发到哪里 | 检查模型地址与受控网络出口 | 部署配置、网络流量样本 |
| 审计 | 8. 成功查询能否追溯 | 复盘 A 店正常问数 | 用户、来源、时间、执行详情 |
| 审计 | 9. 前置拒绝能否定位 | 复盘无权限身份被拒绝的请求 | 智能体日志、入口日志或网关日志的实际命中情况 |
| 恢复 | 10. 故障与轮换是否安全 | 模型不可达、凭据轮换后重试 | 报错、恢复步骤、权限是否保持关闭 |
第 9 项特别容易写错:请求若在入口或权限前置阶段被拒,不能预设它一定进入智能体审计日志。应实测拒绝发生的位置,并确定从哪个系统的日志取证。若一次越权请求在任何地方都无法定位,这项就没有通过。
以“A 店店员问两店总销售额”为例:
“结果没显示 B 店金额”只是一个观察点。还要检查生成的查询有没有触及未授权行,以及导出、分享、工具调用等其他路径是否能把结果带出。
AskTable 的公开文档说明了字段可见性、行级过滤、只读 SQL 校验,以及智能体提问和执行详情的查看方式。这些能力可以作为产品侧测试对象。数据库账号权限、查询超时、模型网络出口、日志归档、异常告警和恢复目标,则需要企业在自己的环境中配置并验收。私有部署改变运行边界,不自动完成上述工作。
PoC 结束时,把每项标成“通过、失败、未测”,留下证据位置和责任人。尤其是未测的入口、未接通的数据源和未验证的故障场景,不要在上线报告里写成已经安全。