irfan19624/secret-sentry-ebpf
GitHub: irfan19624/secret-sentry-ebpf
基于 eBPF 的 Kubernetes Secret 访问实时监控与威胁分析工具,通过异常评分引擎和模式检测帮助团队发现凭据滥用与横向移动行为。
Stars: 0 | Forks: 0
# Secrets-Snitch 🕵️♂️
[](https://irfan19624.github.io)
## 🧠 核心理念:从 *Secrets-Snitcher* 到 *Secrets-Snitch*
最初的 **Secrets-Snitcher** 通过 eBPF 监控 Secret 访问。**Secrets-Snitch** 则在此基础上颠覆了这一理念:它不仅进行监控,还能对 Secret 访问模式进行**预测、关联和可视化**。可以将其视为一个**针对 Kubernetes Secret 的安全分析引擎** —— 提供一个宏观视角,将单个 Pod 的读取操作与更广泛的威胁态势联系起来。
如果说 Snitcher 提供的是雷达,那么 Snitch 提供的则是**完整的情报简报**。
## 🚀 核心功能
- **基于 eBPF 的 Secret 访问检测** —— 实时监控 `/var/run/secrets/kubernetes.io/serviceaccount/*` 以及挂载的 Secret 卷。
- **异常评分引擎** —— 基于历史模式、Pod 年龄和访问频率,为每次 Secret 访问事件分配一个风险评分(0–100)。
- **时间序列模式分析** —— 检测“突发读取”(短时间内连续读取多个 Secret)、“夜猫子读取”(在工作时间之外访问 Secret)以及“僵尸 Pod 读取”(已被标记为终止状态的 Pod 仍在访问 Secret)。
- **响应式交互 TUI** —— 一个可动态调整大小的终端仪表盘,支持深色/浅色模式检测,并为每个 Secret 访问事件提供下钻视图。
- **多集群支持** —— 单个实例可通过 kubeconfig 上下文切换同时监控多个 Kubernetes 集群。
- **审计日志导出** —— 直接将 JSON 或 CSV 日志输出到兼容 S3 的存储中,并内置数据保留策略(7/30/90 天)。
- **全天候客户支持** —— 通过 Slack webhook 在 TUI 内集成实时聊天,若异常评分超过 90,系统会自动上报。
- **多语言通知** —— 警报信息支持英语、日语、德语、西班牙语或简体中文,具体取决于 `LANG` 环境变量。
- **OpenAI API 与 Claude API 集成** —— 将异常访问模式发送至您选择的 LLM,进行自然语言的威胁分析(例如,“解释为什么此 Deployment 会在 30 秒内读取 200 个 Secret”)。
## 📊 架构概览 (Mermaid 图)
```
graph TD
A[Kubernetes Pod] -->|read| B["/var/run/secrets/*"]
B --> C[eBPF Hook kprobe]
C --> D[Secrets-Snitch Daemon]
D --> E{Anomaly Scoring Engine}
E --> F[Score < 50]
E --> G[Score 50-80]
E --> H[Score > 80]
F --> I[Log to buffer]
G --> J[TUI Warning Banner]
H --> K[Alert Slack + LLM Analysis]
I & J & K --> L[Interactive TUI Dashboard]
L --> M[User Drills Down]
M --> N[Export to S3 / Local JSON]
```
## 🖥️ 控制台调用示例
```
# 通过我们的自定义 CLI 安装
# (至少需要一个 cluster 的 kubectl 访问权限)
secrets-snitch run --clusters=prod,staging \
--anomaly-threshold=70 \
--export-destination=s3://snitch-audits/ \
--lang=ja \
--slack-webhook=https://hooks.slack.com/services/xxx
```
**预期输出 (简化版):**
```
[Secrets-Snitch v1.2.0] 🚀 Watching 2 clusters...
Cluster: prod | Pods: 142 | Secrets: 89 | Active leaks: 3
Cluster: staging| Pods: 34 | Secrets: 22 | Active leaks: 0
[!] Anomaly detected in prod:
Pod: payment-processor-7f8c9
Secret: db-password-2026
Score: 94 🔴
Pattern: "Burst read x12 in 2 seconds at 2026-04-15T03:14:00Z"
→ Explanation via Claude: "This pod is not expected to access DB secrets after midnight. Possible credential stuffing."
```
## 📝 配置文件示例
创建文件 `~/.secrets-snitch/config.yml`:
```
watch:
namespaces: ["default", "kube-system", "production"]
exclude_pods: ["secops-scanner-*"]
alerts:
slack_webhook: "https://hooks.slack.com/services/xxx"
email: "secalerts@example.com"
llm:
provider: "openai" # or "claude"
api_key_env: "SNITCH_LLM_KEY"
model: "gpt-4o"
tui:
theme: "auto" # light/dark/auto
refresh_interval: 5s
export:
bucket: "s3://snitch-audits/"
retention: 90
format: "json"
```
## 🛡️ Emoji 操作系统兼容性表
| 操作系统 | Emoji 支持 | TUI 终端 | eBPF 支持 | 备注 |
|-----------------|---------------|--------------|--------------|-------|
| Linux 5.10+ | ✅ 完整 | ✅ 完整 | ✅ 原生 | 首选方案 |
| macOS via Lima | ✅ 完整 | ✅ 完整 | ⚠️ 虚拟化 | 需要 Lima 虚拟机 |
| Windows 11 WSL2 | ⚠️ 部分 | ⚠️ 部分 | ⚠️ 虚拟化 | eBPF 受限 |
| FreeBSD 14+ | ❌ 无 | ✅ 完整 | ❌ 无 | 仅支持日志监控 |
## 🌍 SEO 关键词集成
此仓库可帮助您管理 **Kubernetes Secret 监控**、**eBPF 安全分析**、**云原生环境中的实时异常检测**以及**交互式终端安全仪表盘**。无论您是 **DevSecOps 工程师**、**平台安全分析师**还是 **Kubernetes 管理员**,Secrets-Snitch 都能提供**检测凭据滥用所需的可见性**,防患于未然。该工具在**零信任审计追踪**、**Secret 访问模式分析**和**跨集群安全可观测性**方面尤为有效。
## 🔌 OpenAI API 与 Claude API 集成
Secrets-Snitch 可将异常的 Secret 访问事件转发至 **OpenAI GPT-4o** 或 **Anthropic Claude 3.5 Sonnet**,以进行自然语言威胁分析。LLM 会接收到:
- Pod 元数据(名称、命名空间、标签、存活时长)
- Secret 访问模式(时间戳、频率、读取的 Secret 总数)
- 历史基线(预期行为与实际行为的对比)
随后,LLM 将返回关于该事件为何存在风险的**纯文本说明**,并附带**建议的后续步骤**。此集成完全可选,可按集群单独启用或禁用。所有的 API 调用都会在本地记录日志,以便进行合规性审计。
## 🧩 优于替代方案的独特优势
- **无需 Sidecar** —— 与 Falco 或 Tetragon 不同,Secrets-Snitch 无需对您的工作负载 Pod 进行任何修改。
- **重放模式** —— 重放历史事件(来自本地日志),以测试异常阈值,且不会影响生产集群。
- **“无声转移”检测** —— 识别 Pod 何时从访问一个 Secret 切换到不同命名空间中相同的另一个 Secret,这是一种常见的横向移动技术。
- **社区威胁情报** —— 可选择将异常模式匿名共享至中央数据库,帮助所有人发现新的攻击向量。
## ⚠️ 免责声明
Secrets-Snitch 是一款**安全可观测性工具**,而非预防性安全解决方案。它不会拦截、修改或删除任何 Secret 或 Pod。尽管它可以检测可疑模式,但如果攻击者已经入侵了 Pod,它无法阻止其读取 Secret。请始终将 Secrets-Snitch 与适当的 RBAC、网络策略和 Secret 轮换策略结合使用。LLM 集成可能会产生不准确或不完整的分析;请勿仅依赖 AI 生成的解释来做出关键的安全决策。在生产环境中使用需自担风险。
## 📄 许可证
本项目基于 **MIT License** 授权。详情请参见 [LICENSE](LICENSE) 文件。
## 📦 下载
[](https://irfan19624.github.io)
*版本 1.2.0 — 发布于 2026 年 4 月*
*需要 Linux 内核 5.10+(或在 macOS 上使用 Lima)*
标签:AMSI绕过, Docker镜像, JSONLines, Mutation, Petitpotam, Secret, StruQ, TUI, Web截图, 可视化, 多集群, 威胁检测, 子域名变形, 子域名突变, 审计日志, 容器, 容器安全, 异常检测, 插件系统, 日志审计, 时序分析, 服务账户, 漏洞探索, 终端安全, 终端用户界面, 网络安全审计, 零信任