-
Notifications
You must be signed in to change notification settings - Fork 0
Zero Trust Security
中文 | 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 │ │
│ └──────────────────────────────┘ │
└──────────────────────────────────────────────────┘
| 能力 | 说明 |
|---|---|
| 内部 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 = trueEventBus 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| 能力 | 说明 |
|---|---|
| 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"| 能力 | 说明 |
|---|---|
| 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>"| 标准 | 范围 | 文档 |
|---|---|---|
| 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 |
v0.54.0 将 IEC 62443-4-2 SL3 矩阵覆盖度提升至 49/50 = 98%(远超 ≥ 80% 目标),并归档 10 份 SDL 审计证据文档。
| 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% | — |
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 场景 + 信任边界 + 安全不变量 |
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(); // 检测篡改/新增/缺失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 子进程在独立的 Linux network namespace 中运行(netns + veth pair),默认启用:
- netns 名称:
eneros-agent-<agent_id> - veth 名称:
veth-ns-<agent_id> - 非 Linux / 非 root 优雅降级(不阻断 spawn)
-
setns失败时回退到宿主网络
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 和匹配模式。
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 让安全合规从"文档声明"升级为"可执行证据":
| 交付 | 说明 |
|---|---|
| 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 拒绝 |
- IOC 威胁情报仍仅 JSON 文件加载,未集成威胁情报平台(如 MISP);但 v0.54.0 起通过 AutoResponder 提供主动响应能力
- 行为基线仅 API 层,未覆盖事件总线流量
- WORM 仅 Linux
chattr +a,未支持对象存储 WORM(如 S3 Object Lock) - 合规报告生成需手动触发,未支持定时报告
- AutoResponder 主动响应(BanIp / QuarantineAgent)仅支持 Linux,Windows/macOS 仅记录日志
- ADR-0007 零信任
- 多租户 — 多租户 + 零信任组合
- 安全策略 — 漏洞报告流程
-
配置参考 —
[zero_trust]/[threat_detection]/[audit]段 - 主仓库 docs/deployment.md §3.4 — 零信任部署配置
- 主仓库 docs/compliance/ — 合规文档目录
EnerOS Wiki | v0.55.0