2026-10-21。正文:让 AI 只查询用户可见的数据。当前 Codex 会话实际调用公开 CLI 完成验证;本章初稿、自审完成,待用户审阅,第十四章未开始。
http://127.0.0.1:18068,Namespace chinook-scope,named datasource chinook-sqlite;独立 SQLite 副本为 lab/runtime/chapter-13/Chinook.sqlite,工作目录 lab/runtime/chapter-13/work。API foggy-runtime-api/v1、schema 2026-06-06,none-dev-test-only,Console/FAP 关闭。127.0.0.1:18070;每次检查在进程内生成美国、加拿大和拒绝身份的临时值。仅通过子进程环境 FOGGY_RUNTIME_AUTHORIZATION 交给 CLI,不写命令参数、模型、payload、日志或状态文件;原始值不输出到会话。chinook-scope-demo Bundle,再刷新。| 检查 | 美国身份 | 加拿大身份 |
|---|---|---|
| 2012 年明细金额 | 127.98 | 42.57 |
| 2012 年明细条数 | 102 | 43 |
| 2012 年成交客户数 | 13 | 4 |
| 全期间有权访问的账单目录 total | 91 | 56 |
基线从不可变原件副本只读读取 Invoice/InvoiceLine,以主键映射关联、Python Decimal 乘数量并累计;没有复用引擎生成的 JOIN SQL。目录 total 不施加 2012 年业务筛选,成员接口只核对本次返回的十条及 total,不声称遍历所有页。
逻辑查询用例共 11 项正确执行、5 项预期校验拒绝;模型列表/说明和成员检查另计。首次分步实操及完整复跑使用同一组逻辑用例,不相加为独立测试总数。
关键诊断:
| 情况 | 实际结果 |
|---|---|
| 未授权/匿名 describe | MODEL_ACCESS_DENIED,phase models.describe |
| 未授权/匿名 query validate | QUERY_VALIDATE_FAILED,提示当前模型操作不可用 |
| 选择 detailPrice | QUERY_VALIDATE_FAILED,当前字段不可访问 |
| 改用旧 unitPrice | FIELD_NOT_FOUND |
| 美国身份筛选 Canada 排名 | 合法请求,权限与业务筛选相交,返回空列表 |
| billId 成员目录 | 对应账单国家过滤成功,ID 均属于允许集合 |
| albumArtistId 成员目录 | MODEL_PERMISSION_RESOLUTION_FAILED,phase members.list,safeToAutoRepair=false |
| 权限服务不可用 | 查询校验失败,未继续执行或改用公开模型 |
Artist 目录的拒绝符合 0.1.30 成员绑定合同:行谓词须映射到实际目标,无法安全映射时拒绝。账单国家不直接等于艺术家的某个属性,不能为了返回候选而去掉这条权限。
在本资料目录执行:
.\lab\checks\run-chapter-13.ps1
这是完整自动化验收入口,包含创建与全部查询,不对应正文“先不查询”的单步提示词。它检查 18068/18070 空闲,使用原发行脚本启动隔离实例,调用 检查脚本,最后停止自己启动的 Runtime。演示权限服务与身份值仅在检查进程内有效,不能把留存模型当作无需权限服务的常驻产品接入。
正文按创建、读取元数据、查询、边界检查分步讲解;复跑脚本用于独立核对完整结果。配套脚本只实现最小演示 provider,不是登录系统、角色后台或生产 IAM。
证据目录 内:
acceptance.json、baseline.json、query-manifest.json:逻辑用例和原件独立核算。*-commands.json、*-describe-*.json、*-members-*.json:实际命令、角色标签、退出码及响应;无身份原始值。permission-audit.json:只记录演示角色、模型动作和允许/拒绝,不记录 Header。process-identity.json、launcher-start.json、Runtime 日志及清理记录:运行身份和收尾。contracts/:固定发行源码 commit 下的公开合同资料,旧架构文档中的目标/历史描述不代替当前实测。模型、描述、校验、正常 execute 和成员调用的实际行为已记录。未把已拒绝请求直接送到 execute 做对抗测试,未测试 Authorization 伪造、过期/撤销、所有缓存层、跨数据库或生产治理;不能将本章标成完整安全审计。隐藏单价仅表示这个字段入口受限,不声称已验证防止通过其他授权数据间接推算。
Runtime 的开发管理模式仍是 none-dev-test-only。真实业务用户不应获得模型发布、原始 SQL 或其他管理能力;身份真实性及管理接口隔离由接入方负责,不触碰 TMS 的权限配置。本轮没有改产品源码、生产部署、FAP、已暂缓的 Text-to-SQL 对比,也没有新增 GitHub issue/comment。