Skip to content

生产加固

Phase 57 | v2.0.0 | 6 IPC 处理器 | 2 张新数据库表

核心特性

  • 📊 性能基线采集: IPC 延迟 (p50/p95/p99)、内存占用、DB 查询耗时基线记录
  • 🔍 回归检测: 可配置阈值的性能回归自动检测与告警
  • 🛡️ 安全审计: 配置/加密/权限/网络/依赖 5 大类别全方位安全扫描
  • ⚠️ 风险评分: 加权风险评分体系 (0-100),自动定级 CRITICAL/HIGH/MEDIUM/LOW/INFO
  • 📈 历史对比: 多版本基线对比,追踪性能趋势

系统架构

┌──────────────────────────────────────────────┐
│             生产加固系统                       │
│                                              │
│  ┌──────────────────┐ ┌──────────────────┐   │
│  │PerformanceBaseline│ │ SecurityAuditor  │   │
│  │ • 基线采集        │ │ • CONFIG 审计    │   │
│  │ • 回归对比        │ │ • CRYPTO 审计    │   │
│  │ • 样本记录        │ │ • PERMISSION     │   │
│  └────────┬─────────┘ │ • NETWORK        │   │
│           │           │ • DEPENDENCY     │   │
│           │           └────────┬─────────┘   │
│           └──────┬─────────────┘             │
│                  ▼                            │
│  ┌──────────────────────────────────────┐    │
│  │  hardening IPC (6 处理器)             │    │
│  └──────────────────┬───────────────────┘    │
│                     ▼                        │
│  ┌──────────────────────────────────────┐    │
│  │  performance_baselines /             │    │
│  │  security_audit_reports (SQLite)    │    │
│  └──────────────────────────────────────┘    │
└──────────────────────────────────────────────┘

关键文件

文件职责
desktop-app-vue/src/main/performance/performance-baseline.js性能基线采集与回归对比
desktop-app-vue/src/main/security/security-auditor.js5 类安全审计扫描
desktop-app-vue/src/main/security/hardening-ipc.jsIPC 处理器 (6 个)
desktop-app-vue/src/renderer/stores/hardening.tsPinia 状态管理
desktop-app-vue/src/renderer/pages/security/HardeningPage.vue生产加固管理页面

相关文档

概述

Phase 57 为 ChainlessChain 引入生产加固能力,包含性能基线采集与回归检测、全方位安全审计,确保系统在大规模部署前达到生产标准。

核心目标:

  • 性能基线: IPC 延迟(p50/p95/p99)、内存占用、DB 查询耗时的基线采集与对比
  • 安全审计: 配置/加密/权限/网络/依赖 5 大类别全方位安全扫描
  • 回归检测: 可配置阈值的性能回归自动检测
  • 风险评分: 加权风险评分体系,自动定级安全发现

架构设计

┌─────────────────────────────────────────────────┐
│                 生产加固系统                       │
│                                                 │
│  ┌──────────────────┐  ┌──────────────────┐     │
│  │ PerformanceBaseline│  │ SecurityAuditor  │     │
│  │                  │  │                  │     │
│  │ • 基线采集       │  │ • 配置审计       │     │
│  │ • 回归对比       │  │ • 加密审计       │     │
│  │ • 样本记录       │  │ • 权限审计       │     │
│  │ • 历史查询       │  │ • 网络审计       │     │
│  └────────┬─────────┘  │ • 依赖审计       │     │
│           │            └────────┬─────────┘     │
│           └──────┬──────────────┘               │
│                  ▼                               │
│         ┌──────────────┐                         │
│         │ hardening-ipc│  6 IPC 处理器           │
│         └──────────────┘                         │
└─────────────────────────────────────────────────┘

核心功能

1. 性能基线采集

javascript
// 采集性能基线
const baseline = await window.electronAPI.invoke('hardening:collect-baseline', {
  name: 'v2.0.0-release',
  version: '2.0.0'
});

console.log(baseline);
// {
//   id: 'bl-001',
//   name: 'v2.0.0-release',
//   version: '2.0.0',
//   status: 'COMPLETE',
//   metrics: {
//     ipcLatency: { p50: 12, p95: 45, p99: 120 },
//     memory: { rss: 256, heapUsed: 128, heapTotal: 192 },
//     dbQuery: { avgMs: 3.2, maxMs: 15 }
//   },
//   sampleCount: 100,
//   createdAt: 1709078400000
// }

