kguardian-dev/kguardian

GitHub: kguardian-dev/kguardian

kguardian 是一个基于 eBPF 的 Kubernetes 安全工具包,自动生成网络策略与 Seccomp 配置以提升集群安全性。

Stars: 54 | Forks: 1

# kguardian: Kubernetes 安全配置文件生成器 [![Go Report Card](https://goreportcard.com/badge/github.com/kguardian-dev/kguardian)](https://goreportcard.com/report/github.com/kguardian-dev/kguardian) [![License](https://img.shields.io/badge/License-BSL%201.1-blue.svg)](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 监控, 上游代理, 子域名突变, 安全加固, 安全策略生成, 客户端加密, 开源安全工具, 日志审计, 最小权限, 模型鲁棒性, 网络策略, 自动化安全分析, 逆向工程平台