eab91174db
Co-Authored-By: Claude <noreply@anthropic.com>
7.1 KiB
7.1 KiB
5-compliance-PCM · 安全与合规验收清单(T-9.3)
项目缩写:PCM 上游:
0-req-PCM.md(NFR/约束)、1-prd-PCM.md(§8 合规)、4-arch-PCM.md用途:上线前安全与合规基线核查。逐项标注现状、证据(代码位置)与上线前必办事项。 状态图例:✅ 已实现 ⚠️ 部分(V1 占位/待补强) ❌ 待办 🔴 外部阻塞(待运营方/法务/医生)
⚠️ 说明:本清单为工程自检基线,不替代法务/DPO 的正式合规评审与(如适用)监管注册评估。
1. 监管定位声明(NFR-2 / C-1)
- 产品定位:健康管理 / 临床决策支持,非诊断、非急救替代、非处方。
- 工程体现:
- AI 决策建议对中/高风险
requiresHumanConfirmation=true,系统不自动执行临床决策(人工兜底)。 - 知识问答强制 RAG + 溯源,无依据明确告知并建议就医,不超纲生成。
- 红旗急症仅给"立即就医"提示并通知医护,不下诊断结论。
- 孕妇端/家属端知情同意文案明示"提供健康陪伴与信息参考,不替代医生的诊断与治疗"。
- AI 决策建议对中/高风险
- 🔴 上线前必办:监管定位与合规边界的最终确认(C-1,待运营方/法务);若功能演进触及 SaMD 边界须重新评估 NMPA 注册。
2. 合规核对清单
NFR-1 安全合规(PIPL / 数据安全法)—— 拆分逐项
| 项 | 要求 | 现状 | 证据 / 说明 |
|---|---|---|---|
| 1.1 知情同意 | 使用前签署,留存可审计 | ✅ | auth.service.ts:孕妇/家属未签 consent 拒绝注册;consentSigned 留存;前端登录页含同意勾选 + 隐私政策页 |
| 1.2 身份认证 | 会话安全、令牌校验 | ✅ | 全局 JwtAuthGuard 校验签名令牌 + 过期;token.ts HMAC + 过期;8h TTL |
| 1.3 分级权限 | 按角色访问控制 | ⚠️ | 能力级:CapabilitiesGuard + rbac.ts 矩阵,越权 403。记录级(仅本人/负责个案/绑定孕妇)待补(无用户↔孕妇关联表) |
| 1.4 口令保护 | 不明文存储 | ✅ | password.ts:scrypt + 16B 随机盐 + timingSafeEqual;最短 8 位。生产建议 argon2/bcrypt |
| 1.5 传输加密 | TLS | ❌ | 应用层未含 TLS;须在入口(nginx/ingress/网关)终止 TLS。上线前必办 |
| 1.6 存储加密 | 敏感字段加密、最小化 | ✅ | PostgreSQL 持久化(auth/audit/patient/observation,DATABASE_URL 门控);敏感 PII/PHI 字段级加密已落地——patient(姓名/孕产史/日期/风险因素)、observation(测量值) 经 AES-256-GCM 入 enc 列(field-sealer.ts/field-crypto.ts),实跑验证库内为密文、不含明文。非敏感元数据留明文列以供检索。生产经 KMS 注入 FIELD_ENCRYPTION_KEY 并轮换 |
| 1.7 数据最小化 | 仅采所需 | ⚠️ | 建档/录入 DTO 仅收必要字段;代码示例/日志未回显敏感值。缺正式数据分级清单 |
| 1.8 留存与删除 | 留存策略 + 删除权 | ❌ | 未实现数据留存期与删除/导出(PIPL 主体权利)。上线前必办 |
| 1.9 审计日志 | 关键操作留痕 | ✅ | audit.service.ts 记录注册/登录/越权(access:deny);audit.controller.ts 仅 audit:read(admin)可查。持久化可用:PG audit_log(DATABASE_URL 门控),已实跑入库+重启存活验证。生产再加防篡改/WORM 与归档 |
NFR-2 监管定位 / C-1
| 项 | 现状 | 证据 |
|---|---|---|
| 非诊断定位的工程约束 | ✅ | 人工兜底 + RAG 不超纲 + 红旗仅就医提示(见 §1) |
| 监管定位最终确认 | 🔴 外部 | C-1,待运营方/法务确认 |
NFR-3 可解释性
| 项 | 现状 | 证据 |
|---|---|---|
| 风险/预警可追溯 | ✅ | Alert 含 ruleIds+messages+observationId;scenarios.spec.ts S1 断言可追溯 |
| AI 建议可解释 | ✅ | Recommendation.rationale 溯源到预警说明 |
| 问答溯源 | ✅ | QaAnswer.citations(标题/来源/权威级别) |
NFR-4 临床安全 / C-4
| 项 | 现状 | 证据 |
|---|---|---|
| 红旗人工兜底 | ✅ | redflag.service.ts 即时就医 + 通知管理师/医生 + 升级高风险;S3 测试 |
| 高风险 AI 必须人工确认 | ✅ | recommendation.ts 中/高风险 requiresHumanConfirmation=true;工作台"确认采纳"门控 |
| 误报/漏报责任边界与处置 SLA | ❌ | 责任边界与 SLA 为运营/医疗制度,未在系统固化。上线前必办(制度+配置) |
NFR-9 可观测/审计
| 项 | 现状 | 证据 |
|---|---|---|
| 全链路审计 | ⚠️ | 已覆盖鉴权/越权;处置/配置类操作的审计点待逐步补全;存储须持久化 |
约束核查
| 约束 | 现状 | 证据 / 说明 |
|---|---|---|
| C-1 监管定位(🔴最高) | 🔴 外部 | 待最终确认 |
| C-2 设备指标清单(🔴最高) | 🔴 外部 | 待运营方;V1 以手动录入兜底,不阻塞上线核心闭环 |
| C-3 数据合规隐私(🔴最高) | ⚠️ | 同意/审计/口令已实现;传输/存储加密、留存删除待办(见 1.5/1.6/1.8) |
| C-4 红旗+人工兜底(🟠高) | ✅ | 见 NFR-4 |
| C-5 低质量数据不驱动高风险(🟠高) | ✅ | quality-control.ts 拒绝不可信值,rejected 不进入分析;S1 测试断言 |
| C-6 RAG 溯源不超纲 + 高风险人工确认(🟡中) | ✅ | 见 NFR-3 / NFR-4 |
3. 上线前必办(阻塞项)
- ❌ 传输加密 TLS(1.5):入口层 TLS 终止 + HSTS。
- ✅ 存储加密与持久化(1.6 / T-1.2):全部领域仓储已迁移 PostgreSQL(auth/audit/patient/observation/analysis/caseflow/reminder/knowledge)+ 敏感字段 AES-256-GCM 加密入库,本地 PG 全闭环 + 重启存活验证。剩:生产 KMS 密钥管理与轮换。
- ❌ 数据留存与删除/导出(1.8):留存期策略 + 主体删除/导出(PIPL 权利)。
- ⚠️ 审计持久化(1.9):PG
audit_log持久化已落地;剩 生产防篡改/WORM 存储与归档策略。 - ⚠️ 记录级授权(1.3):用户↔孕妇关联,强制"仅本人/负责个案/绑定孕妇"。
- ❌ 误报/漏报责任边界与处置 SLA(NFR-4):制度化并在系统配置/留痕。
- 🔴 监管定位最终确认(C-1)+ 医学阈值/红旗规则由医生确认(外部)。
- 🔁 密钥与配置:
AUTH_SECRET强随机 + 轮换;密钥管理(KMS/Secrets);勿用默认值。
4. 验收结论
- V1 工程层面已落地:知情同意、认证、能力级 RBAC、口令哈希、可解释/可追溯、人工兜底、RAG 不超纲、数据质控、审计(内存)。
- 不满足"无条件上线":传输/存储加密、数据留存删除、审计持久化、记录级授权、监管定位确认为阻塞项(§3)。
- 建议:完成 §3 阻塞项(多数依赖 PostgreSQL 持久化与部署层 TLS)后,由法务/DPO 正式评审再灰度上线(T-9.4)。
变更记录
| 日期 | 变更 | 说明 |
|---|---|---|
| T-9.3 | 创建 | 基于代码现状的安全与合规验收基线;映射 NFR-1/2/3/4/9 与 C-1~C-6 |