LetzCodeLuxembourg/k8s-eu-audit
GitHub: LetzCodeLuxembourg/k8s-eu-audit
这是一个开源 CLI 工具,用于扫描 Kubernetes 和主机系统以评估欧盟 NIS2 和 DORA 法规符合性,并生成审计就绪报告。
Stars: 11 | Forks: 0
# k8s-eu-audit
[](https://github.com/letzcode/k8s-eu-audit/releases)
[](LICENSE)
[](https://goreportcard.com/report/github.com/LetzCodeLuxembourg/k8s-eu-audit)
```
$ k8s-eu-audit scan --framework nis2 --mode hybrid
Scanning cluster: prod-eu-west (3 nodes, 12 namespaces)
Scanning host: linux-node-01 (lynis)
Running: kubescape ✓ trivy ✓ kube-bench ✓ lynis ✓
NIS2 Article 21 Compliance Report
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Article Requirement K8s Host Status
──────────────────────────────────────────────────────────────────
21.2(a) Risk analysis & IS policies 72% 85% ⚠ WARN
21.2(b) Incident handling 45% 0% ✗ FAIL
21.2(c) Business continuity 88% — ✓ PASS
21.2(d) Supply chain security 91% 80% ✓ PASS
21.2(e) Network & IS security 67% 60% ⚠ WARN
21.2(f) Vulnerability handling 54% 40% ⚠ WARN
21.2(g) Effectiveness assessment 80% 75% ✓ PASS
21.2(h) Cyber hygiene & training 76% 90% ⚠ WARN
21.2(i) Access control & asset mgmt 43% — ✗ FAIL
21.2(j) MFA & authentication 55% 30% ✗ FAIL
Overall NIS2 Compliance Score: 63% ⚠ WARN
3 CRITICAL findings require immediate attention:
✗ [21.2(b)] No audit logging on kube-apiserver
✗ [21.2(j)] SSH password authentication enabled (LYNIS-SSH-003)
✗ [21.2(j)] No MFA PAM module configured (LYNIS-AUTH-003)
Full report: k8s-eu-audit-nis2-2026-03-17.html
```
## 演示
## 
## 问题所在
像 Kubescape、Trivy 和 kube-bench 这样的安全扫描器是出色的工具——但它们生成的报告是给 **DevOps 工程师** 看的,而非审计员。它们用 CVE 编号和 CIS 基准指标来沟通。而您的合规官谈论的是 NIS2 条款和 DORA 支柱。
而且它们只关注 Kubernetes。NIS2 和 DORA 覆盖您 **整个 ICT 基础设施** —— Linux 服务器、Windows 工作站、macOS 终端。一个运行在禁用了 FileVault 且启用了 SSH root 登录的节点上的 Kubernetes 集群,是不符合规定的。
`k8s-eu-audit` 就是那个翻译器。它扫描您完整的基础设施技术栈,收集来自开源工具的发现,并将所有问题映射到您的审计员真正关心的欧盟监管框架上。
**没有其他工具能结合:**
- 深度 Kubernetes 扫描(非表面级 API 检查)
- 主机级扫描:Linux 虚拟机、macOS、Windows
- 原生映射到 NIS2 第 21 条和 DORA —— 涵盖 5 个支柱下的全部 14 个 DORA 控制项
- 为审计员设计的报告,而非工程师
- 欧盟本土:位于卢森堡,Apache 2.0 许可证,开放的映射关系
## 适用人群
| 角色 | 如何使用 |
|------|---------|
| **合规审计员** | 运行扫描,获得围绕 NIS2/DORA 条款结构化的报告——无需 Kubernetes 或 Linux 知识即可阅读输出 |
| **IT 咨询公司** | 在数小时内而非数天内交付 NIS2/DORA 差距评估。`--output report.html` 生成客户就绪的交付物 |
| **CISO 和安全负责人** | 通过 CI/CD 流水线中的 `--fail-on` 阈值进行持续合规监控 |
| **DevOps / 平台工程师** | 在审计员到来之前,了解您基础设施的合规影响 |
## 扫描模式
`k8s-eu-audit` 支持三种扫描模式:
| 模式 | 扫描内容 | 使用场景 |
|------|---------|---------|
| `kubernetes` | 仅 Kubernetes 集群(默认) | CI/CD 准入,开发者工作站 |
| `host` | 仅本地操作系统(Linux/macOS/Windows) | 独立服务器评估 |
| `hybrid` | Kubernetes 集群 + 主机操作系统 | 完整基础设施审计 |
```
# 仅 Kubernetes(默认)
k8s-eu-audit scan --framework nis2
# 仅主机操作系统
k8s-eu-audit scan --framework nis2 --mode host
# 全栈:K8s + 主机
sudo k8s-eu-audit scan --framework nis2 --mode hybrid
```
## 支持的框架
| 框架 | 控制项 | 状态 |
|------|-------|------|
| **NIS2 第 21 条** | 10 项要求(21.2a–j)—— K8s + Linux + macOS + Windows | ✓ 可用 |
| **DORA ICT 风险** | 5 个支柱下的 14 个控制项 —— K8s + Linux + macOS + Windows | ✓ 可用 |
| **CIS Kubernetes 基准** | 通过 kube-bench(原生支持) | ✓ 可用 |
| NIS2 各国转化(DE, LU, FR) | BSI, CSSF, ANSSI 变体 | 🔒 专业版 |
| DORA RTS 技术标准 | 监管技术标准细节 | 🔒 专业版 |
## 安装
### Homebrew(macOS/Linux)
```
brew install LetzCodeLuxembourg/tap/k8s-eu-audit
```
### 二进制文件(所有平台)
从 [GitHub Releases](https://github.com/LetzCodeLuxembourg/k8s-eu-audit/releases) 下载最新版本。
```
# Linux amd64
curl -L https://github.com/LetzCodeLuxembourg/k8s-eu-audit/releases/latest/download/k8s-eu-audit_linux_amd64.tar.gz | tar xz
sudo mv k8s-eu-audit /usr/local/bin/
```
### Docker
```
docker run --rm \
-v ~/.kube/config:/root/.kube/config:ro \
ghcr.io/LetzCodeLuxembourg/k8s-eu-audit:latest \
scan --framework nis2
```
### 从源码安装
```
go install github.com/LetzCodeLuxembourg/k8s-eu-audit/cmd/k8s-eu-audit@latest
```
### 外部扫描器(可选)
`k8s-eu-audit` 编排开源扫描器。安装任意组合 —— 该工具可与任何已安装的扫描器协同工作。
**Kubernetes 扫描器:**
```
# Kubescape
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
# Trivy
brew install trivy # or see https://aquasecurity.github.io/trivy/
# kube-bench — 参见 https://github.com/aquasecurity/kube-bench#installation
```
**主机扫描器:**
```
# Lynis — Linux 虚拟机加固(需 root 权限以获取完整结果)
apt install lynis # Ubuntu/Debian
yum install lynis # RHEL/CentOS
brew install lynis # macOS (limited checks)
```
## 使用方法
### 基本扫描
```
# 扫描 Kubernetes 集群以评估 NIS2 Article 21 合规性
k8s-eu-audit scan --framework nis2
# 扫描以评估 DORA ICT 风险(全部 14 项控制措施,5 大支柱)
k8s-eu-audit scan --framework dora
# 一次运行评估两个框架
k8s-eu-audit scan --framework nis2,dora
```
### 主机和混合扫描
```
# 仅扫描本地主机(Linux/macOS/Windows)
k8s-eu-audit scan --framework nis2 --mode host
# 全栈:Kubernetes + 主机操作系统
sudo k8s-eu-audit scan --framework dora --mode hybrid
# 通过 SSH 连接远程 Linux 虚拟机
k8s-eu-audit scan --framework nis2 --mode host \
--ssh-host user@192.168.1.10 \
--ssh-key ~/.ssh/id_rsa
```
### 输出格式
```
# 终端表格(默认)
k8s-eu-audit scan --framework nis2
# HTML 报告 — 在浏览器中打开,与审计员共享
k8s-eu-audit scan --framework nis2 --output report.html
# Markdown — 适用于 wiki、Confluence、文档
k8s-eu-audit scan --framework nis2 --format markdown --output report.md
# JSON — 适用于仪表板、集成、自定义工具
k8s-eu-audit scan --framework nis2 --format json --output results.json
```
### CI/CD 集成
```
# 合规评分低于 70% 时退出代码为 1
k8s-eu-audit scan --framework nis2 --fail-on 70
```
```
# .github/workflows/compliance.yaml
- name: NIS2 Compliance Check
run: k8s-eu-audit scan --framework nis2 --fail-on 70
- name: DORA Compliance Check
run: k8s-eu-audit scan --framework dora --fail-on 75
```
### 范围控制
```
# 特定 Kubernetes 命名空间
k8s-eu-audit scan --framework nis2 --namespace production
# 自定义 kubeconfig
k8s-eu-audit scan --framework nis2 --kubeconfig ~/.kube/prod-config
```
### 发现
```
k8s-eu-audit list frameworks
k8s-eu-audit list controls --framework dora
k8s-eu-audit list scanners
k8s-eu-audit version
```
## 工作原理
```
┌─────────────────────────────────────────────────────────────────┐
│ OUTPUT LAYER │
│ Terminal table │ HTML │ Markdown │ JSON │
└────────────────────────────┬────────────────────────────────────┘
│
┌─────────────────────────────┴──────────────────────────────────┐
│ k8s-eu-audit ENGINE │
│ ┌───────────────┐ ┌───────────────┐ ┌──────────────────┐ │
│ │ NIS2 Mapper │ │ DORA Mapper │ │ Score Calculator │ │
│ └───────────────┘ └───────────────┘ └──────────────────┘ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Scanner Orchestrator │ │
│ │ Normalises · Merges · Deduplicates findings │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────┬─────────────────────┬──────────────┬─────────────┘
│ │ │
┌──────────┴───────┐ ┌──────────┴──────┐ ┌───┴─────────────┐
│ KUBERNETES │ │ LINUX VM │ │ macOS/Windows │
│ │ │ │ │ │
│ Kubescape │ │ Lynis │ │ Built-in OS │
│ Trivy │ │ (SSH, firewall, │ │ commands only │
│ kube-bench │ │ auditd, MFA, │ │ No deps needed │
│ │ │ kernel, USB) │ │ │
└──────────────────┘ └──────────────────┘ └─────────────────┘
```
### 评分
```
Control score = (PASS findings / total findings) × 100
PASS ≥ 80% control satisfied
WARN ≥ 50% partial compliance, action recommended
FAIL < 50% control violated, remediation required
SKIP no data scanner not installed or not applicable
```
总体得分:加权平均 —— 严重(CRITICAL)× 3,高(HIGH)× 2,中(MEDIUM)× 1,低(LOW)× 0.5。
## NIS2 第 21 条映射
参见 [`internal/mapping/nis2.yaml`](internal/mapping/nis2.yaml)。
| 条款 | 要求 | K8s | Linux | macOS | Windows |
|------|------|-----|-------|-------|---------|
| 21.2(a) | 风险分析与信息安全策略 | Pod 安全、能力 | ASLR、dmesg、内核 | SIP | UAC |
| 21.2(b) | 事件处理 | K8s 审计日志 | auditd、syslog | OpenBSM | 安全审计策略 |
| 21.2(c) | 业务连续性 | PDB、副本数 | — | — | — |
| 21.2(d) | 供应链安全 | 镜像仓库、标签 | — | Gatekeeper | Defender 防病毒 |
| 21.2(e) | 网络与信息安全 | NetworkPolicy、etcd | 防火墙、加密 | FileVault、应用防火墙 | BitLocker、防火墙、SMBv1 |
| 21.2(f) | 漏洞处理 | CVE 数量、镜像新鲜度 | 更新、软件包 | 待处理更新 | Windows Update、Defender |
| 21.2(g) | 有效性评估 | CIS 基准、RBAC | AIDE/Tripwire | — | — |
| 21.2(h) | 网络卫生与培训 | RBAC、cluster-admin | USB、密码策略 | — | 密码策略 |
| 21.2(i) | 访问控制 | 匿名认证、RBAC | — | — | — |
| 21.2(j) | MFA 与身份验证 | 匿名访问、RBAC | SSH 加固、PAM MFA | 屏幕锁定、SSH | RDP+NLA、屏幕锁定 |
## DORA ICT 风险映射
DORA 自 2025 年 1 月起适用于约 22,000 家欧盟金融实体。在卢森堡由 CSSF 监管(通知 25/880–25/883)。参见 [`internal/mapping/dora.yaml`](internal/mapping/dora.yaml)。
**5 个支柱下的 14 个控制项:**
| 控制项 | 条款 | 验证内容 |
|--------|------|---------|
| `dora-rm-1` | 第 5–7 条 | 治理:工作负载安全 + 所有主机上的防火墙 |
| `dora-rm-2` | 第 8–9 条 | 资产保护:NetworkPolicy + 磁盘加密 |
| `dora-rm-3` | 第 10 条 | 异常检测:K8s 审计 + auditd + Windows 安全审计 |
| `dora-rm-4` | 第 11–12 条 | 业务连续性:PDB + 多副本(RTO/RPO) |
| `dora-rm-5` | 第 13–14 条 | 培训指标:RBAC 卫生 + 密码策略 |
| `dora-inc-1` | 第 17–18 条 | 检测与报告:CSSF SERIMA 审计追踪(4小时/24小时/1个月) |
| `dora-inc-2` | 第 19–20 条 | 响应与遏制:网络分段 + 恢复 |
| `dora-test-1` | 第 24–25 条 | 弹性测试:打补丁 + Defender + 文件完整性 |
| `dora-test-2` | 第 26 条 | TLPT 前提:用于红队证据的审计追踪 |
| `dora-tpp-1` | 第 28–30 条 | 供应链:可信仓库 + Gatekeeper + 信息登记簿 |
| `dora-tpp-2` | 第 31–36 条 | 合同:外部工作负载的最小权限 + NLA |
| `dora-tpp-3` | 第 37–44 条 | CTPP 监督:HA + 可移植性指标 |
| `dora-share-1` | 第 45–56 条 | 信息共享:出口控制 + 加密 |
| **`dora-auth-1`** | **第 9(2) 条** | **MFA(CSSF 优先事项):SSH + PAM MFA + RDP NLA + 全面屏幕锁定** |
## 主机扫描器参考
### Linux — Lynis
| 检查 ID | 验证内容 | 映射到 |
|----------|---------|-------|
| `LYNIS-SSH-001/002/003` | Root 登录、协议版本 2、仅密钥认证 | 21.2(j) / dora-auth-1 |
| `LYNIS-FW-001/002` | 防火墙已安装并激活 | 21.2(e) / dora-rm-1 |
| `LYNIS-LOG-001/002/003` | syslog + auditd + 日志轮转 | 21.2(b) / dora-rm-3 |
| `LYNIS-ENC-001` | 已安装加密工具 | 21.2(e) / dora-rm-2 |
| `LYNIS-UPD-001/002` | 更新已应用,无易受攻击的软件包 | 21.2(f) / dora-test-1 |
| `LYNIS-AUTH-001/002/003` | 密码过期、长度、**PAM MFA 模块** | 21.2(j) / dora-auth-1 |
| `LYNIS-INT-001` | 文件完整性(AIDE/Tripwire) | 21.2(g) / dora-test-1 |
| `LYNIS-KERN-001–004` | ASLR、dmesg、rp_filter、ICMP 重定向 | 21.2(a) / dora-rm-1 |
| `LYNIS-USB-001` | USB 存储已禁用 | 21.2(h) / dora-rm-5 |
### macOS — 仅使用内置工具
| 检查 ID | 验证内容 | 映射到 |
|----------|---------|-------|
| `MACOS-FV-001` | FileVault 加密 | 21.2(e) / dora-rm-2 |
| `MACOS-FW-001/002` | 应用防火墙 + 隐身模式 | 21.2(e) / dora-rm-1 |
| `MACOS-SIP-001` | 系统完整性保护 | 21.2(a) / dora-rm-1 |
| `MACOS-GK-001` | Gatekeeper(已签名的软件) | 21.2(d) / dora-tpp-1 |
| `MACOS-UPD-001` | 无待处理的安全更新 | 21.2(f) / dora-test-1 |
| `MACOS-SCR-001` | 需立即输入密码的屏幕锁定 | 21.2(j) / dora-auth-1 |
| `MACOS-SSH-001/002` | 远程登录 / SSH root 已禁用 | 21.2(j) / dora-auth-1 |
| `MACOS-SHR-001/002/003` | 屏幕/文件/远程管理共享关闭 | 21.2(e) / dora-share-1 |
| `MACOS-LOG-001` | OpenBSM 审计已配置 | 21.2(b) / dora-inc-1 |
### Windows — 仅使用 PowerShell
| 检查 ID | 验证内容 | 映射到 |
|----------|---------|-------|
| `WIN-BL-001` | 系统驱动器上的 BitLocker | 21.2(e) / dora-rm-2 |
| `WIN-FW-001/002/003` | Defender 防火墙 —— 所有配置文件 | 21.2(e) / dora-rm-1 |
| `WIN-AV-001/002` | Defender 已启用 + 定义更新 | 21.2(f) / dora-tpp-1 |
| `WIN-UPD-001/002` | Windows Update 服务 + 自动更新 | 21.2(f) / dora-test-1 |
| `WIN-AUD-001/002/003` | 登录 + 权限审计 + 日志大小 >100MB | 21.2(b) / dora-inc-1 |
| `WIN-PWD-001/002` | 密码过期 + 最小长度 | 21.2(j) / dora-auth-1 |
| `WIN-RDP-001/002` | RDP 已禁用或需要 NLA | 21.2(j) / dora-auth-1 |
| `WIN-UAC-001` | 用户账户控制已启用 | 21.2(a) / dora-rm-1 |
| `WIN-SCR-001` | 需要密码的屏幕锁定 | 21.2(j) / dora-auth-1 |
| `WIN-SMB-001` | SMBv1 已禁用(缓解永恒之蓝) | 21.2(e) / dora-rm-2 |
## 设计原则
1. **只读** —— 从不修改任何集群资源、主机文件或注册表项
2. **优雅降级** —— 缺少扫描器 = 跳过,绝不报错
3. **离线能力** —— 所有框架映射在构建时嵌入二进制文件
4. **审计员优先** —— 报告按监管条款结构化,无需 K8s 知识即可阅读
5. **快速** —— 完整的混合扫描在 90 秒内完成
6. **CI/CD 就绪** —— `--fail-on` 阈值,退出码 0(通过)/ 1(失败)
7. **可扩展** —— 新框架 = 新 YAML 文件,无需更改代码
8. **零遥测** —— 无回拨、无分析,数据不离开您的基础设施
9. **欧盟本土** —— 位于卢森堡,欧盟数据驻留,Apache 2.0 许可证
## 路线图
**v0.1.0**(当前)
- [x] NIS2 第 21 条 —— 完整映射,K8s + Linux + macOS + Windows
- [x] DORA ICT 风险 —— 14 个控制项,5 个支柱,所有主机层
- [x] Kubescape + Trivy + kube-bench + Lynis 编排
- [x] macOS 扫描器(内置工具)
- [x] Windows 扫描器(PowerShell)
- [x] 扫描模式:`kubernetes` / `host` / `hybrid`
- [x] 终端、HTML、Markdown、JSON 输出
- [x] CI/CD `--fail-on` 模式
**v0.2.0**(计划中)
- [ ] SSH 远程主机扫描(`--ssh-host user@server`)
- [ ] DORA RTS(监管技术标准)细节映射
- [ ] 多集群聚合
- [ ] 趋势报告:扫描间的差异
**v0.3.0**(计划中)
- [ ] NIS2 各国转化:DE (BSI), LU (CSSF), BE, FR (ANSSI)
- [ ] PDF 审计就绪报告
- [ ] 带有 Slack/Teams 告警的计划扫描
- [ ] CRA(网络弹性法案)—— 2027 年 12 月生效
请查看 [GitHub Issues](https://github.com/LetzCodeLuxembourg/k8s-eu-audit/issues) 对功能进行投票。
## 关于
由 [Łukasz Ozimek](https://linkedin.com/in/lukaszozimek1) 构建 —— [Letz Code S.A.R.L.](https://letzcode.io),卢森堡。
拥有 6 年在欧盟委员会管理 300 多个 Kubernetes 集群的经验。与 CSSF(卢森堡金融监管机构)、Mastercard 以及受监管行业的大规模基础设施有直接合作经验。安全许可:绝密(北约、欧洲航天局、欧盟)。
这个工具的存在是因为我不断看到同样的差距:安全团队拥有出色的扫描工具,合规团队拥有出色的 GRC 平台,但没有任何工具能以欧盟监管机构实际使用的语言将两者连接起来——跨越整个基础设施技术栈,而不仅仅是 Kubernetes。
**有问题或想讨论您的 NIS2/DORA 差距评估吗?**
→ [lo@letzcode.io](mailto:lo@letzcode.io)
→ [LinkedIn](https://linkedin.com/in/lukaszozimek1)
→ [GitHub Issues](https://github.com/letzcode/k8s-eu-audit/issues)
## 许可证
Apache 2.0 —— 参见 [LICENSE](LICENSE)。
框架映射文件(`internal/mapping/*.yaml`)同样采用 Apache 2.0 许可证。可自由使用、修改和重新分发,但需注明出处。
*`k8s-eu-audit` 与 ENISA、欧盟委员会、CSSF 或任何监管机构无关。结果为技术评估,不构成正式的合规认证或法律意见。在依赖结果进行监管目的之前,请务必与合格的合规专业人士进行验证。*
标签:AMSI绕过, Chrome Headless, DORA合规, EVTX分析, Go语言, Kubernetes安全, LNA, NIS2合规, Streamlit, 业务连续性, 事件处理, 威胁检测, 子域名突变, 安全扫描, 审计报告, 日志审计, 时序注入, 欧盟法规, 程序破解, 网络安全, 访问控制, 请求拦截, 隐私保护, 集群扫描