3.2 KiB
生产内容安全服务适配
1. 处理边界
Worker以两层策略保护故事、事实和后续记忆。第一层是进程内固定高风险规则,识别验证码、支付账户、提示注入和高敏医疗内容;命中后直接生成不含原文的受控提示,原文不发送给内容模型或外部安全服务。第二层是生产托管策略,分别检查准备送给内容模型的长者话轮和模型返回的摘要、开放话题、故事、事实组合文本。
托管策略返回BLOCK或REVIEW时,Worker只保存受控摘要和开放提示,不创建普通故事、事实或记忆。网络失败、超时、408/425/429/5xx、不可解析响应和不符合协议的响应均按可重试错误安全阻断;其他4xx作为永久配置或请求错误进入现有死信治理。任何失败都不会被降级解释为允许。
2. HTTP协议
Worker对CONTENT_SAFETY_ENDPOINT执行POST,使用Authorization: Bearer <API Key>和Content-Type: application/json。请求为:
{
"policy_ref": "elder-story-production-v1",
"content": "待分类文本"
}
成功响应必须是:
{
"decision": "ALLOW",
"sensitivity": "normal",
"reason_code": "",
"request_ref": "provider-audit-reference"
}
decision只允许ALLOW、BLOCK、REVIEW;sensitivity只允许normal、sensitive、high。阻断或复核必须返回由小写字母、数字、下划线或连字符组成且不超过64字符的reason_code。request_ref用于供应商侧审计关联,不写入普通业务正文。响应正文、API Key和待分类文本不会拼入应用错误。
3. 配置
| 变量 | 说明 |
|---|---|
CONTENT_SAFETY_PROVIDER |
本地开发为local;生产必须为managed_http |
CONTENT_SAFETY_ENDPOINT |
托管分类服务绝对地址;生产必须为非本地HTTPS |
CONTENT_SAFETY_API_KEY / _FILE |
Bearer密钥;二者只能配置一个,生产建议CSI文件 |
CONTENT_SAFETY_POLICY_REF |
经业务、安全和法务批准的不可变策略版本 |
CONTENT_SAFETY_TIMEOUT |
单次HTTP超时,默认5秒 |
生产Worker在连接数据库前执行配置门禁,拒绝本地提供器、HTTP或本地端点、占位/短密钥和本地策略名。Kubernetes基线从voice-platform-model-storage目录读取content-safety-api-key;生产覆盖层必须替换ConfigMap中的.example.invalid与replace-with-*占位值。
启用托管策略时,Worker还按EXTERNAL_PROBE_INTERVAL对策略端点执行无正文的DNS、TCP和受信TLS握手,结果写入content_safety_tls外部依赖状态和Prometheus指标。连续5分钟不可用触发PlatformExternalDependencyUnavailable,但不进入Pod readiness,避免网络抖动引发重启风暴;生产候选验收快照必须把该依赖列为必需项。
4. 验收
日常开发只运行适配器和配置的定向测试,覆盖正常允许、本地命中不外发、托管复核阻断、临时故障重试以及永久4xx。发布候选仍需在真实账号和目标策略上完成VERIFICATION_CODE、FINANCIAL_ACCOUNT、PROMPT_INJECTION、SENSITIVE_MEDICAL、NORMAL_BENIGN、MODEL_OUTPUT_SAFETY六类证据,并由cmd/agent-models-conformance形成不可豁免报告。