crazygit/kube-audit-kit

GitHub: crazygit/kube-audit-kit

kube-audit-kit 是一个基于Claude Code的Kubernetes集群非侵入式安全审计工具,用于检查配置安全性和合规性。

Stars: 29 | Forks: 1

[English](README.md) | [简体中文](README.zh.md) # Kube审计套件 Kube审计套件可导出指定Context/Namespace中的所有资源,对它们进行深度净化,智能分组应用程序,并基于以下行业标准生成全面的安全审计报告: - [Pod安全标准(PSS)](https://kubernetes.io/docs/concepts/security/pod-security-standards/) - [NSA Kubernetes指南](https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/2716980/nsa-cisa-publish-guidance-on-how-to-protect-kubernetes-clusters/) - [CIS Kubernetes基准](https://www.cisecurity.org/benchmark/kubernetes) ## 功能特性 - **非侵入性**:仅执行`get/list`操作,**不会改变**集群状态 - **全面覆盖**:动态发现所有命名空间资源类型,对低价值资源(如事件、绑定)有少量排除列表 - **智能分组**:基于工作负载拓扑关联应用程序资源 - **双重审计**:脚本化静态扫描 + AI专家深度分析 - **类型安全**:完整的Python类型注解 - **优质输出**:基于Rich库的彩色控制台输出 ## 安全覆盖范围 ### 🛡️ Pod安全(基于PSS/NSA) 基于[Pod安全标准](https://kubernetes.io/docs/concepts/security/pod-security-standards/)和[NSA Kubernetes指南](https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/2716980/nsa-cisa-publish-guidance-on-how-to-protect-kubernetes-clusters/) | 检查项 | 描述 | | :--- | :--- | | 特权模式 | 检测`privileged: true` | | 主机命名空间 | 检测`hostNetwork`、`hostPID`、`hostIPC` | | 权限能力 | 检测危险的权限能力增减 | | 安全上下文 | 检测`runAsNonRoot`、`readOnlyRootFilesystem` | | 资源限制 | 检测CPU/内存请求和限制 | | 健康检查 | 检测存活/就绪/启动探针 | | 镜像安全 | 检测`:latest`标签的使用 | ### 🔐 RBAC审计 基于[CIS Kubernetes基准](https://www.cisecurity.org/benchmark/kubernetes)和[Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) | 检查项 | 描述 | | :--- | :--- | | 通配符 | 检测动词/资源/ API组中的`*` | | 高权限 | 检测cluster-admin/admin/edit/view角色 | | 权限过度 | 分析Role/ClusterRole规则范围 | ### 🌐 网络安全审计 基于[NSA网络策略指南](https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/2716980/nsa-cisa-publish-guidance-on-how-to-protect-kubernetes-clusters/)和[CIS NetworkPolicy](https://kubernetes.io/docs/concepts/services-networking/network-policies/) | 检查项 | 描述 | | :--- | :--- | | NetworkPolicy | 检测命名空间网络策略保护 | | 服务暴露 | 检测LoadBalancer/NodePort/externalIPs | | Ingress配置 | 检测TLS配置和暴露的主机 | ### 💾 HostPath挂载检测 基于[CIS Kubernetes基准 5.2.3](https://www.cisecurity.org/benchmark/kubernetes)和[NSA指南第3.3节](https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/2716980/nsa-cisa-publish-guidance-on-how-to-protect-kubernetes-clusters/) | 检查项 | 描述 | | :--- | :--- | | hostPath | 检测主机路径挂载 | | 危险路径 | 识别docker.sock、/etc、/root等 | | 风险等级 | 按严重/警告评级 | ### 🛡️ 安全策略检查 基于[Kubernetes seccomp](https://kubernetes.io/docs/tutorials/security/seccomp/)和[AppArmor文档](https://kubernetes.io/docs/tutorials/clusters/apparmor/) | 检查项 | 描述 | | :--- | :--- | | seccomp | 检测seccompProfile配置 | | AppArmor | 检测AppArmor注解设置 | ### 🔄 高可用性配置 | 检查项 | 描述 | | :--- | :--- | | PodDisruptionBudget | 检测PDB配置 | | Secret类型 | 检测Secret类型是否合适 | | ServiceAccount | 检测automountServiceAccountToken | ### 🔍 敏感数据扫描 基于[NSA指南第4.2节](https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/2716980/nsa-cisa-publish-guidance-on-how-to-protect-kubernetes-clusters/)和[CIS基准Secret管理](https://www.cisecurity.org/benchmark/kubernetes) | 检查项 | 描述 | | :--- | :--- | | ConfigMap扫描 | 检测敏感关键词和高熵字符串 | | Secret分析 | 检测存储在Secret中的非敏感数据 | | 用法区分 | 区分卷挂载与环境变量引用 | ## 安装 ### 选项1:作为个人技能安装(推荐) 将技能安装到个人目录,使其在所有项目中可用: ``` git clone https://github.com/crazygit/kube-audit-kit.git ~/.claude/skills/kube-audit-kit ``` ### 选项2:作为项目技能安装 将技能安装到特定项目,使其仅在该项目中可用: ``` git clone https://github.com/crazygit/kube-audit-kit.git .claude/skills/kube-audit-kit ``` ### 安装后验证 使用任一方法验证技能是否已加载: **选项1:使用 /skills** ``` /skills ``` **选项2:询问Claude** ``` What Skills are available? ``` 如果列表中出现`kube-audit-kit`,则表示技能已加载。 ## 使用 安装后通常不需要重启。如果未生效,请重启Claude Code。 ### 触发技能 根据SKILL.md,你可以使用如下提示触发技能: ``` "Audit production prod-cluster namespace backend" "Check payment service in staging cluster staging-cluster" "Analyze all apps in dev cluster dev-cluster" ``` 或使用更通用的措辞: ``` "Please audit the my-namespace namespace in my-context" "Help me audit cluster-1" ``` Claude会检测你的意图,使用`kube-audit-kit`技能,并询问Context和Namespace。 ### 完整工作流 该技能执行以下步骤: 1. **导出资源** - 使用`kubectl get/list`导出所有资源类型 2. **净化资源** - 删除状态字段和冗余元数据 3. **应用分组** - 基于工作负载拓扑关联资源 4. **安全审计** - 静态分析 + AI深度分析以生成报告 ### 要求 | 组件 | 版本要求 | | :--- | :--- | | Python | >= 3.14 | | kubectl | 任意版本(已配置的集群) | | uv | 最新版(依赖管理) | ### 手动运行脚本 如果你想不通过技能运行脚本: ``` # 安装依赖 uv sync # 运行 audit pipeline CTX=your-context NS=your-namespace uv run python scripts/export.py --context $CTX --namespace $NS uv run python scripts/sanitize.py --context $CTX --namespace $NS uv run python scripts/group_apps.py --context $CTX --namespace $NS uv run python scripts/audit.py --context $CTX --namespace $NS ``` ## 安全建议 ### 🔐 使用专用审计账户 创建一个具有严格RBAC控制的专用服务账户。如果你担心审计期间暴露Secret数据,可以省略Secret权限;其他检查仍将正常工作。 提供了一个审计服务账户示例: ``` # 查看示例配置 cat examples/audit-service-account.yaml # 应用到目标 namespace(先编辑 Namespace) kubectl apply -f examples/audit-service-account.yaml # 获取 audit token(有效期 1 小时) kubectl -n create token audit-service-account --duration=1h # 为 audit context 配置 kubeconfig kubectl config set-credentials audit-service-account --token= kubectl config set-context audit-context \ --cluster= \ --user=audit-service-account \ --namespace= ``` **权限说明**: | 权限 | 是否必需 | 描述 | | :--- | :--- | :--- | | Pod/Deployment/Workload | ✅ 是 | 工作负载安全检查 | | ConfigMap | ✅ 是 | 敏感数据扫描 | | Service/Ingress/NetworkPolicy | ✅ 是 | 网络安全审计 | | RBAC资源 | ✅ 是 | RBAC权限审计 | | **Secret** | ⚠️ 可选 | 如果未授权,则跳过Secret检查 | **无Secret权限时的影响**: - ❌ Secret类型检查不可用 - ❌ 无法检测存储在Secret中的非敏感数据 - ✅ 所有其他检查仍有效(Pod安全、RBAC、网络、hostPath等) **安全最佳实践**: - ✅ 最小权限原则 - 仅授予审计所需的权限 - ✅ Secret可选 - 根据策略决定 - ✅ 命名空间隔离 - 使用限定于特定命名空间的Role - ✅ 定期轮换 - 定期轮换服务账户令牌 - ✅ 审计日志 - 启用Kubernetes审计日志 ## 文档结构 ``` kube-audit-kit/ ├── SKILL.md # Skill entry point (metadata and instructions) ├── README.md # English documentation ├── README.zh.md # Chinese documentation ├── QUICKSTART.md # Quick start guide ├── SETUP.md # Environment setup ├── WORKFLOW.md # End-to-end workflow details ├── EXAMPLES.md # Usage examples ├── audit_report_template.md # Report template ├── pyproject.toml # Python project config ├── uv.lock # Dependency lockfile (uv) ├── examples/ │ └── audit-service-account.yaml # Audit service account RBAC example ├── scripts/ │ ├── export.py # Export Kubernetes resources │ ├── sanitize.py # Sanitize YAML files │ ├── group_apps.py # Smart application grouping │ ├── audit.py # Security audit │ ├── output.py # Output helpers │ └── utils.py # Utilities └── tests/ # Tests ``` ## 输出结果 审计完成后,报告存储在**你当前的工作目录**下的`output/{context}/{namespace}/audit/`路径中: ``` output/{context}/{namespace}/audit/ ├── audit_results.json # Structured audit results (all checks) ├── configmap_to_secret.csv # ConfigMap sensitive data findings ├── secret_to_configmap.csv # Secret non-sensitive data findings ├── rbac_issues.csv # RBAC audit results ├── network_security.csv # Network security results ├── hostpath_mounts.csv # HostPath mount findings ├── security_policies.csv # seccomp/AppArmor checks ├── pdb_and_secrets.csv # PDB/Secret/ServiceAccount checks └── audit_report.md # Full audit report (AI-generated) ``` ## 常见问题 ### 技能未触发? 确保你的提示包含相关关键词。尝试更明确的措辞: ``` "Please audit Kubernetes resources" "Help me audit the production namespace" ``` ### 找不到Context或Namespace? ``` # 列出可用 contexts kubectl config get-contexts # 列出目标 context 中的 namespaces kubectl get namespaces --context ``` ## 安全通知 ``` # 审计后,安全删除输出目录 rm -rf output// ``` ## 许可证 MIT许可证 ## 相关链接 - [Claude Code技能文档](https://code.claude.com/docs/en/skills) - [智能体技能最佳实践](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices) - [GitHub仓库](https://github.com/crazygit/kube-audit-kit)
标签:AI分析, Anthropic, CIS基准, NSA指南, Pandas, Pod安全, PSS, Web截图, 云安全监控, 双重审计, 安全上下文, 安全报告生成, 容器安全, 富输出, 智能分组, 类型安全, 行业标准合规, 资源限制, 逆向工具, 集群资源导出, 静态分析, 非侵入式审计