topcug/k8s-runtime-replay

GitHub: topcug/k8s-runtime-replay

通过在本地 kind 集群中触发可重现的 Kubernetes 运行时行为,帮助安全团队验证 Falco 等检测工具的规则覆盖和告警有效性。

Stars: 0 | Forks: 0

# k8s-runtime-replay

k8s-runtime-replay

安全、可重复的 Kubernetes 运行时场景,用于检测演示、研讨会和规则验证。 本仓库提供小型、范围明确的运行时行为,易于触发、观察和清理 — 无需任何破坏性操作或生产环境访问。 **本仓库首先验证运行时行为生成,其次验证检测映射。** ## 适用对象 - **平台工程师**验证其集群上的检测覆盖范围 - **安全工程师**测试 Falco 规则和审计日志管道 - **研讨会培训师**运行实时 Kubernetes 安全演示 - **Falco 用户**根据实际工作负载行为验证规则命中 - **规则作者**需要可重现的触发条件 ## 快速开始 ``` # 创建本地测试集群(需要 kind + Docker) make setup-kind # 安装 Falco(可选 — 场景可以在没有它的情况下运行) make setup-falco # 运行场景 make scenario-shell-spawn # 在第二个终端中查看 Falco 告警 make logs-falco # 清理 make cleanup-shell-spawn ``` ## 场景 | 场景 | 行为 | 预期信号 | 清理 | |----------|----------|-----------------|---------| | `shell-spawn` | 在容器内执行 shell | 容器内 shell 执行 | `make cleanup-shell-spawn` | | `sa-token-read` | 读取挂载的服务账户令牌 | 容器内敏感文件读取 | `make cleanup-sa-token-read` | | `kubectl-exec` | 触发 `kubectl exec` 审计事件 | Pod 附加/执行审计事件 | `make cleanup-kubectl-exec` | | `curl-egress` | 从容器发出出站 HTTP 请求 | 意外出站连接 | `make cleanup-curl-egress` | | `secret-enumeration` | 从容器内列出 Kubernetes Secrets | 容器内 K8s API 联系 | `make cleanup-secret-enumeration` | ``` # 查看所有场景 make list-scenarios ``` ## 设计安全 - **无破坏性操作** — 场景永远不会删除、修改或泄露真实数据。 - **隔离命名空间** — 所有工作负载在专用的 `k8s-replay` 命名空间中运行。 - **完全清理** — 每个场景都有清理目标,可移除所有资源。 - **生产环境防护** — 如果当前上下文看起来像生产集群,脚本将拒绝运行。 - **安全提示** — 每个触发脚本在执行任何操作前都会打印明确的提示。 - **仅限测试集群** — 这些场景专为 kind、minikube 或专用测试集群设计。 ## 理解场景结果 每个场景将执行和检测报告为**独立状态**: ``` Environment checks PASS Scenario deploy PASS Scenario trigger PASS Detection backend Falco Detection verification FAIL (see below for likely causes) ``` 如果未安装 Falco: ``` Environment checks PASS Scenario deploy PASS Scenario trigger PASS Detection backend NOT INSTALLED Detection verification SKIPPED ``` 当行为被触发且可观察时,无论检测结果如何,场景都被视为**成功**。检测验证是第二层,取决于您安装的规则集和版本。 ## 所有 make 目标 ``` make help # show all targets # 设置 make setup-kind # create a local kind cluster make setup-falco # install Falco via Helm # 场景 make scenario-shell-spawn make scenario-sa-token-read make scenario-kubectl-exec make scenario-curl-egress make scenario-secret-enumeration # 清理 make cleanup- # remove a specific scenario make cleanup # delete the k8s-replay namespace make reset # full teardown including kind cluster # 工具 make list-scenarios # list available scenarios make logs-falco # filtered Falco alert log view make logs-falco-raw # raw recent Falco logs (useful for format debugging) make list-rules # attempt to infer loaded Falco rule names (best-effort) ``` ## 场景结构 每个场景遵循相同的布局: ``` scenarios// README.md — goal, what gets deployed, what is triggered, expected behavior, detection notes, known rule-name variants, cleanup, safety notes manifests/ — Kubernetes YAML (namespace, workload, RBAC) trigger.sh — deploys and triggers the behavior cleanup.sh — removes all scenario resources ``` ## 可选:使用 Falco 测试 Falco 不是必需的 — 场景可以通过 `kubectl` 和审计日志运行和观察。但如果您想验证运行时规则命中: ``` make setup-falco make scenario-shell-spawn # 在第二个终端中 make logs-falco # 如果没有告警出现,请检查原始日志的格式问题 make logs-falco-raw ``` 有关完整的 Falco 设置说明,请参阅 [docs/falco-setup.md](docs/falco-setup.md)。 ## 文档 - [docs/local-cluster.md](docs/local-cluster.md) — 设置本地 kind 集群 - [docs/falco-setup.md](docs/falco-setup.md) — 安装和验证 Falco - [docs/workshop-mode.md](docs/workshop-mode.md) — 作为结构化研讨会运行 ## 路线图 - [x] v0.1 — 5 个核心场景(shell-spawn、sa-token-read、kubectl-exec、curl-egress、secret-enumeration) - [ ] v0.2 — `privileged-start` 场景 - [ ] v0.3 — 每个场景的 `verify.sh`(自动化信号验证) - [ ] v0.4 — 每个场景的 asciinema 录制 - [ ] v1.0 — Falco 规则映射表,MITRE ATT&CK 标注 ## 许可证 Apache 2.0 — 请参阅 [LICENSE](LICENSE)
标签:AMSI绕过, Cutter, DevSecOps, Docker, EDR, Falco, HTTP工具, K8s审计, kind, Web截图, 上游代理, 威胁检测, 子域名突变, 安全测试, 安全研讨会, 安全运营, 安全防御评估, 审计日志, 容器安全, 容器编排安全, 恶意行为模拟, 扫描框架, 攻击性安全, 敏感词过滤, 无线安全, 网络安全审计, 脆弱性评估, 规则验证, 请求拦截