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截图, 云安全监控, 双重审计, 安全上下文, 安全报告生成, 容器安全, 富输出, 智能分组, 类型安全, 行业标准合规, 资源限制, 逆向工具, 集群资源导出, 静态分析, 非侵入式审计