8.4 安全开发生命周期

将安全融入开发全过程,是构建安全 LLM 应用的根本保障。

8.4.1 安全开发生命周期概述

安全开发生命周期(SDL)将安全活动嵌入软件开发的各个阶段。

spinner

图 8-18:安全开发生命周期概述流程图

8.4.2 需求阶段

安全需求识别

LLM 应用安全需求示例:

功能安全:
- 拒绝生成有害内容
- 保护用户隐私
- 限制敏感操作

非功能安全:
- 响应时间 < 3 秒
- 99.9% 可用性
- 可审计的操作日志

合规要求映射

法规/标准
相关要求

GDPR

数据保护、用户权利

HIPAA

健康信息保护

SOC 2

安全控制

ISO 27001

信息安全管理

8.4.3 设计阶段

威胁建模

spinner

图 8-19:设计阶段流程图

使用 STRIDE 模型分析 LLM 威胁:

威胁类型
LLM 场景示例

假冒

伪造用户身份

篡改

修改知识库内容

否认

否认发送的消息

信息泄露

训练数据提取

拒绝服务

消耗计算资源

权限提升

突破安全限制

安全设计原则

8.4.4 开发阶段

安全编码实践

代码审查要点

检查项
描述

输入验证

是否验证所有输入

输出过滤

是否过滤敏感输出

权限检查

是否实施访问控制

日志记录

是否记录关键操作

错误处理

是否安全地处理错误

依赖安全

是否使用安全的依赖

[!TIP] 开源工具参考:Gitleaksarrow-up-rightTruffleHogarrow-up-right 可自动扫描代码仓库中泄露的 API Key、密钥等凭证,建议集成到 pre-commit 钩子中;Semgreparrow-up-right 是快速的静态应用安全测试工具,支持自定义规则检测不安全的提示词拼接等 LLM 应用特有漏洞。

8.4.5 测试阶段

安全测试类型

spinner

图 8-20:测试阶段流程图

LLM 专项测试

测试工具

工具
功能

Garak

LLM 漏洞扫描

Prompt 测试框架

Prompt 测试

红队自动化工具

红队自动化

自定义测试集

业务相关测试

8.4.6 部署阶段

安全部署检查清单

配置安全

8.4.7 运营阶段

持续安全运营

spinner

图 8-21:运营阶段流程图

安全监控指标

指标
描述
告警阈值

注入检测率

检测到的注入尝试

异常增加

拒绝率

被拒绝的请求

突然变化

错误率

系统错误比例

> 1%

响应时间

P99 延迟

> 10 s

事件响应流程

8.4.8 持续改进

安全是一个持续过程:

spinner

图 8-22:持续改进流程图

将安全融入开发全生命周期,可以从根本上提高 LLM 应用的安全性。

最后更新于