Skip to content

Zero Trust Security

EnerOS Bot edited this page Jul 7, 2026 · 2 revisions

中文 | English

零信任与安全合规

维护版本:v0.55.0 | 最后更新:2026-07-08

EnerOS v0.39.0 引入零信任架构,从"边界防御"转向"永不信任,持续验证"。本页概述 trust / ids / audit / compliance 四大安全子系统;完整配置请参阅主仓库 docs/deployment.md §3.4 + ADR-0007 + docs/compliance/

四大安全子系统

┌──────────────────────────────────────────────────┐
│                  EnerOS 实例                      │
│                                                   │
│  ┌─────────────┐  ┌─────────────┐               │
│  │ eneros-trust│  │  eneros-ids │               │
│  │ CA / mTLS   │  │  基线 / IOC │               │
│  │ 证书轮转    │  │  行为分析   │               │
│  └──────┬──────┘  └──────┬──────┘               │
│         │                │                        │
│  ┌──────┴────────────────┴──────┐               │
│  │       eneros-audit           │               │
│  │  HMAC 链 + WORM 存储         │               │
│  └──────────────┬───────────────┘               │
│                 │                                 │
│  ┌──────────────┴───────────────┐               │
│  │    eneros-compliance         │               │
│  │  NERC CIP / IEC 62443 /      │               │
│  │  GDPR / PIPL / CCPA          │               │
│  └──────────────────────────────┘               │
└──────────────────────────────────────────────────┘

eneros-trust — 零信任基础

能力 说明
内部 CA 自签名根证书 + 中间 CA,签发所有服务证书
mTLS 双向认证 服务间通信强制 mTLS,客户端需提供由内部 CA 签发的有效证书
证书自动轮转 到期前 rotation_days_before_expiry(默认 30 天)自动轮转
证书撤销 CRL + OCSP 在线撤销检查
[zero_trust]
ca_cert_path = "/etc/eneros/tls/ca.crt"
ca_key_path = "/etc/eneros/tls/ca.key"
cert_dir = "/var/lib/eneros/certs"
rotation_days_before_expiry = 30
mtls_required = true

EventBus broker mTLS(需启用 mtls feature):

eneros-eventbus-broker --tls-cert /etc/eneros/tls/broker.crt \
                       --tls-key /etc/eneros/tls/broker.key \
                       --tls-ca /etc/eneros/tls/ca.crt

eneros-ids — 入侵检测

能力 说明
API 行为基线 学习每个 API 端点的正常调用模式(频率 / 参数 / 来源)
IOC 威胁情报 从 JSON 文件加载 IOC(IP / 域名 / 哈希),匹配实时流量
登录锁定 连续 lockout_threshold(默认 5)次失败后锁定 lockout_duration_secs(默认 900s)
异常告警 检测异常后上送事件总线,触发 AIOps 关联分析
[threat_detection]
enable_baseline = true
enable_ids = true
lockout_threshold = 5
lockout_duration_secs = 900
intel_file_path = "/etc/eneros/security/ioc.json"

eneros-audit — WORM 审计日志

能力 说明
WORM 存储 Linux 上 chattr +a 设置只追加属性,防篡改;非 Linux 仅日志警告
HMAC-SHA256 链 每条记录的 hash 包含前一条 hash,篡改历史导致后续校验失败
自动轮转 单文件超过 max_size_mb(默认 512)自动轮转
保留策略 默认保留 retention_days = 365
[audit]
storage_path = "/var/lib/eneros/audit"
max_size_mb = 512
retention_days = 365
hmac_secret = "<32-byte-hex-secret>"

eneros-compliance — 合规框架

标准 范围 文档
NERC CIP 北美电力系统关键基础设施保护 docs/compliance/nerc-cip.md
IEC 62443-4-1 工业自动化系统安全 SDLC docs/compliance/iec-62443-4-1-sdlc.md
IEC 62443-4-2 安全等级 SL 矩阵 docs/compliance/iec-62443-4-2-sl-matrix.md
GDPR 欧盟通用数据保护条例 v0.47.0 数据主体权利
PIPL 中国个人信息保护法 v0.47.0
CCPA 加州消费者隐私法 v0.47.0

IEC 62443 SL3 合规(v0.54.0+)

v0.54.0 将 IEC 62443-4-2 SL3 矩阵覆盖度提升至 49/50 = 98%(远超 ≥ 80% 目标),并归档 10 份 SDL 审计证据文档。

SL3 覆盖度

FR 要求项 覆盖 实现版本
FR1 访问控制 SR 1.1-1.13 13/13 v0.39.0 + v0.54.0
FR2 使用控制 SR 2.1-2.12 11/12 v0.39.0(SR 2.12 USB 白名单部分实现)
FR3 数据完整性 SR 3.1-3.4 4/4 v0.39.0 + v0.53.0 + v0.54.0
FR4 数据机密性 SR 4.1-4.2 2/2 v0.39.0 + v0.54.0
FR5 受限数据流 SR 5.1-5.4 4/4 v0.39.0 + v0.54.0
FR6 事件响应 SR 6.1-6.4 4/4 v0.39.0 + v0.54.0
FR7 资源可用性 SR 7.1-7.6 6/6 v0.39.0 + v0.41.0
总计 50 项 49/50 = 98%

SDL 审计证据包

10 份文档归档于 docs/compliance/iec-62443-4-1-evidence/,覆盖 SDL 8 阶段 + 2 跨阶段:

