kguardian-dev/kguardian
GitHub: kguardian-dev/kguardian
kguardian 是一个基于 eBPF 的 Kubernetes 安全工具包,自动生成网络策略与 Seccomp 配置以提升集群安全性。
Stars: 54 | Forks: 1
# kguardian: Kubernetes 安全配置文件生成器
[](https://goreportcard.com/report/github.com/kguardian-dev/kguardian)
[](https://mariadb.com/bsl11/)
kguardian 是一个强大的 Kubernetes 安全工具包,它使用 eBPF 分析运行时行为,并生成定制化的安全资源,如网络策略和 Seccomp 配置文件。
## 目录
- [kguardian: Kubernetes 安全配置文件生成器](#kguardian-kubernetes-security-profile-generator)
- [Table of Contents](#table-of-contents)
- [🌟 功能特性](#-features)
- [🤖 AI 驱动的安全分析(可选)](#-ai-powered-security-analysis-optional)
- [🛠️ 先决条件](#️-prerequisites)
- [📦 安装](#-installation)
- [快速安装脚本(推荐)](#quick-install-script-recommended)
- [Krew](#krew)
- [手动下载](#manual-download)
- [🚀 快速开始](#-quick-start)
- [🔨 用法](#-usage)
- [全局标志](#global-flags)
- [生成资源(`gen`)](#generate-resources-gen)
- [🔒 网络策略(`networkpolicy`, `netpol`)](#-network-policies-networkpolicy-netpol)
- [🛡️ Seccomp 配置文件(`seccomp`, `secp`)](#️-seccomp-profiles-seccomp-secp)
- [🤝 贡献](#-contributing)
- [📄 许可证](#-license)
## 🌟 功能特性
* **网络策略生成**:基于观察到的 Pod 通信自动创建最小权限的网络策略。
* 支持标准的 Kubernetes `NetworkPolicy` 资源。
* 支持 Cilium CNI 用户的 `CiliumNetworkPolicy` 和 `CiliumClusterwideNetworkPolicy`。
* **Seccomp 配置文件生成**:通过分析容器使用的系统调用来生成最小权限的 Seccomp 配置文件。
* **灵活的目标选择**:为单个 Pod、命名空间中的所有 Pod或所有命名空间中的所有 Pod生成策略/配置文件。
* **Dry-Run 模式**:预览生成的资源而不将其应用到集群。
* **文件输出**:将生成的资源保存为 YAML 文件,以便审查或集成到 GitOps 工作流中。
* **AI 驱动分析(可选)**:提供自然语言界面,用于集群安全分析,由多个 LLM 提供支持。
* 使用纯英语询问网络流量和系统调用模式
* 获取 AI 驱动的安全洞察和建议
* 支持 OpenAI、Anthropic Claude、Google Gemini 和 GitHub Copilot
* 使用模型上下文协议(MCP)实现标准化的工具访问
## 与其他工具的对比
下表提供了 kguardian 与 Kubernetes 安全领域其他流行开源工具的高级对比。技术格局发展迅速,因此功能可能会有所变化。
| 功能 | kguardian | Inspektor Gadget | Security Profiles Operator (SPO) |
| :---------------------------- | :-------------------------------- | :--------------------------------- | :------------------------------- |
| **网络策略(K8s)** | ✅ | ✅(网络策略顾问) | ❌ |
| **网络策略(Cilium)** | ✅ | ❌ | ❌ |
| **Seccomp 配置文件生成** | ✅ | 📝(提供系统调用跟踪数据) | ✅(通过日志增强/记录器) |
| **AppArmor 配置文件管理** | ❌ | ❌ | ✅ |
| **SELinux 配置文件管理** | ❌ | ❌ | ✅ |
| **数据源** | kguardian 控制器(eBPF) | eBPF | 系统调用日志 / BPF 记录器 |
| **操作模型** | 客户端 CLI + 服务器控制器 | 客户端 CLI + 服务器小工具 | 服务器操作符 + CRD |
| **Dry Run / 预览** | ✅(网络策略) | ✅(用于顾问的 YAML 输出) | N/A |
| **保存到文件** | ✅(网络策略、Seccomp) | ✅(用于顾问的 YAML 输出) | N/A(使用 CRD) |
| **直接应用(网络策略)** | ✅ | ❌ | N/A |
| **直接应用(Seccomp)** | ❌ | ❌ | ✅ |
*图例:✅ = 支持,❌ = 不支持,📝 = 部分/需要手动步骤,N/A = 不适用*
**关于操作模型的说明:** kguardian 和 Inspektor Gadget 使用与专用服务器端组件(控制器/小工具)进行交互的客户端 CLI,主要用于数据检索。SPO 作为一个完整的 Kubernetes 操作符,通过自定义资源定义(CRD)管理安全配置文件。
**kguardian 的关键差异化:**
* 从单一数据源生成网络策略(K8s 原生 & Cilium)和 Seccomp 配置文件。
* 提供直接应用(网络策略)或保存到文件(用于 GitOps 工作流)的选项。
* 可选的 AI 助手用于自然语言安全分析。
## 🤖 AI 驱动的安全分析(可选)
kguardian 包含可选的 AI 助理功能,允许您使用自然语言查询集群的安全态势。此功能是完全可选的,并且可以独立于核心策略生成功能启用。
### 功能特性
- **自然语言查询**:使用纯英语询问您的集群
- “哪些 Pod 拥有最多的网络连接?”
- “显示 production 命名空间中 nginx Pod 的系统调用”
- “是否存在任何可疑的网络模式?”
- **多提供商支持**:选择您首选的 LLM 提供商
- OpenAI(GPT-4、GPT-4o)
- Anthropic Claude(claude-sonnet-4-5)
- Google Gemini(gemini-2.0-flash)
- GitHub Copilot(gpt-4o)
- **MCP 集成**:使用模型上下文协议(MCP)实现标准化访问集群数据
- 6 个综合工具用于查询网络流量、系统调用和 Pod 信息
- 可被外部 MCP 客户端(如 Claude Desktop)使用
### 启用 AI 功能
```
# Install with AI assistant enabled
helm install kguardian oci://ghcr.io/kguardian-dev/charts/kguardian \
--set llmBridge.enabled=true \
--set mcpServer.enabled=true \
--set llmBridge.secrets.anthropic.enabled=true \
--namespace kguardian --create-namespace
# Create secret with your API key
kubectl create secret generic kguardian-anthropic \
--from-literal=api-key=YOUR_ANTHROPIC_API_KEY \
-n kguardian
```
### 文档
- [LLM 桥接文档](./llm-bridge/README.md) - AI 助理服务架构和配置
- [MCP 服务器文档](./mcp-server/README.md) - 工具访问的模型上下文协议服务器
**注意**:AI 功能需要至少一个受支持 LLM 提供商的 API 密钥。核心 kguardian 功能(通过 CLI 进行策略生成)在未启用 AI 功能时也能正常工作。
## 🛠️ 先决条件
* Linux 内核 6.2+
* Kubernetes 集群 v1.19+
* `kubectl` v1.19+
* kguardian 控制器 **必须** 在集群中安装并运行以收集必要数据
* (对于 Seccomp)支持 seccomp 的 Linux 内核(大多数现代内核)
## 📦 安装
### 安装控制器组件
在使用 CLI 之前,您需要在集群中安装 kguardian 控制器、中继器和 UI:
```
# Install from OCI registry (recommended)
helm install kguardian oci://ghcr.io/kguardian-dev/charts/kguardian \
--namespace kguardian \
--create-namespace
```
有关安装选项和配置的详细信息,请参阅 [安装指南](https://docs.kguardian.dev/installation)。
### 安装 CLI 插件
选择以下方法之一:
#### 快速安装脚本(推荐)
此脚本下载最新的发布版本二进制文件并尝试安装它。
```
sh -c "$(curl -fsSL https://raw.githubusercontent.com/kguardian-dev/kguardian/main/scripts/quick-install.sh)"
```
#### Krew
使用 [Krew](https://krew.sigs.k8s.io/),`kubectl` 的插件管理器:
```
# Ensure Krew is installed: https://krew.sigs.k8s.io/docs/user-guide/setup/install/
kubectl krew install kguardian
```
#### 手动下载
从 [发布页面](https://github.com/kguardian-dev/kguardian/releases) 下载适用于您系统的适当二进制文件,并将其放置在您的 `PATH` 中,文件名为 `kubectl-kguardian`。
示例(Linux AMD64,根据需要替换版本/二进制文件名):
```
# Replace with the correct release URL
wget -O kguardian https://github.com/kguardian-dev/kguardian/releases/download/vX.Y.Z/kguardian-linux-amd64
chmod +x kguardian
sudo mv kguardian /usr/local/bin/kubectl-kguardian
# Verify installation
kubectl kguardian --help
```
## 🚀 快速开始
一旦 kguardian 控制器正在运行并收集数据,您可以生成策略。
1. **生成网络策略(Dry Run,保存到文件):**
# 为特定 Pod 生成('default' 空间)
kubectl kguardian gen networkpolicy my-pod -n default --output-dir ./policies
# 为命名空间中的所有 Pod 生成
kubectl kguardian gen networkpolicy --all -n staging --output-dir ./policies
2. **生成 Seccomp 配置文件(保存到文件):**
# 为特定 Pod 生成('default' 命名空间)
kubectl kguardian gen seccomp my-pod -n default --output-dir ./seccomp
# 为所有命名空间中的所有 Pod 生成
kubectl kguardian gen seccomp -A --output-dir ./seccomp
3. **审查** 生成的 YAML 文件。
4. **(可选)应用策略**:如果对文件或干运行输出满意,删除 `--dry-run`(用于网络策略)或手动应用保存的 YAML 文件(使用 `kubectl apply -f `)。*注意:Seccomp 配置文件目前仅支持保存到文件。*
## 🔨 用法
该插件遵循标准的 `kubectl` 命令结构:
```
kubectl kguardian [command] [subcommand] [flags]
```
### 全局标志
这些标志对大多数命令都可用:
* `--kubeconfig `:要使用的 kubeconfig 文件路径
* `--context `:要使用的 kubeconfig 上下文名称
* `--namespace `, `-n `:此 CLI 请求的命名空间范围
* `--debug`:启用调试日志记录
### 生成资源(`gen`)
这是生成安全资源的主要命令组。
#### 🔒 网络策略(`networkpolicy`, `netpol`)
基于观察到的流量生成 Kubernetes 或 Cilium 网络策略。
**用法:**
```
kubectl kguardian gen networkpolicy [pod-name] [flags]
```
**参数:**
* `[pod-name]`(可选):要为其生成策略的特定 Pod 名称。除非使用 `-a` 或 `-A`,否则为必填项。
**标志:**
* `-n, --namespace `:命名空间范围(默认为当前上下文命名空间,除非使用 `-A`)
* `-a, --all`:为指定/当前命名空间中的所有 Pod 生成策略
* `-A, --all-namespaces`:为所有命名空间中的所有 Pod 生成策略
* `-t, --type `:策略类型:`kubernetes`(默认)或 `cilium`
* `--output-dir `:保存生成策略的目录(默认:`network-policies`)。如果为空,则仅在 Dry-Run 模式下打印策略。
* `--dry-run`:如果为 true(默认),则生成策略并保存/打印而不应用到集群。设置为 `false` 以直接应用 Kubernetes 策略。
**示例:**
```
# Generate Kubernetes policy for 'my-app-pod' in 'prod' namespace (dry-run, save to ./netpols)
kubectl kguardian gen networkpolicy my-app-pod -n prod --output-dir ./netpols
# Generate Cilium policies for all pods in 'dev' namespace (dry-run, save to ./cilium-pols)
kubectl kguardian gen netpol --all -n dev --type cilium --output-dir ./cilium-pols
# Generate and APPLY Kubernetes policies for all pods in all namespaces (save to default dir)
kubectl kguardian gen netpol -A --dry-run=false
# Generate Kubernetes policy for 'my-pod' (dry-run, print to stdout only)
kubectl kguardian gen netpol my-pod --output-dir=""
```
#### 🛡️ Seccomp 配置文件(`seccomp`, `secp`)
基于观察到的系统调用生成 Seccomp 配置文件。
**用法:**
```
kubectl kguardian gen seccomp [pod-name] [flags]
```
**参数:**
* `[pod-name]`(可选):要为其生成配置文件的特定 Pod 名称。除非使用 `-a` 或 `-A`,否则为必填项。
**标志:**
* `-n, --namespace `:命名空间范围(默认为当前上下文命名空间,除非使用 `-A`)
* `-a, --all`:为指定/当前命名空间中的所有 Pod 生成配置文件
* `-A, --all-namespaces`:为所有命名空间中的所有 Pod 生成配置文件
* `--output-dir `:保存生成配置文件的目录(默认:`seccomp-profiles`)。*Seccomp 配置文件生成需要此参数。* `--default-action `:未列出系统调用的默认操作(默认:`SCMP_ACT_ERRNO`)。选项:`SCMP_ACT_ERRNO`、`SCMP_ACT_LOG`、`SCMP_ACT_KILL`。
**示例:**
```
# Generate seccomp profile for 'db-pod' in 'data' namespace (save to ./secp)
kubectl kguardian gen seccomp db-pod -n data --output-dir ./secp
# Generate seccomp profiles for all pods in 'staging' namespace (save to default dir)
kubectl kguardian gen secp --all -n staging
# Generate seccomp profiles for all pods in all namespaces, logging unlisted calls (save to ./all-secp)
kubectl kguardian gen secp -A --default-action SCMP_ACT_LOG --output-dir ./all-secp
```
## 📄 许可证
本项目根据业务源许可证 1.1 授权 - 详细信息请参阅 [LICENSE](LICENSE) 文件。
**摘要:**
- **免费用于**:开发、测试、评估和非生产/非商业用途
- **商业用途**:需要商业许可证(请联系许可方)
- **转换为**:Apache License 2.0(2029 年 1 月 1 日起)
标签:CiliumNetworkPolicy, DevSecOps, Docker镜像, GitHub Advanced Security, Go 语言, Krew, Kubernetes 安全, Kubernetes 工具, Seccomp, Syscall 监控, 上游代理, 子域名突变, 安全加固, 安全策略生成, 客户端加密, 开源安全工具, 日志审计, 最小权限, 模型鲁棒性, 网络策略, 自动化安全分析, 逆向工程平台