Kube Audit Kit - Read-Only Kubernetes Security Audit Toolkit
Automated Kubernetes security audits with compliance-ready reports
❌ Security teams struggle to manually audit Kubernetes clusters for compliance violations and misconfigurations across namespaces and applications.
✅ Users receive comprehensive, PSS/NSA-compliant security audit reports with identified risks and topology-grouped resource analysis in minutes.
- ✓Read-only cluster resource export and analysis
- ✓PSS and NSA security standard compliance checking
- ✓Application topology grouping and risk assessment
- ✓Sensitive data leakage detection across resources
- ✓Namespace-level and cluster-wide audit scope support
👁 2 views · 📦 0 installs
Install in one line
CLI$ mfkvault install kube-audit-kit-read-only-kubernetes-security-audit-toolkitRequires the MFKVault CLI. Prefer MCP?
Free to install — no account needed
Copy the command below and paste into your agent.
Instant access • No coding needed • No account needed
What you get in 5 minutes
- Full skill code ready to install
- Works with 4 AI agents
- Lifetime updates included
Run this helper
Answer a few questions and let this helper do the work.
▸Advanced: use with your AI agent
Description
--- name: kube-audit-kit description: Performs read-only Kubernetes security audits by exporting resources, sanitizing metadata, grouping applications by topology, and generating PSS/NSA-compliant audit reports. Use when the user requests auditing Kubernetes clusters, Namespaces, security reviews, or configuration analysis. user-invocable: true allowed-tools: Read, Write, Bash(python:*), Bash(uv:*), Bash(kubectl:*), Bash(export:*) examples: - "Run a security audit for the payment namespace in prod-cluster" - "Check whether the backend apps in staging meet PSS standards" - "Analyze sensitive data leakage risk for all resources in the development namespace" - "Generate a full audit report for the default namespace in test-cluster" - "review k8s cluster security configuration" - "kubernetes security audit for production workload" author: crazygit repository: https://github.com/crazygit/kube-audit-kit --- # Kube Audit Kit - Read-Only Kubernetes Security Audit Toolkit This Skill uses a standardized, scripted workflow to export Kubernetes cluster resources in **read-only** mode, sanitize them, group applications, and perform a deep security audit. The entire process strictly follows the **read-only** principle and does not modify any cluster state. ## Core Principles - **Read-only**: only `get/list` operations, never `apply/patch/delete` - **Full coverage**: dynamically discover all resource types without hardcoding lists - **Scripted**: core logic runs through Python scripts for stability ## Quick Start ### Prerequisites 1. **Environment setup**: ```bash uv sync ``` See [SETUP.md](SETUP.md) for details. 2. **Verify kubectl**: ```bash kubectl config get-contexts ``` ### Run an audit When a user requests an audit, follow these steps strictly: **Set the output directory first** (important!): ```bash # Set the output directory to output/ under the current working directory # This ensures output files are generated in the user's working directory, not the SKILL install directory export KUBE_AUDIT_OUTPUT="$(pwd)/output" ``` **Use the progress checklist**: ``` Audit progress: - [ ] Step 1: Export - Dynamic discovery and full resource export - [ ] Step 2: Sanitize - Remove metadata and status fields - [ ] Step 3: Group - Associate applications by workload topology - [ ] Step 4: Audit - Dual-layer security audit ``` #### Step 1: Export ```bash # Keep the environment variable effective for each command export KUBE_AUDIT_OUTPUT="$(pwd)/output" && \ uv run python scripts/export.py --context <context> --namespace <namespace> ``` Output: `{OUTPUT_BASE}/export/` #### Step 2: Sanitize ```bash export KUBE_AUDIT_OUTPUT="$(pwd)/output" && \ uv run python scripts/sanitize.py --context <context> --namespace <namespace> ``` Output: `{OUTPUT_BASE}/sanitize/`, `{OUTPUT_BASE}/sanitize_fields/` #### Step 3: Group ```bash export KUBE_AUDIT_OUTPUT="$(pwd)/output" && \ uv run python scripts/group_apps.py --context <context> --namespace <namespace> ``` Output: `{OUTPUT_BASE}/group/`, `{OUTPUT_BASE}/ungrouped_resources.txt` #### Step 4: Audit **Phase 1 - Script-based static scan**: ```bash export KUBE_AUDIT_OUTPUT="$(pwd)/output" && \ uv run python scripts/audit.py --context <context> --namespace <namespace> ``` Output: - `{OUTPUT_BASE}/audit/audit_results.json` - structured audit results - `{OUTPUT_BASE}/audit/configmap_to_secret.csv` - ConfigMap sensitive data - `{OUTPUT_BASE}/audit/secret_to_configmap.csv` - Secret non-sensitive data - `{OUTPUT_BASE}/audit/rbac_issues.csv` - RBAC audit results - `{OUTPUT_BASE}/audit/network_security.csv` - network security audit results - `{OUTPUT_BASE}/audit/hostpath_mounts.csv` - hostPath mount findings - `{OUTPUT_BASE}/audit/security_policies.csv` - seccomp/AppArmor results - `{OUTPUT_BASE}/audit/pdb_and_secrets.csv` - PDB/Secret/ServiceAccount results **Phase 2 - AI expert deep review**: AI independently reviews results without relying on phase 1 output: 1. **Independent analysis**: traverse `{OUTPUT_BASE}/group/*/` and read all original YAML files 2. **Deep review**: identify risks not covered by script rules - business logic risks (e.g., plaintext private keys, hardcoded passwords) - architecture risks (e.g., missing NetworkPolicy, overly broad RBAC) - configuration drift risks (e.g., `latest` images, missing resource limits) 3. **Supplement findings**: if sensitive data was missed, append to the CSV files 4. **Report summary**: merge phase 1 findings with AI analysis into `{OUTPUT_BASE}/audit/audit_report.md` **Report template**: see `audit_report_template.md` in the same directory. **Key requirements**: - Must read original YAML files, not just audit_results.json - Every application must have specific analysis; avoid vague statements like "not reviewed" - If script misses sensitive data, update the CSV files to keep data complete ## Output Structure ``` output/{context}/{namespace}/ ├── export/ # raw export data ├── sanitize/ # sanitized data ├── sanitize_fields/ # sanitization records ├── group/ # application grouping │ └── {app_name}/ │ ├── *.yaml # grouped resource files │ └── config_usage.json # CM/Secret usage record ├── ungrouped_resources.txt # orphan resources └── audit/ # audit results ├── audit_results.json # static analysis results ├── configmap_to_secret.csv # sensitive data in ConfigMaps ├── secret_to_configmap.csv # non-sensitive data in Secrets ├── rbac_issues.csv # RBAC audit results ├── network_security.csv # network security audit results ├── hostpath_mounts.csv # hostPath mount findings ├── security_policies.csv # seccomp/AppArmor results ├── pdb_and_secrets.csv # PDB/Secret/ServiceAccount results └── audit_report.md # final AI-generated report ``` ## Reference Docs - **[QUICKSTART.md](QUICKSTART.md)**: 30-second quick start - **[WORKFLOW.md](WORKFLOW.md)**: full workflow and implementation details - **[SETUP.md](SETUP.md)**: environment setup and dependency installation - **[EXAMPLES.md](EXAMPLES.md)**: output examples and typical scenarios ## User Interaction Conventions ### Planning Phase ``` Received. Target: Context `{ctx}`, Namespace `{ns}`. Execution plan: 1. Set the output directory environment variable: export KUBE_AUDIT_OUTPUT="$(pwd)/output" 2. [Export] Dynamic discovery and full resource export → scripts/export.py 3. [Sanitize] Remove metadata and status fields → scripts/sanitize.py 4. [Group] Associate applications by workload topology → scripts/group_apps.py 5. [Audit] Dual-layer security audit (static scan + AI expert review) → scripts/audit.py Output directory: $(pwd)/output/{ctx}/{ns}/ Start? ``` ### Execution Phase Output a summary after each step (each command must include the environment variable): ``` ✅ [Export completed] Scanned 32 resource types, exported 150 YAMLs Output: output/{ctx}/{ns}/export/ ``` ### Results Phase ``` ✅ [Audit completed] Static report and AI expert analysis merged 📊 Audit stats: - Applications: 12 - Critical risks: X (see audit_results.json) - Warning risks: Y - Info recommendations: Z 📁 Output directory: output/{ctx}/{ns}/ 📄 Full audit report: output/{ctx}/{ns}/audit/audit_report.md ⚠️ Security reminder: the output/ directory contains decrypted Secret data. Please delete it securely after the audit! ``` ## Path Conventions **{OUTPUT_BASE}** = `output/{context}/{namespace}/` ### Output path mechanism All paths are computed by `get_output_paths()` in `scripts/utils.py`, with the following precedence: 1. **Environment variable `KUBE_AUDIT_OUTPUT`** (recommended) - Set in SKILL.md before running: `export KUBE_AUDIT_OUTPUT="$(pwd)/output"` - Ensures output files are created in the **user's working directory** - Avoids writing to the SKILL installation directory 2. **Current working directory** (fallback) - If the environment variable is not set, use `Path.cwd() / "output"` - Note: when a SKILL runs, cwd may be the SKILL directory ### Why the environment variable? When the SKILL is invoked, the Agent switches to the SKILL installation directory to run scripts. Using `Path.cwd()` directly would write to the wrong location. By setting `KUBE_AUDIT_OUTPUT="$(pwd)/output"` before each command, you ensure: - `$(pwd)` resolves to the user's working directory - Python scripts read the environment variable and write to the intended path - Output always lands in the user's working directory, regardless of where the SKILL is called ## Key Design Decisions ### Volume vs EnvVar distinction ConfigMaps/Secrets usage determines whether sensitive data is scanned: - **Volume mount**: skip sensitive scanning (treated as application config files) - **EnvVar reference**: scan for sensitive data (may include passwords/keys) `config_usage.json` records the usage type for each ConfigMap/Secret. ### Permission error handling Scripts use a fault-tolerant approach: - If a single resource type is denied, skip it and show a warning - Other resource types continue normally - The final report notes which checks are missing due to insufficient permissions Use a dedicated audit service account (see [SETUP.md](SETUP.md)). ## Security Reminder **Warning**: the `output/` directory contains decrypted Secret data. **After the audit**: - Keep `audit_report.md` (it does not contain sensitive data) - Securely delete other directories or store them encrypted - Do not commit `output/` to version control
Security Status
Verified
Manually verified by security team
Related AI Tools
More Grow Business tools you might like
codex-collab
FreeUse when the user asks to invoke, delegate to, or collaborate with Codex on any task. Also use PROACTIVELY when an independent, non-Claude perspective from Codex would add value — second opinions on code, plans, architecture, or design decisions.
Rails Upgrade Analyzer
FreeAnalyze Rails application upgrade path. Checks current version, finds latest release, fetches upgrade notes and diffs, then performs selective upgrade preserving local customizations.
Asta MCP — Academic Paper Search
FreeDomain expertise for Ai2 Asta MCP tools (Semantic Scholar corpus). Intent-to-tool routing, safe defaults, workflow patterns, and pitfall warnings for academic paper search, citation traversal, and author discovery.
Hand Drawn Diagrams
FreeCreate hand-drawn Excalidraw diagrams, flows, explainers, wireframes, and page mockups. Default to monochrome sketch output; allow restrained color only for page mockups when the user explicitly wants webpage-like fidelity.
Move Code Quality Checker
FreeAnalyzes Move language packages against the official Move Book Code Quality Checklist. Use this skill when reviewing Move code, checking Move 2024 Edition compliance, or analyzing Move packages for best practices. Activates automatically when working
Claude Memory Kit
Free"Persistent memory system for Claude Code. Your agent remembers everything across sessions and projects. Two-layer architecture: hot cache (MEMORY.md) + knowledge wiki. Safety hooks prevent context loss. /close-day captures your day in one command. Z