MCPcopy Index your code
hub / github.com/aquasecurity/kube-bench

github.com/aquasecurity/kube-bench @v0.15.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.15.6 ↗ · + Follow
237 symbols 713 edges 22 files 43 documented · 18% updated 2d agov0.15.6 · 2026-06-01★ 8,09362 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

GitHub Release Downloads Docker Pulls Go Report Card Build Status License Coverage Status

kube-bench logo

kube-bench is a tool that checks whether Kubernetes is deployed securely by running the checks documented in the CIS Kubernetes Benchmark.

Tests are configured with YAML files, making this tool easy to update as test specifications evolve.

Kubernetes Bench for Security

CIS Scanning as part of Trivy and the Trivy Operator

Trivy, the all in one cloud native security scanner, can be deployed as a Kubernetes Operator inside a cluster. Both, the Trivy CLI, and the Trivy Operator support CIS Kubernetes Benchmark scanning among several other features.

Quick start

There are multiple ways to run kube-bench. You can run kube-bench inside a pod, but it will need access to the host's PID namespace in order to check the running processes, as well as access to some directories on the host where config files and other files are stored.

The supplied job.yaml file can be applied to run the tests as a job. For example:

$ kubectl apply -f job.yaml
job.batch/kube-bench created

$ kubectl get pods
NAME                      READY   STATUS              RESTARTS   AGE
kube-bench-j76s9   0/1     ContainerCreating   0          3s

# Wait for a few seconds for the job to complete
$ kubectl get pods
NAME                      READY   STATUS      RESTARTS   AGE
kube-bench-j76s9   0/1     Completed   0          11s

# The results are held in the pod's logs
kubectl logs kube-bench-j76s9
[INFO] 1 Master Node Security Configuration
[INFO] 1.1 API Server
...

For more information and different ways to run kube-bench see documentation

Please Note

  1. kube-bench implements the CIS Kubernetes Benchmark as closely as possible. Please raise issues here if kube-bench is not correctly implementing the test as described in the Benchmark. To report issues in the Benchmark itself (for example, tests that you believe are inappropriate), please join the CIS community.

  2. There is not a one-to-one mapping between releases of Kubernetes and releases of the CIS benchmark. See CIS Kubernetes Benchmark support to see which releases of Kubernetes are covered by different releases of the benchmark.

By default, kube-bench will determine the test set to run based on the Kubernetes version running on the machine. - see the following documentation on Running kube-bench for more details.

Contributing

Kindly read Contributing before contributing. We welcome PRs and issue reports.

Roadmap

Going forward we plan to release updates to kube-bench to add support for new releases of the CIS Benchmark. Note that these are not released as frequently as Kubernetes releases.

Extension points exported contracts — how you extend this code

Runner (Interface)
Runner wraps the basic Run method. [2 implementers]
check/check.go
Predicate (FuncType)
Predicate a predicate on the given Group and Check arguments.
check/controls.go

Core symbols most depended-on inside this repo

Run
called by 46
check/check.go
exitWithError
called by 27
cmd/util.go
String
called by 26
cmd/util.go
isEmpty
called by 13
cmd/util.go
getFiles
called by 8
cmd/util.go
NewControls
called by 8
check/controls.go
runChecks
called by 7
cmd/common.go
makeSubstitutions
called by 7
cmd/util.go

Shape

Function 167
Struct 35
Method 22
TypeAlias 8
FuncType 4
Interface 1

Languages

Go100%

Modules by API surface

cmd/util.go38 symbols
cmd/common_test.go30 symbols
cmd/common.go28 symbols
check/test.go25 symbols
cmd/util_test.go19 symbols
check/test_test.go18 symbols
check/controls.go13 symbols
check/check.go12 symbols
check/controls_test.go11 symbols
cmd/kubernetes_version.go9 symbols
check/check_test.go6 symbols
cmd/kubernetes_version_test.go5 symbols

Dependencies from manifests, versioned

github.com/aws/aws-sdk-go-v2v1.41.5 · 1×
github.com/aws/aws-sdk-go-v2/configv1.32.14 · 1×
github.com/aws/aws-sdk-go-v2/credentialsv1.19.14 · 1×
github.com/aws/aws-sdk-go-v2/feature/ec2/imdsv1.18.21 · 1×
github.com/aws/aws-sdk-go-v2/internal/configsourcesv1.4.21 · 1×
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2v2.7.21 · 1×
github.com/aws/aws-sdk-go-v2/internal/iniv1.8.6 · 1×
github.com/aws/aws-sdk-go-v2/service/internal/accept-encodingv1.13.7 · 1×
github.com/aws/aws-sdk-go-v2/service/internal/presigned-urlv1.13.21 · 1×
github.com/aws/aws-sdk-go-v2/service/securityhubv1.68.3 · 1×
github.com/aws/aws-sdk-go-v2/service/signinv1.0.9 · 1×
github.com/aws/aws-sdk-go-v2/service/ssov1.30.15 · 1×

For agents

$ claude mcp add kube-bench \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact