Kubernetes CIS benchmark compliance starts with knowing which controls your cluster can actually meet
When an auditor, regulator or internal security team asks for CIS Kubernetes Benchmark evidence, the work is an assessment, a scoped decision about which recommendations apply to your cluster, targeted fixes for the findings that remain, and retained scan output that shows what was checked and when. A scanner produces a list of pass and fail results, but it does not decide which results matter for your environment. That decision is the part most teams underestimate, and it determines whether the evidence you hand over will hold up. The benchmark is harder to apply than a scanner suggests because it covers more than one kind of cluster. It addresses upstream Kubernetes and managed services such as EKS, AKS, GKE, OKE and OpenShift. Many recommendations assume you control the API server flags, the etcd configuration and the control plane nodes. On a managed service, the provider often owns those settings, so a recommendation can be impossible for you to meet, handled by the provider, or only partly within your reach. Before any fixes are planned, you need a written record that separates the recommendations you own from those the provider owns and from those that do not apply to your distribution. The CIS Kubernetes Benchmark is a consensus secure configuration guide. Its recommendations reflect what a broad community of practitioners agreed on, not a regulatory checklist. Map each recommendation to your own risk, and expect to record a reason when you decide one does not apply. Confirm the benchmark version you are assessing against with the current release notes from the Center for Internet Security, because the benchmark is revised over time. Kubernetes also has a short support window. The project maintains only the three most recent minor releases, so a cluster can fall out of support faster than an auditor expects. Record the benchmark version and the exact cluster version together in every assessment. Evidence gathered on 1.35 cannot be presented as a current result for a cluster that has since moved to 1.37 without a fresh scan. A practical first step is to export the cluster version, the distribution or managed service name, and a list of which control plane components you can configure. Use that list to draft an applicability record for each recommendation, and have the platform owner and the security reviewer sign it before anyone starts remediation.
Which parts of the cluster the benchmark examines
A CIS Kubernetes Benchmark assessment reads far more than one configuration file. It covers the control plane, the data store behind it, each worker node, the runtime and add-ons, and the policies that govern workloads. Knowing who owns each area tells you which findings you can fix yourself and which you must raise with a managed service provider.
Control plane components
The benchmark checks the flags and file permissions of the kube-apiserver, kube-controller-manager and kube-scheduler, including authentication, authorization and audit settings on the API server. In an upstream kubeadm cluster your team owns these manifests and their static pod files on the control plane nodes. In a managed service the provider owns the control plane, so you verify only what the provider exposes, such as logging and endpoint access settings. Confirm exact recommendation numbers in the current CIS PDF.
etcd data store and TLS
The benchmark examines etcd's data directory permissions, client and peer TLS settings, and whether the API server connects to etcd over authenticated channels. etcd holds all cluster state, including Secrets, so these checks protect the whole cluster. In kubeadm clusters your team configures and rotates these certificates. In most managed services the provider runs etcd and you typically cannot inspect it directly. Confirm the applicable recommendations in the current CIS PDF.
Worker node kubelet configuration
The kubelet on each worker node has its own recommendations covering anonymous authentication, authorization mode, certificate rotation and read-only port exposure. Node configuration drifts easily when nodes are rebuilt or autoscaled, so checks should run against the live kubelet settings. In upstream clusters your team owns the kubelet configuration and node images. In managed services the provider usually sets defaults, while you may control node pool options. Confirm exact recommendation numbers in the current CIS PDF.
Container runtime settings
The benchmark covers the container runtime on each node, which is typically containerd or CRI-O, including its socket permissions, configuration file ownership and logging settings. Runtime defaults affect how isolation and image handling behave for every workload on the node. Your team owns runtime configuration in an upstream kubeadm cluster and in self-managed node images. In managed services the provider's node image determines most of these settings, so review what the node pool allows you to change. Confirm details against the current CIS PDF.
Cluster add-ons and their settings
Add-ons such as the DNS service, the network plugin and the dashboard, if installed, run with privileges and can be assessed against the benchmark's workload and network checks. Add-ons are often installed outside the core components and missed in reviews. Your team owns the add-on versions and manifests in upstream clusters, and this remains true in managed services because the provider rarely manages third-party add-ons. Record each add-on's configuration as part of the assessment scope.
Pod Security and RBAC policies
The benchmark expects workload policies to be enforced, including Pod Security Standards applied per namespace through the built-in Pod Security Admission controller, and least-privilege RBAC for users and service accounts. These policies decide whether a compromised workload can escalate privileges. Your team owns these policies in every Kubernetes distribution, managed or not, because they are configured through namespace labels and role bindings in your cluster. Check that Privileged mode is not the default for application namespaces.
Decisions that set the scope of CIS compliance work
This table compares the five decisions that most change the effort and ongoing burden of CIS Kubernetes Benchmark work, with the option, when it fits and what it costs to run afterwards. Read each row as a choice you make early, because the choices interact: a managed service narrows what you can fix, and a strict as-written profile increases the deviation records you must maintain.
| Decision | Option | When it fits | Operational cost |
|---|---|---|---|
| Where to scan | Scan in place on production clusters | Read-only checks with a scanner that does not change state, and teams that need current results quickly | Scans must be scheduled around change windows, and any finding that needs a live fix still needs a staged rollout to production |
| Where to scan | Scan a staging copy first | Clusters with a faithful staging twin, so remediation can be tested before it touches production | Staging needs capacity and configuration parity, and drift between the two environments weakens the evidence |
| Scanner | Open-source scanner | Teams with in-house skills who want to script checks, version the benchmark mapping and keep evidence in their own storage | Your engineers maintain benchmark version mapping, false-positive triage and report formatting for auditors |
| Scanner | Commercial scanner | Organizations that need vendor support, dashboards and prebuilt reports for assessors | Licensing recurs, and you still need to confirm which benchmark version and profiles the product applies to your distribution |
| Profile | Adopt the benchmark profile as written | Self-managed clusters where every recommendation can be applied, and assessors who expect the published profile | Remediation effort is highest, and each change must be re-tested after every Kubernetes upgrade |
| Profile | Document justified deviations | Recommendations that conflict with workload needs or that the platform cannot change, such as controls owned by a managed provider | Each deviation needs a recorded rationale, a compensating control, an owner and a review date that repeats with every benchmark or cluster version change |
| Platform route | Upstream kubeadm build | You control the control plane, etcd, API server flags and node images, and you have the skills to configure them | Your team owns nearly every recommendation, including file permissions, certificates and etcd settings, so the scope is widest |
| Platform route | Managed service | You want the provider to run the control plane and accept less configuration control in exchange | Some recommendations fall under the provider's shared responsibility, so you must collect provider evidence and document the gaps you cannot close |
| Assessment unit | Per cluster | Clusters differ in configuration, node pools or ownership, or you need findings tied to a specific environment | Every cluster repeats the assessment, deviation records and evidence collection, so effort grows with cluster count |
| Assessment unit | Per platform baseline | Clusters are built from one template with identical configuration and a single owning team | A single baseline is only valid while clusters stay identical, so you need drift detection to show that each cluster still matches it |
Deciding which CIS Kubernetes Benchmark recommendations apply to your distribution
Before any scan result means anything, you need a written decision on which CIS Kubernetes Benchmark recommendations apply to your cluster. Map each recommendation to the component that implements it, such as the kube-apiserver flags, kubelet configuration, etcd settings, or the policies you run in the cluster, and record who controls that component. Recommendations that a managed provider controls should be marked as inherited or out of scope, with the provider's documentation cited as the reason. Every exclusion needs a recorded reason and an owner who can defend it to an assessor. A recommendation you cannot test is not automatically a pass, so the record should say whether the control is inherited, excluded, or still owed by your team. The control plane itself often decides how much applicability work you face. If you run upstream kubeadm, you can set and verify most API server, controller manager, scheduler and etcd flags, and the evidence is the configuration files and the running process arguments. Some managed offerings do not let you change the control plane at all. In that case the provider's shared responsibility documentation becomes primary evidence, and you need to collect what the provider states about the controls it operates, plus what you can still show directly, such as node configuration, namespace policies and RBAC. Ask the provider which benchmark version and which profile its documentation maps to, because a mapping written for one version may not match the version you scan against. An air-gapped cluster or a custom kubeadm install can also change which recommendations apply in practice. Some checks assume internet-reachable image registries, package repositories or certificate authorities, and an offline design may legitimately differ from the default. Where a recommendation conflicts with your architecture, write a deviation rationale that states the requirement, the alternative control you use, the residual risk, and who accepted it. Do not treat a deviation as a silent exception. Reviewers will look for the reasoning, the compensating control, and evidence that the compensating control actually runs. Before you finalize the mapping, confirm three things in writing. First, the exact CIS Kubernetes Benchmark version and profile you are assessing against, since recommendations change between versions. Second, the current provider documentation for each managed component, because provider behavior changes over time. Third, the license terms for the benchmark itself: CIS describes its Kubernetes Benchmark PDF as freely available for non-commercial use, so if your organization or a partner uses it in commercial work, check with CIS whether a separate license applies before you build the mapping, reports or customer deliverables on it.
How to run a CIS benchmark assessment step by step
This sequence turns a one-time scan into audit evidence. It confirms the platform version and benchmark, separates findings by owner and component, and produces a frozen, dated record of results and approved deviations.
Confirm the minor version and matching benchmark
Record the server version reported by the API server and the kubelet version on every node. Check the minor version against the project's supported release list. The project maintains the three most recent minor releases; as of September 2026 these were 1.37 (end of life October 28, 2027), 1.36 (June 28, 2027) and 1.35 (February 28, 2027). Then select the CIS Kubernetes Benchmark version that matches your platform, whether upstream, a vendor distribution or a managed service, and confirm the choice with your vendor if they document their own build. Done when the assessment file names one benchmark version, one profile and the support status of the cluster.
Build the applicability register
List every recommendation in the selected benchmark and mark each one as applies, does not apply, or needs vendor confirmation. Write a reason next to each status. For example, a control about control plane file permissions may not apply where the provider operates the control plane (illustrative). The platform owner and the security owner review the register together. Done when every recommendation has exactly one status and a reason, and both owners have initialed the register.
Run the scan on a non-production copy
Build a copy of the cluster with the same Kubernetes version, admission settings, node configuration, cloud or data center settings and add-ons as production. Run your scanner against the copy and save the raw output with the scanner version, benchmark version and timestamp. Run it a second time without changes to confirm the results are stable. Done when two consecutive runs on the copy match, or every difference between them is explained in writing.
Triage findings by component
Group every failed and manual result by component: control plane, etcd, worker nodes, policies and add-ons. Assign each group an owner who can change the setting. Separate findings that need a configuration change from those that need evidence, such as a document or a screenshot from the provider. Done when every failed item has one component tag and one named owner, and every manual check has an evidence request logged against an owner.
Remediate and verify in staging
Apply fixes in staging one component at a time, and keep each configuration change in version control. Before each change, save the current configuration and after each change, save the new one. Review the diff with the owner and link it to a change record. Rerun the scanner after each component so that a fix can be traced to a specific result. Done when each remediation has a reviewed configuration diff and a scan result that shows the intended item now passes.
Rerun and compare results
Run the same scanner, with the same benchmark version, against the same staging copy used for the first scan. Compare the two outputs by recommendation identifier. Look for two things: items that changed from fail to pass, and items that were passing before and now fail. A regression means a previous fix or an unrelated change broke a control. Done when the comparison shows only the intended changes, and each unintended change is fixed or entered in the register.
Sign off deviations with owners and dates
For each failed item you will not fix, record the recommendation identifier, the reason, any compensating control, the accountable owner and a review date. The security lead and the platform lead review the deviation register together and sign it. Accepted deviations stay visible in later assessments. Done when every remaining failed or manual item appears in the register with an owner, a compensating control or a stated reason, and a review date, and the register has both signatures.
Freeze the final scan output
Export the final scan output, the applicability register, the deviation register and the configuration files used on the copy. Record the scanner version, benchmark version, Kubernetes version and timestamp in a manifest. Store the package in a read-only evidence location and record a checksum for each file. Done when a reviewer can open the manifest, verify the checksums and see which version of each file the sign-off refers to.
Fixing benchmark findings without breaking the control plane
The safest way to close a benchmark finding is to treat each change as a control plane release, with an approval, a test and a way back. A wrong flag on kube-apiserver can stop every API call in the cluster, including the calls needed to roll the change back, so the plan should be settled before anyone edits a manifest. Group findings by component: kubelet settings, kube-apiserver flags, Secrets configuration, namespace labels, RBAC and etcd. Each group has a different blast radius and rollback path. For every change, record the current value, the target value, the nodes or namespaces affected, the approver and the test that proves the finding is closed. Findings that can only be closed by a risky change should be reviewed for a compensating control before they reach the change calendar.
Most remediation work falls into five patterns. The first is kubelet and kube-apiserver flags that the benchmark expects to be set explicitly, such as authentication and audit logging settings. Changes to these flags usually need a component restart, so schedule them node by node. The second is encryption at rest. Secrets are stored unencrypted in etcd by default, so kube-apiserver needs an encryption provider configuration, with keys held in a key management service you control. Existing Secrets stay in their old form until they are rewritten, so plan and verify that rewrite. The third is Pod Security Admission labels on each namespace. Apply Baseline or Restricted first in warn and audit modes so workloads that would fail show up before enforcement. The fourth is least-privilege RBAC that removes list and watch on Secrets from roles that do not need them. The fifth is etcd client and peer TLS, which protects traffic between members and from the API server.
Changes to control plane components should follow the version skew policy even when the Kubernetes version does not change. The policy requires kube-apiserver to be upgraded before kube-controller-manager, kube-scheduler and kubelets, and it allows kubelets to be up to three minor versions older than kube-apiserver. These rules matter for remediation because a flag that is valid on one minor version may be removed or renamed on another, so check each flag against the version you run before editing. In a high availability cluster, change one control plane node at a time, confirm the API server, etcd members and scheduler are healthy, then move on. For kubelet changes, drain the node, apply the change, restart the service, uncordon the node and confirm it reports ready before continuing. Take an etcd snapshot with etcdctl snapshot save before the first change, and rehearse the restore path with etcdutl in a staging cluster.
Decide the rollback before the change, not during the incident. For static pod manifests on kubeadm-built control plane nodes, keep a dated copy of the original manifest on the node and in the change record. Define the health signals that trigger reversion, such as the API server failing to respond or pods failing to schedule. Secrets encryption needs particular care: removing the encryption provider configuration does not decrypt data already written, so a rollback may require rewriting Secrets again under the restored settings. Restore from an etcd snapshot only when cluster state is damaged, because it discards every change made since the snapshot. Some findings are better closed by a documented compensating control, such as restricting network paths to the API server or enforcing a policy at admission, especially when the direct change would break workloads or cannot be applied on a managed service. Record the owner, the residual risk, the review date and the evidence that the control works.
What drives the effort and cost of a CIS compliance assessment
This table lists the factors that change how much work a CIS Kubernetes Benchmark assessment takes, with the reduction lever for each. Read it before asking for a quote, because most of the cost sits in scope decisions you can make early. The main takeaway is that a written scope with stated assumptions makes the quote comparable across partners.
| Driver | Why it changes effort | How to keep it down |
|---|---|---|
| Number of clusters and environments | Each cluster needs its own scan, configuration review and evidence set, and production and non-production often differ in settings. | Consolidate clusters before assessment where tenancy allows, and assess one representative cluster per configuration baseline first. |
| Node count and heterogeneity | Mixed operating systems, kubelet versions and node pools multiply the checks and the places where settings can drift. | Standardize node images and kubelet configuration, then sample nodes per pool instead of reviewing every node by hand. |
| Distribution and managed-service mix | Managed services expose different control plane settings, so some recommendations are fixed by the provider and must be documented as such. | Confirm the distribution and provider benchmark variant before scanning, and list which controls the provider owns. |
| Custom admission policies and add-ons | Policy engines, ingress, storage and monitoring add-ons carry their own configuration, and each change must be reviewed against the benchmark. | Inventory add-ons and admission policies up front and retire unused ones before the assessment starts. |
| Control of etcd and API server settings | If you cannot change API server or etcd flags, those findings become deviations or provider responsibilities rather than fixes. | Ask the platform owner to confirm which flags are editable, and record the ones that are not in the applicability register. |
| Air-gapped tooling constraints | Scanners, benchmark content and vulnerability databases must be mirrored or loaded offline, and updates need a controlled transfer process. | Mirror scanner images and benchmark content into the private registry before the engagement, and agree the update procedure in writing. |
| Number of deviations needing justification | Each deviation needs a documented reason, a compensating control and an owner, which often takes more review time than fixing a finding. | Agree the applicability register and acceptable deviation criteria before scanning, so justifications are written once. |
| Audit timeline and evidence volume | Assessors expect scan outputs, configuration snapshots and change records covering the period they test, and retention rules add storage and handling work. | Define the evidence period, retention location and naming convention in the scope, and collect evidence on a schedule rather than at audit time. |
How to verify that CIS findings are closed and fail safely
A CIS finding is closed only when a repeated scan confirms it and behavioral tests show the cluster still works. Rerun the same benchmark version your scope cites, with the same scanner version, profile and cluster configuration that produced the original results. Save the raw output and diff it against the baseline by check ID. A check that moved from fail to pass needs a matching change record. A new fail is a regression to investigate, not noise to ignore. If the scanner version or benchmark version changed between runs, the diff does not prove anything, so rerun the baseline first. Scan results prove that a setting exists, not that the platform behaves correctly. Schedule a test workload set in a namespace that matches production settings and confirm the pods reach Running. Create a privileged test pod in a namespace labeled to enforce the Restricted Pod Security Standard, and confirm that the API server rejects it with an admission error. For encryption at rest, create a test Secret, then read its key under /registry/secrets in etcd with etcdctl get from a control plane node. The stored value should not be readable plaintext and should carry the prefix your encryption provider writes. Confirm that prefix in the Kubernetes encryption at rest documentation for your provider. For RBAC, impersonate a service account that lacks Secret rights and run kubectl auth can-i list secrets in each namespace. The answer should be no everywhere it is meant to be. Some failure modes pass the scan but still hurt the business. A hardening change can satisfy a check and then block the next minor upgrade, for example when a tightened admission policy or a kubelet flag conflicts with a controller or add-on that the newer release expects. Test the upgrade path in staging before accepting the change, and check the version skew rules for every node role. A second risk is a scanner that cannot see managed control plane settings. Managed services are covered by the benchmark, but a scanner running inside the cluster often cannot read API server or scheduler flags. Mark those checks as not verified, collect the provider's own configuration evidence, and do not count them as passes. The third risk is a finding closed by an undocumented exception, such as a scanner exclusion or a namespace label that silences a check. Every exclusion needs an owner, a reason, a compensating control, an approver and a review date. Decide the response to a failing check before the change window opens. Roll back when the change broke workloads, a security control or control plane health, and restore the previous manifests or configuration, then rerun the full test set. Record a deviation entry when the team decides not to apply a recommendation, and keep the reason, the compensating control and the expiry with the scan evidence. Retest when the result is ambiguous, the fix was applied but not proven, or the scanner could not reach the setting. Put these three triggers in the change plan with a named owner for each, so the engineer on call does not decide under pressure. Ask your platform team to show you which trigger each past failure produced and where that evidence is kept.
How CIS assessment differs by deployment model
With upstream kubeadm clusters, your team configures the control plane directly, including the API server flags, controller manager, scheduler, etcd topology and kubelet settings. Every benchmark recommendation applies to you unless you can document why it does not apply to the design you chose. Responsibility for each control sits with your team.
- Applicability register: list each recommendation against the kubeadm-generated static pod manifests and kubelet configuration, recording the file and flag that satisfies it, or the documented reason it does not apply, such as a component you do not run.
- Remediation options: edit the manifests and kubelet configuration through your configuration management, reapply them and rescan. Keep every change in version control so it survives kubeadm upgrades.
- Host-level settings: control plane file permissions, etcd TLS settings and etcd data directory ownership are set by your node build, so many findings trace back to the host image.
- Evidence the auditor will ask for: scanner output for each run, the register with named owners and review dates, the version-controlled configuration that produced the running flags, and approved exception records.
Confirm the flags and file paths that your kubeadm version uses against the benchmark version you select, because defaults change between releases.
With EKS, AKS, GKE, OKE or OpenShift, the provider operates much of the control plane and some node components. The benchmark still covers these services, but many recommendations are answered by the provider's configuration, and some controls are not exposed to you at all. The register therefore follows shared responsibility, with each recommendation assigned to the provider, to you or to both.
- Applicability register: mark each recommendation as provider-managed, customer-configured or not applicable because the component is absent. Record the provider documentation you relied on for each decision.
- Remediation options: change the settings you control, such as node images, authentication mode, API endpoint exposure, node pool configuration and audit logging. For provider-managed items, document the provider's evidence instead of attempting a change.
- Evidence the auditor will ask for: the provider's shared responsibility statement for the service, cluster configuration exported from the provider, scan results against your chosen benchmark variant and your own node-level configuration records.
- Upgrade effects: provider-driven control plane upgrades can change how a recommendation is answered, so the register needs a review after each upgrade.
Check every provider-specific setting and default against the provider documentation for your service and region, because managed defaults and available options vary.
In an air-gapped cluster, the scanner, its benchmark content and any dependent images must be brought in through an approved transfer process. The assessment logic does not change, but evidence collection and upgrades do, because the cluster cannot pull tools or images from the internet when a scan runs.
- Mirroring: the scanner image, its benchmark or rule content and every dependent image must be mirrored into your private registry and verified before use. Record the source and checksum of each transfer.
- Applicability register: the same recommendations apply, but the register should state which evidence sources are offline copies and the date each copy was taken.
- Remediation options: configuration fixes move through your internal repositories and approval process, so the change path becomes part of the control evidence.
- Offline upgrade path: kubeadm can pull control plane images from a private registry through the image repository setting, so each upgrade needs a new mirrored image set and a fresh scan before the results are trusted as evidence.
- Evidence the auditor will ask for: the transfer log, the mirrored image inventory and scan outputs tied to the snapshot dates.
Confirm with your scanner vendor which content updates can run offline and how they are supplied, because the process differs between tools.
Questions buyers ask before bringing in help with CIS compliance
Can our internal team run a CIS Kubernetes assessment without outside help?
Yes, if the team can map each recommendation to the components in its cluster and keep a deviation register. The work is mostly reading the benchmark against your distribution, deciding which recommendations apply, running a scan tool, then fixing or documenting each finding. Gaps usually appear in three places: recommendations that depend on distribution defaults, control plane settings that sit outside the cluster (such as flags on a managed control plane), and evidence that is not kept for each version. A deviation register records each recommendation you do not follow, the reason, the compensating control and the owner who accepted the risk. If nobody on the team knows the API server, kubelet and etcd configuration well, a short external review of the mapping before you start is often worth the time.
What drives the cost and duration of a CIS benchmark engagement?
The main drivers are the number of clusters, nodes and environments, the distribution, and how many recommendations apply after mapping. Managed or vendor distributions often change which controls you can set, which affects the mapping work. Other drivers include whether you need assessment only or assessment plus remediation, how much change control or downtime the work needs, whether the cluster is air-gapped, and what format your auditor expects for evidence. Costs fall into one-time work (mapping, assessment, remediation, evidence packs) and recurring work (rescans, upgrade reviews, a support retainer). DeployOpen does not publish a price list. A quote follows from a written, fixed scope, so ask for the assessment, remediation and evidence work to be priced separately.
What do we need to provide for a CIS benchmark engagement?
You need read access to the cluster, access to node configuration, change windows and named owners. Cluster access usually means a kubeconfig with read permissions or a scan agent approved by your security team. Node-level review needs access to the configuration files and service arguments on control plane and worker nodes. Remediation needs change windows that your operations team controls, especially for API server and kubelet changes that can restart components. Name one owner for the platform, one for security decisions and one liaison for the auditor. Finally, agree the scope in writing: which clusters, which benchmark version, which recommendations are excluded and why, and who signs off on each deviation.
Does a passing CIS scan result count as certification?
No. A scan result is evidence of how a cluster was configured at a point in time, not a certification. The scan shows how the cluster compares with the recommendations you selected. Independent auditors and certification bodies decide whether your evidence meets the standard or framework your organization is assessed against. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports, attestations or certifications. Before you start, ask your auditor which benchmark version and which recommendations they accept, and keep raw scan output, the configuration used, the deviation register and dated remediation records together.
How often should we rerun a CIS Kubernetes benchmark scan?
Rerun the scan after each Kubernetes minor upgrade and after each significant configuration change. Kubernetes publishes about three minor releases a year and maintains the three most recent, so upgrades are a regular trigger. Significant changes include API server flags, admission configuration, encryption at rest for Secrets, RBAC model changes, new node pools and changes to the network or storage plugins. Upgrade rehearsals in staging are a good point to run the scan before production changes. Scheduled scans between these events are a team choice. Whatever cadence you choose, store each run with its cluster version and the change record it followed, so the history is useful to an auditor.
Can we use the CIS Kubernetes Benchmark PDF for commercial work?
Confirm this directly with CIS before you rely on the PDF in commercial work. According to the Center for Internet Security, the CIS Kubernetes Benchmark covers upstream Kubernetes and managed services such as EKS, AKS, GKE, OKE and OpenShift, and it is freely available as a PDF for non-commercial use. Commercial use, including using benchmark text in client deliverables, may need a different license or permission from CIS. Do not assume that a free download covers your use. Also check the license terms of any scanning tool you use, since the tool may bundle benchmark content under its own terms. Record CIS's answer in your project file.
How DeployOpen scopes, remediates and hands over CIS benchmark work
DeployOpen approaches CIS Kubernetes Benchmark work as a fixed-scope engagement in your own infrastructure. We agree which recommendations apply to your distribution, fix the findings in scope, and leave you with scan results and documentation your team can keep as evidence.
How we scope
- Confirm the Kubernetes distribution, version and whether it is upstream kubeadm, a vendor build or a managed service
- Agree in writing which CIS Kubernetes Benchmark recommendations apply and which are excluded, with reasons
- Record the clusters, namespaces, nodes and etcd members covered, and the scan tooling and evidence format to be used
How we build
- Run an baseline assessment against the agreed recommendations and record each finding with its current state
- Remediate in-scope findings through configuration changes such as API server flags, kubelet settings, RBAC and Pod Security Standards
- Retest each changed control after remediation and log the result, so the evidence reflects the cluster after the fix
How we hand over
- Deliver a findings register mapping each recommendation to its status, owner, change record and exception rationale
- Provide scan outputs and configuration snapshots that your team can rerun and store as audit evidence
- Document accepted deviations and where they were approved, so auditors can follow the decision trail
How we support
- Offer ongoing support and continuous testing as a retainer, so rescans follow each cluster upgrade
- Review benchmark changes and deprecations when moving between supported Kubernetes minor releases
- Confirm with your auditor which evidence formats and sampling they expect before the final handover