2. 性能回归对比

javascript
// 对比两个基线,检测回归
const comparison = await window.electronAPI.invoke('hardening:compare-baseline', {
  baselineId: 'bl-001',
  currentId: 'bl-002',
  thresholds: {
    ipcLatencyP95: 0.2,  // 20% 偏差告警
    memoryRss: 0.15,      // 15% 内存增长告警
    dbQueryAvg: 0.25      // 25% 查询时间增长告警
  }
});

// comparison.regressions: [{ metric, baseline, current, deviation, severity }]

3. 安全审计

javascript
// 运行安全审计
const report = await window.electronAPI.invoke('hardening:run-security-audit', {
  name: 'pre-release-audit',
  categories: ['CONFIG', 'CRYPTO', 'PERMISSION', 'NETWORK', 'DEPENDENCY']
});

console.log(report);
// {
//   id: 'sar-001',
//   name: 'pre-release-audit',
//   status: 'COMPLETE',
//   riskScore: 23.5,
//   findings: [
//     { category: 'CRYPTO', severity: 'HIGH', title: '弱加密算法', ... },
//     { category: 'DEPENDENCY', severity: 'MEDIUM', title: '过期依赖', ... }
//   ],
//   summary: { critical: 0, high: 1, medium: 3, low: 5, info: 2 }
// }

审计类别

类别检查项风险权重
CONFIG敏感配置暴露、默认凭据、调试模式
CRYPTO弱算法、密钥长度、证书过期、随机数质量
PERMISSION过度授权、未鉴权端点、敏感操作无审计
NETWORK不安全协议、开放端口、CORS 配置
DEPENDENCY已知 CVE、过期依赖、许可证风险

风险评分

严重度权重示例
CRITICAL40硬编码密钥、SQL 注入
HIGH20弱加密算法、未加密传输
MEDIUM10过度权限、缺少速率限制
LOW5过期依赖、缺少安全头
INFO1建议性改进、最佳实践提示

IPC 通道

通道参数返回值
hardening:collect-baseline{ name, version }基线对象
hardening:compare-baseline{ baselineId, currentId, thresholds }对比结果
hardening:get-baselines{ filter? }基线列表
hardening:run-security-audit{ name, categories }审计报告
hardening:get-audit-reports{ filter? }报告列表
hardening:get-audit-report{ reportId }单份报告详情

数据库表

performance_baselines

字段类型说明
idTEXT PK基线 ID
nameTEXT基线名称
versionTEXT版本号
statusTEXT状态(PENDING/COMPLETE)
metricsJSONIPC延迟/内存/DB查询指标
environmentJSON运行环境信息
sample_countINTEGER采样数量
created_atINTEGER创建时间

security_audit_reports

字段类型说明
idTEXT PK报告 ID
nameTEXT审计名称
statusTEXT状态
findingsJSON发现列表(类别/严重度/标题/描述)
risk_scoreREAL加权风险评分(0-100)
summaryJSON严重度统计汇总
created_atINTEGER创建时间

配置

unified-config-manager.js 中添加 hardening 配置节:

javascript
hardening: {
  enabled: true,
  baselineAutoCollect: false,
  auditSchedule: 'manual',
  thresholds: {
    ipcLatencyP95: 0.2,
    memoryRss: 0.15,
    dbQueryAvg: 0.25
  }
}

使用示例

采集性能基线

  1. 打开「生产加固」页面,进入「性能基线」标签
  2. 输入基线名称(如 v2.0.0-release)和版本号
  3. 点击「采集基线」,系统自动采集 IPC 延迟、内存占用和 DB 查询指标
  4. 采集完成后查看 p50/p95/p99 延迟和内存使用详情

对比性能回归

  1. 在基线列表中选择两个基线进行对比
  2. 设置回归阈值(如 IPC 延迟偏差 20%、内存增长 15%)
  3. 系统自动检测并高亮显示超出阈值的回归项
  4. 根据回归报告定位性能退化原因