文档 SDL 阶段 内容
01-requirements.md 需求分析 架构蓝图 + 安全目标 SL3 + 威胁模型
02-design.md 设计 分层架构 + ADR 索引 + 安全控制设计
03-implementation.md 实现 编码规范 + clippy/deny 强制 + 代码审查
04-verification.md 验证 单元测试统计 + 集成测试 + SL3 覆盖度
05-release.md 发布 SBOM 生成 + release workflow + 签名验证
06-operations.md 运维 监控 + 审计日志 + IDS 告警闭环
07-change-management.md 变更管理 CHANGELOG + ROADMAP + /spec 流程
08-decommissioning.md 退役 secure_erase 流程 + 密钥销毁
09-vulnerability-fixes.md 漏洞治理 RUSTSEC 治理 + bincode 迁移 + Argon2id
10-threat-model.md 威胁模型 STRIDE 5 场景 + 信任边界 + 安全不变量

FIM 文件完整性监控(v0.54.0+)

eneros-ids 新增 FIM(File Integrity Monitoring)模块,满足 IEC 62443-4-2 SL3 SR 3.2(运行时恶意代码检测):

能力 说明
SHA-256 基线 递归遍历监控目录,8 KiB 分块读取计算 SHA-256
篡改检测 检测文件内容修改(Tampered)、新增文件(NewFile)、缺失文件(Missing)
排除模式 支持 * / ? 通配符排除特定路径
基线更新 检测到变更后可更新基线
use eneros_ids::FimMonitor;

let monitor = FimMonitor::new(config);
monitor.initialize_baseline()?;
let alerts = monitor.scan(); // 检测篡改/新增/缺失

AutoResponder 入侵防御(v0.54.0+)

eneros-ids 新增 AutoResponder 主动响应器,满足 IEC 62443-4-2 SL3 SR 6.4:

响应动作 触发条件 平台
BanIp 检测到威胁 + 有 client_ip Linux: nftables 封禁
QuarantineAgent agent 相关威胁(横向移动/行为异常) Linux: cgroup.freeze 冻结
LockAccount 认证相关威胁(暴力破解/令牌异常) 审计日志 + LoginFailureTracker
LogOnly 低于响应阈值 审计日志
use eneros_ids::{AutoResponder, ResponsePolicy};

let responder = AutoResponder::new(ResponsePolicy::default());
let actions = responder.respond(&threat_alert, Some("192.168.1.100"));
for action in &actions {
    responder.execute(action)?;
}

支持 dry_run() 策略用于审计/演练(全部主动响应禁用,仅记录日志)。

Agent 网络隔离 + 深度包检测(v0.54.0+)

Agent 网络命名空间隔离(SR 5.2)

每个 Agent 子进程在独立的 Linux network namespace 中运行(netns + veth pair),默认启用:

  • netns 名称:eneros-agent-<agent_id>
  • veth 名称:veth-ns-<agent_id>
  • 非 Linux / 非 root 优雅降级(不阻断 spawn)
  • setns 失败时回退到宿主网络

应用层深度包检测(SR 5.4)

eneros-api 中间件检测 4 类攻击模式:

攻击类型 检测模式
SQL 注入 union select / drop table / insert into / or 1=1 / ';-- / sleep()
XSS <script> / javascript: / onerror= / <img ... src= / alert()
路径穿越 ../ / ..\ / /etc/passwd / %2e%2e%2f
命令注入 shell 元字符 / /bin/sh / cmd.exe / powershell / eval()

匹配时返回 HTTP 400,记录客户端 IP 和匹配模式。

KMS 安全擦除(v0.54.0+)

eneros-os 新增 secure_erase() 函数,满足 IEC 62443-4-2 SL3 SR 4.2(信息持久性):

  • 三遍覆写:Pass 1 全 0x00 → Pass 2 全 0xFF → Pass 3 OS CSPRNG 随机字节
  • 每遍后 sync_all() 确保落盘
  • Unix 平台将文件权限置为 000
  • 最后 remove_file() 删除
  • 幂等:文件不存在时返回 Ok(())

v0.53.0 安全合规证据化

v0.53.0 让安全合规从"文档声明"升级为"可执行证据":

交付 说明
SBOM 生成 CycloneDX 1.5 JSON 格式,CI 集成(cargo-cyclonedx)
STRIDE 威胁模型 7 条信任边界 + 5 个威胁场景 + 5 条安全不变量
Argon2id 密码哈希 替代 SHA-256 无盐方案,渐进式 rehash
插件 FS 隔离 unshare(CLONE_NEWNS) + bind mount + 白名单强制(fail-closed)
bincode 2.x 迁移 RUSTSEC 治理 18→16 条 ignore
运行时入侵回归测试 5 类场景:控制命令注入 / Agent 越权 / 插件逃逸 / 跨租户泄露 / LLM 提示注入

三层防御

工具 频率 触发
静态分析 SAST(CodeQL / Semgrep) 每次 PR 严重漏洞阻塞合并
依赖审计 cargo audit 每次 PR + 每日 cron RUSTSEC 漏洞
许可证检查 cargo deny 每次 PR GPL/AGPL 拒绝

已知限制(v0.55.0)

  • IOC 威胁情报仍仅 JSON 文件加载,未集成威胁情报平台(如 MISP);但 v0.54.0 起通过 AutoResponder 提供主动响应能力
  • 行为基线仅 API 层,未覆盖事件总线流量
  • WORM 仅 Linux chattr +a,未支持对象存储 WORM(如 S3 Object Lock)
  • 合规报告生成需手动触发,未支持定时报告
  • AutoResponder 主动响应(BanIp / QuarantineAgent)仅支持 Linux,Windows/macOS 仅记录日志

相关文档

Clone this wiki locally