ShinigamiKiko/wolfee-watcher

GitHub: ShinigamiKiko/wolfee-watcher

一个 Kubernetes 运行时安全监控平台,通过中央服务统一管理多个安全 agent,提供 eBPF 系统调用追踪、审计事件、镜像漏洞扫描和蜜罐等安全监控能力。

Stars: 0 | Forks: 0

Wolfee-Watcher

Kubernetes runtime-security 平台 — 一个中央 UI/backend,周围环绕着 security agents,全部通过强制 mTLS 进行通信。

一个中央服务(`kvisior`)提供 React UI 并代理到一组 Go agent,这些 agent 负责监控集群:eBPF syscalls(通过 Tracee)、Kubernetes audit events、文件/forensic 变更、image vulnerabilities、honeypots 以及 behavioural anomalies。每个服务到服务的调用都使用 mTLS,证书由 `cert-server` 签发和 轮换。部署只需一个 Helm chart 到 `wolfee-watcher` namespace。 ## 架构 在 GitHub 上渲染。交互式版本(拖拽、点击高亮、dark mode)位于 [`docs/architecture.html`](docs/architecture.html)。 ``` flowchart TB kvisior(["kvisior — Central
React UI + Go backend"]) browser([Browser / Operator]) tracee[tracee — eBPF DaemonSet] bridge[tracee-bridge] anomaly[anomaly-detector] kafka[(Kafka — tracee-events)] postgres[(PostgreSQL)] migrate[central-migrate Job] certserver[cert-server] sentry[sentry-audit] auditrunner[audit-runner] forensic[forensic-watcher] honeyop[honey-operator] honeypot[honeypot] sensor[sensor] scanner[scanner-agent] harbor[Harbor / Registry] grypedb[Grype Vuln DB] browser -->|HTTPS / Ingress| kvisior kvisior -.->|/api| bridge kvisior -.->|/scanner| scanner kvisior -.->|/sensor| sensor kvisior -.->|/sentry| sentry kvisior -.->|/anomaly| anomaly kvisior -.->|/honey| honeyop kvisior -.->|/audit| auditrunner sentry -->|push| kvisior forensic -->|push| kvisior sensor -->|push| kvisior scanner -->|push scan / pull harbor| kvisior auditrunner -->|push| kvisior honeyop -->|push| kvisior anomaly -->|alerts / rules| kvisior bridge -->|alerts / rules| kvisior tracee -->|webhook| bridge bridge -->|produce| kafka kafka -->|consume| anomaly kafka -->|consume| kvisior kvisior --> postgres bridge -.->|fallback| postgres anomaly --> postgres migrate -->|schema / roles| postgres honeyop -->|deploy/watch| honeypot scanner -->|pull images| harbor scanner -->|vuln DB| grypedb certserver -.->|mTLS certs| kvisior classDef hub fill:#a371f7,stroke:#6f42c1,color:#fff,stroke-width:2px; class kvisior hub; ``` `cert-server` 向每个 Go 服务签发轮换的 TLS 1.3 client cert;为了 可读性,上方图中省略了这些连接。 ## 快速开始(单节点开发环境) ``` # 构建所有镜像并导入节点的 containerd ./1.sh # 生成 CA + 每个服务的证书 cd pkg/certgen && go run . -out ../../deploy/certs -namespace wolfee-watcher && cd ../.. # Namespace + CA secret kubectl create ns wolfee-watcher kubectl apply -f deploy/certs/00-ca-key-secret.yaml -n wolfee-watcher # 安装 helm install wolfee-watcher ./helm -n wolfee-watcher \ --set namespace.create=false \ --set global.internalPushSecret="$(openssl rand -hex 32)" \ --set ui.ingress.host=kvisior8.127.0.0.1.nip.io \ --set ui.ingress.denyInternalPaths=true \ --set networkPolicy.nodeCIDRs="{10.0.0.0/8}" ``` 初始管理员密码会在 migrate Job 日志中打印一次: ``` kubectl logs -n wolfee-watcher job/central-migrate ``` 在您设置的 `ui.ingress.host` 处打开 UI。 ## 生产环境注意事项 - **多节点:**构建并推送 image 到 registry,然后设置 `image.repository`、`image.tag` 和 `image.pullPolicy: IfNotPresent`。单节点 默认值(`localhost/wolfee-watcher/*`、`pullPolicy: Never`)要求每个节点上都存在该 image。 - **必须设置 `global.internalPushSecret`** — 空值会禁用 `/internal/push/*` endpoint 上的身份验证,因此安装将因禁用而失败。 - **必须设置 `networkPolicy.nodeCIDRs`**(当 `networkPolicy.enabled=true` (默认)且使用 Tracee 时):Tracee 运行在 hostNetwork 中,并从节点 IP 访问 `tracee-bridge:8080`。如果未设置,chart 将无法渲染。 - **强制 mTLS** — 无 plaintext fallback。缺失 CA material 意味着 pod 将拒绝启动。 - **仅通过 Helm 安装**,且**不要**使用 `--wait`:`central-migrate` hook 和 pod 的 `wait-for-schema` init 在 `--wait` 下会发生死锁。 - **管理好您自己的 CA。**`deploy/certs/` 中的测试 CA 提交了其密钥 — 仅限开发环境, 切勿用于生产环境。 - 在正式使用前进行审查:Postgres 密码/`sslmode`、各服务的 DB 凭据、image tag、Kafka replication 以及 HA(replica、PDB)。 schema 由 `central-migrate` Job 拥有:它负责应用 DDL,初始化 `admin` 账户,并为每个服务创建一个最小权限(least-privilege)角色。只有 `kvisior` 和 `anomaly-detector` 拥有直接的 DB 访问权限;`tracee-bridge` 仅在 Central 宕机时作为 fallback 写入 Postgres。 ## 文档 - [`DEPLOY.md`](DEPLOY.md) — 完整的部署参考 - [`helm/UPGRADE.md`](helm/UPGRADE.md) — 升级说明 - [`CONTRIBUTING.md`](CONTRIBUTING.md) — 构建、布局、约定 - [`SECURITY.md`](SECURITY.md) — 报告漏洞 ## License [MIT](LICENSE) © Anton Karpov
标签:Docker镜像, Web截图, 子域名突变, 容器安全, 底层分析, 日志审计, 测试用例, 自定义脚本