适用范围
约束所有功能的凭据处理、敏感数据范围与脱敏要求。
不约束:凭据的具体存储介质与轮换周期(由运维决定);加密算法选型。
规范条款
凭据分离
- 不同用途的凭据必须彼此独立,且必须满足:不同来源、不同文件或不同引用、不可互换。
- 必须不存在一份凭据承担两种用途(例如既做服务身份又做业务身份)。
- 凭据引用必须只指向引用位置;必须不把凭据值写入代码、文档、配置正文或数据库明文字段。
- 凭据的值与路径/引用名都必须视为敏感值(必须遵循下方禁入清单)。
最小权限
- 每个身份必须只被授予完成其职责所需的最小范围。
- 绑定到具体作用域的身份必须只对该作用域有效;必须不存在"全域通用"的身份。
- 身份与作用域的绑定必须显式声明并可审计(必须遵循身份与权限)。
敏感值禁入清单
- 下列内容必须不出现在任何对外可见面——包括接口响应、界面、公开投影、运行载荷、事件、结果、审计、日志、错误文本与文档正文:
| 禁入项 | 说明 |
|---|
| 凭据值 | 令牌、密钥、密码 |
| 凭据路径与引用名 | 文件路径、密钥名、引用标识 |
| 宿主与进程信息 | 主机、进程、端口、服务标签、路径、命令、参数 |
| 执行内部结构 | 会话标识、执行段、句柄、内部队列 |
| 原始诊断 | 堆栈、原始错误文本、上游响应正文 |
| 其它作用域的存在性 | 名称、数量、差异化的失败 |
- 面向模型的输入(提示、工具参数、会话内容、运行载荷)必须同样遵守本清单:模型必须不能看到凭据与宿主信息。
- 任何对外可见的数据必须在进入可见面之前完成脱敏;必须不依赖消费方自行忽略。
- 脱敏规则必须显式声明:哪些字段必须移除、哪些必须替换为稳定标识。
- 替换必须保持稳定性(同一输入替换结果一致),以便核对而不泄漏。
- 失败原因对外表达时必须映射为稳定失败标识;必须不回传原始错误。
数据分类与保留
- 每个持久化数据必须被归类为下列之一,并必须在功能的设计文档中声明:
| 分类 | 示例 | 对外可见性 |
|---|
| 公开 | 已审核的对外文档 | 可公开 |
| 内部 | 运行元数据、状态 | 仅授权角色 |
| 敏感 | 凭据引用、宿主信息 | 仅 owning 服务,且不进入投影 |
| 受限 | 审计与合规记录 | 仅审计角色,只追加 |
- 受限数据必须只追加保留;必须不被硬删除(必须遵循数据与持久化的保留条款)。
- 数据导出必须遵守同一分类:必须不导出敏感类;受限类导出必须停在批准门之前。
副作用与外部变更
- 会改变外部系统的操作必须声明其可逆性(可逆 / 不可逆 / 需对账)。
- 不可逆操作必须停在明确批准门之前,且必须有对账方式(必须遵循幂等与一致性)。
违反时的失败语义
| 违反情形 | 必须的行为 |
|---|
| 一份凭据承担两种用途 | 视为规格违反;必须拆分 |
| 凭据值进入代码、文档或明文库 | 必须视为安全事故处理 |
| 禁入项出现在对外可见面 | 必须视为安全缺陷;立即修复并评估影响面 |
| 脱敏发生在可见面之后 | 必须前移 |
| 原始错误对外回传 | 必须改为稳定失败标识 |
| 敏感类数据被导出 | 必须停止导出并评估影响 |
校验方式
| 校验对象 | 判据 | 失败表现 |
|---|
| 凭据分离 | 两类用途必须指向不同来源;互换使用必须失败 | 可互换即失败 |
| 禁入清单扫描 | 对响应、投影、日志、结果、错误文本做敏感值扫描 | 命中即失败 |
| 模型输入扫描 | 提示、工具参数、会话内容与载荷不得含禁入项 | 命中即失败 |
| 脱敏前置 | 可见面的数据必须已脱敏,消费方无需忽略字段 | 出现未脱敏字段即失败 |
| 稳定失败标识 | 对外失败必须是稳定标识,不得是原始错误 | 原始错误即失败 |
| 数据分类完备 | 每类持久化数据必须能定位到分类声明 | 缺失即失败 |
| 最小权限 | 身份必须只对其声明作用域有效 | 越界有效即失败 |
| 不可逆批准门 | 不可逆操作必须停在批准前 | 可自动执行即失败 |
相关规格