运行安全审计

  1. 切换到「安全审计」标签
  2. 选择审计类别(CONFIG/CRYPTO/PERMISSION/NETWORK/DEPENDENCY)
  3. 点击「运行审计」,等待扫描完成
  4. 查看风险评分和发现列表,按严重度优先处理 CRITICAL/HIGH 项

故障排查

问题可能原因解决方案
基线采集超时系统负载高导致采样缓慢在低负载时段重新采集,减少并发任务
回归对比无结果两个基线版本相同选择不同版本的基线进行对比
审计发现全为 INFO系统安全配置良好属于正常结果,定期审计保持安全状态
风险评分异常偏高存在 CRITICAL 级别发现立即处理硬编码密钥、SQL 注入等关键风险
基线列表加载缓慢历史基线数据量过大清理过期基线记录,保留关键版本
审计类别不完整某些检查依赖的服务未运行确保所有被检查的服务处于运行状态

配置参考

unified-config-manager.js 中的 hardening 配置节完整字段说明:

配置项类型默认值说明
enabledbooleantrue是否启用生产加固模块
baselineAutoCollectbooleanfalse是否在应用启动时自动采集基线
auditSchedulestring"manual"安全审计调度方式(manual / daily / weekly
thresholds.ipcLatencyP95number0.2IPC p95 延迟回归告警阈值(20% 偏差)
thresholds.memoryRssnumber0.15RSS 内存增长告警阈值(15%)
thresholds.dbQueryAvgnumber0.25平均 DB 查询耗时增长告警阈值(25%)
javascript
// .chainlesschain/config.json 示例
{
  "hardening": {
    "enabled": true,
    "baselineAutoCollect": false,
    "auditSchedule": "manual",
    "thresholds": {
      "ipcLatencyP95": 0.2,
      "memoryRss": 0.15,
      "dbQueryAvg": 0.25
    }
  }
}

性能指标

基线采集耗时

操作典型耗时说明
IPC 延迟采样(100 次)1–3 s并发 IPC 调用采集 p50/p95/p99
内存快照< 50 ms单次 process.memoryUsage()
DB 查询基线(100 次)1–5 s取决于数据库大小和磁盘速度
完整基线采集3–10 s三类指标顺序采集

安全审计耗时

审计类别典型耗时检查项数量
CONFIG< 200 ms配置文件扫描、默认凭据检测
CRYPTO< 100 ms算法白名单匹配、证书校验
PERMISSION< 150 msIPC 鉴权规则、RBAC 角色扫描
NETWORK< 300 ms端口探测、CORS 规则检查
DEPENDENCY1–3 snpm audit 联网查询 CVE 数据库
全类别完整审计2–4 s5 类并行执行

数据保留

  • 性能基线:无上限,建议保留 10 个关键版本基线,定期清理中间版本
  • 审计报告:建议保留最近 50 份,历史报告可导出 JSON 存档后删除

测试覆盖率

测试文件覆盖功能用例数
tests/unit/performance/performance-baseline.test.js基线采集、回归对比、样本记录、历史查询24
tests/unit/security/security-auditor.test.js5 类审计逻辑、风险评分、发现分级31
tests/unit/security/hardening-ipc.test.js6 个 IPC 处理器参数校验与响应格式18
tests/unit/stores/hardening.test.tsPinia store 状态流转、过滤与排序14

运行测试:

bash
cd desktop-app-vue

# 单独运行生产加固相关测试
npx vitest run tests/unit/performance/ tests/unit/security/

# 运行全量单元测试
npx vitest run tests/unit/

安全考虑

  • 安全发现分级: CRITICAL(40)/HIGH(20)/MEDIUM(10)/LOW(5)/INFO(1) 加权评分体系
  • 敏感配置检测: 自动扫描暴露的密钥、默认凭据和调试模式
  • 加密算法审计: 检测弱加密算法、过短密钥和过期证书
  • 依赖安全扫描: 识别已知 CVE 漏洞和过期依赖
  • 审计报告加密: 审计发现存储在加密数据库中,防止安全信息泄露
  • 基线不可篡改: 采集的基线数据一旦写入不可修改,保证对比的可信度
  • 定期审计建议: 推荐每次版本发布前运行完整安全审计

相关链接

基于 MIT 许可发布