LetzCodeLuxembourg/k8s-eu-audit

GitHub: LetzCodeLuxembourg/k8s-eu-audit

这是一个开源 CLI 工具,用于扫描 Kubernetes 和主机系统以评估欧盟 NIS2 和 DORA 法规符合性,并生成审计就绪报告。

Stars: 11 | Forks: 0

# k8s-eu-audit [![GitHub 发布版本](https://img.shields.io/github/v/release/LetzCodeLuxembourg/k8s-eu-audit)](https://github.com/letzcode/k8s-eu-audit/releases) [![许可证: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Go 报告卡](https://goreportcard.com/badge/github.com/LetzCodeLuxembourg/k8s-eu-audit)](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 ``` ## 演示 ## ![k8s-eu-audit 演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/988bb31821210147.gif) ## 问题所在 像 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, 业务连续性, 事件处理, 威胁检测, 子域名突变, 安全扫描, 审计报告, 日志审计, 时序注入, 欧盟法规, 程序破解, 网络安全, 访问控制, 请求拦截, 隐私保护, 集群扫描