Container Image Governance: Building a Golden Catalog and Registry Allowlist That Passes Real Audits

By
Pini Karuchi
August 5, 2026
Diagram comparing official Claude Code container with 107 critical CVEs versus Minimus hardened container with zero critical CVEs

Container image governance is the control loop that decides what is allowed to run in your cluster, who built it, who signed it, and how you prove that to an auditor. An allowlist without a catalog is a wall around an empty city. A catalog without an allowlist is a library no one is required to read. This guide joins the two halves.

The 2026 cloud-native security stack increasingly treats image governance as a single plane: golden image catalog, registry, admission policy, and audit evidence as one chain of custody. This guide explains how these components work together to strengthen software supply chain security and support audit readiness.

Key Takeaways

  • Container image governance is a control loop, not a checklist. The loop joins a sanctioned catalog of golden images with a Kubernetes admission allowlist that enforces "only this catalog runs in production," and produces audit evidence at every stage.
  • The minimum control plane is three layers: provenance (who built it and how), signing (has anything changed since the build), and digest pinning (am I really pulling those bytes). Cosign, Notation, in-toto, and SLSA each cover a slice; none is sufficient on its own.
  • Kubernetes 1.30 introduced ValidatingAdmissionPolicy, an in-tree validator written in Common Expression Language (CEL) that needs no external webhook. Most modern programs combine it with Kyverno for image-signature enforcement and OPA Gatekeeper for cross-resource policies, rather than picking one.
  • Auditors do not want a policy PDF. They want the current allowlist with change history, the admission-decisions log for the audit window, a Cosign signature trail with Sigstore Rekor entries for every running image, build provenance for top-10 production images, and an exception register with documented sunset proof.

1. What "Golden Image" Means When Registries Are Messy and Tags Lie

A golden container image is a small, signed, attested, daily-rebuilt image with a documented lifecycle owner. It is not a virtual desktop image, which is what most "golden image" search results return. In a containerized stack, the golden image is the catalog entry your Kubernetes cluster is allowed to deploy, and the catalog entry your scanners and Software Bill of Materials (SBOM) pipelines treat as the source of truth.

Why "Container Registry Security" Alone Is Not Governance

Container registry security protects the storage layer: authentication, encryption-in-transit, retention policies, vulnerability scanning at push time. Governance answers a different question. Is this image allowed to run, signed by which identity, scanned when, and owned by which team? Registry hardening is necessary, but on its own it does not provide governance. Docker Hub's anonymous pull rate limits, tightened in March 2025, are a cost and reliability concern; they have nothing to do with whether a pulled image was signed by the team that owns it.

The Unified Control Loop: Catalog, Signing, Registry, Admission, Audit

Every governance program has the same five stages, and each stage produces an artifact the next stage consumes:

Stage What It Produces Where It Lives Owned By
Catalog Approved base images and variants Internal registry namespace base-images/ Platform team
Signing & attestation Cosign signature, SLSA provenance, and SBOM Sigstore and Open Container Initiative (OCI) registry Platform team
Registry Versioned, digest-addressable artifacts Harbor, ECR, GHCR, and Artifact Registry Platform and AppSec
Admission policy Allow-or-deny decision at deploy time Kyverno, Gatekeeper, and ValidatingAdmissionPolicy Security and Platform
Audit evidence Timestamped logs of every decision Activity log, admission webhook log, and Sigstore Rekor Compliance and GRC


Each stage produces audit evidence as a byproduct. That is the property that turns "we have a policy" into "we can prove the policy operated effectively over the audit window."

Why Tag-Based Trust Collapses at Scale

Tags are mutable. The nginx:latest digest you pulled this morning is not the digest you will pull tonight. Public registries rewrite tags constantly, mirror caches can poison the wrong way, and namespace squatting is a real attack surface. Intruder.io documented the nignx typosquat (one transposed letter) as an active threat against teams using latest references. 

Sigstore reaching CNCF Graduated status in October 2025 and the EU Cyber Resilience Act enforcement deadline in the same month put two converging pressures on the same problem. Pull by digest, sign on push, and verify at admission, or you do not have governance. You have a hope that the tag still means what you remember.

2. The Minimum Control Plane: Provenance, Signing, and Digest Pinning

Three controls form the minimum image-trust stack for OCI image signing and software supply chain security. Provenance answers who built it and from what. Signing answers did it change since being built. Digest pinning answers am I actually pulling those exact bytes. You need all three. Any one alone leaves a gap the others cannot close.

Provenance: Who Built This and From What?

Provenance is build-process metadata: source commit, builder identity, dependencies pulled, and steps executed. The relevant standards are SLSA (Supply-chain Levels for Software Artifacts, levels 1 through 3+), in-toto attestations for multi-step pipeline metadata, and the GitHub Actions provenance generator for reproducible attestations on hosted runners. SLSA Level 3 is the bar most regulated programs target by 2026 because it requires a hardened, isolated builder.

Signing: Has Anything Changed Since the Build?

Signing answers integrity. Cosign (the Sigstore image-signing tool, not the apartment co-signing kind) is the dominant choice because the keyless OIDC-bound mode removes long-lived key custody from the workflow. Notation, the Notary v2 CLI, is the alternative when an organization has a CNCF-conformant key-management requirement. Both write to a transparency log: Sigstore Rekor for Cosign, the configured registry for Notation. The Rekor entry provides a strong, independently verifiable audit trail that many teams overlook. It can help demonstrate when an image was signed and by whom during an audit. Pair signing with cryptographic visibility for containers so the signed SBOM can be re-evaluated against new advisories without re-scanning a single layer.

Digest Pinning: Am I Really Pulling Those Bytes?

A digest reference looks like nginx@sha256:abc123… instead of nginx:1.27. The tag is a human-friendly pointer; the digest is the cryptographic identity of the image bytes. Production deployments must pin by digest, not tag. The image pull policy interaction matters too: IfNotPresent against a digest is safe; IfNotPresent against a tag means a stale node can run an image the registry rotated weeks ago.

The Four Provenance and Signing Standards Compared

Standard What It Tells You Format and Tool Where It Is Verified
SLSA Attested build process integrity (L1 through L3+) Provenance attestation, SLSA Verifier Pre-deploy CI gate or admission
in-toto attestation Multi-step pipeline metadata (build, test, scan) JSON envelope, attached as OCI artifact Policy engine ingests the attestation
Cosign signature Image-bytes integrity since signing OCI signature, optionally OIDC-keyless cosign verify at admission webhook
OpenVEX "This image is not affected by CVE-X" JSON document attached to image Vulnerability scanner or triage tool

3. Policy as Code at Deploy Time: Admission Rules That Are Strict but Usable

Policy as code Kubernetes is the practice of writing image rules, allowed registries, required signatures, and base-image catalog enforcement in version-controlled YAML alongside your applications. At deploy time, a Kubernetes admission controller policy decides whether the API server should persist the resource. Authentication says who, authorization says can they, and admission says should they. Container image governance lives in that "should they" decision.

What Admission Control Actually Decides

The admission chain runs after authentication and authorization, and before persistence. Mutating webhooks run first, then schema validation, then validating webhooks. For image governance, validating admission is where the registry allowlist, the digest requirement, the signature check, and the label requirement are enforced. If admission rejects the request, no Pod is created, no image is pulled, and no workload starts.

The Three Policy Engines, and When to Pick Each

Most competing articles compare two engines. The 2026 reality is three. Kubernetes 1.30 (April 2024) graduated ValidatingAdmissionPolicy, an in-tree, CEL-based validator that needs no external webhook to operate, and is increasingly default in 1.32+ clusters.

Engine What It Is Best For Limitations When to Pick It
Kyverno YAML-native policy engine, no Rego Image rules, mutations, generation, signature verification (built-in verifyImages) External webhook to operate; mutation rules require care Default for image governance; Cosign verify is built in
OPA Gatekeeper Rego-based ConstraintTemplates Complex or cross-resource policies; orgs already using OPA Steeper learning curve (Rego); two-CRD model is verbose When policies are complex or the team already runs OPA elsewhere
ValidatingAdmissionPolicy (K8s 1.30+) In-tree CEL-based validation Simple image checks (registry allowlist, digest required, label required) with no external webhook Validating only (no mutation); cannot call out to Cosign Zero-operations admission for rules that fit CEL
ImagePolicyWebhook (built-in) Built-in webhook spec for image-only decisions Existing image-scanning gateway integrations Largely superseded; legacy compatibility only Specific legacy gateway cases


A working stack uses ValidatingAdmissionPolicy for the checks CEL can express, Kyverno for verifyImages against Sigstore, and OPA Gatekeeper only when a cross-resource Rego policy already exists. The Kyverno admission controller for minimal base images is the canonical reference for the signature-verification half.

A Minimum Five-Rule Starter Set for Image Governance

A workable baseline that closes 80% of risk on day one:

  1. Registry allowlist. Only registry.example.com/*, gcr.io/<your-org>/*, and ghcr.io/<your-org>/* are allowed. Public registries are mirrored, not pulled directly.
  2. Digest required in production. Production namespaces reject any image referenced by a mutable tag; image@sha256:… only.
  3. Cosign signature required in production. Verify against your Sigstore public key, or the keyless OIDC issuer plus identity. Reject unsigned.
  4. Required labels. Every image must carry org.example.team, org.example.service, org.example.version, and org.example.maintainer. Missing labels mean rejection.
  5. Base-image allowlist (the catalog gate). The image's base layer (verified via SBOM or attestation) must come from your golden-image catalog. Anything else is rejected unless an exception exists.

Webhook availability is the failure mode that kills allowlist programs. Run two webhook replicas behind a service, set failurePolicy: Fail in production with a clear runbook, and warn rather than deny in dev. A crashed webhook with failurePolicy: Fail will halt every deployment in the cluster, and the on-call engineer will ask why governance "broke production" the next morning.

4. How Auditors Test Your Story: Evidence They Ask For Beyond a PDF

A policy YAML is an intent statement. An auditor wants outcome evidence: proof that the intent has been operating effectively over the audit window. This is the section every competing article skips, and the section that turns container registry security and software supply chain security from a slide deck into an artifact trail.

What Auditors Actually Ask For

Auditors do not ask, "do you have an admission policy." They ask, "show me every blocked deploy and reason in the last 90 days, prove that every running pod's image was signed by an authorized identity, and walk me through the build provenance of three top production images." If the answer is a Confluence page, the audit finding writes itself.

The Five Audit-Evidence Categories

Each category maps to a kubectl, cosign, or jq command that produces the artifact, and to a retention store the auditor can verify independently:

Evidence Category What Auditor Asks How You Produce It Storage and Retention
Allowlist contents and change log "Show me the current allowed registries and how they have changed in the audit window" kubectl get validatingadmissionpolicy -o yaml plus git history of policy repo Git (immutable, signed commits)
Admission decisions log "Show me every blocked deploy and reason in the last 90 days" Webhook log plus audit-log query (Kyverno PolicyReport, Gatekeeper events) SIEM with 1-year retention
Signature verification trail "Prove that every running pod's image was signed by an authorized identity" cosign verify output plus Rekor lookup; signature attached to each running image Sigstore Rekor (public transparency log)
Provenance for every running image "Show me build provenance for the top-10 production images" SLSA attestation attached to image (cosign download attestation) OCI registry, retention aligned with image retention
Exception register and sunset proof "Show me every exception, its justification, owner, expiry, and what happened at sunset" Exception ConfigMap plus ticket-system export Ticket system plus git policy repo


The signature verification trail is the one most teams underestimate. Sigstore Rekor is a public, append-only transparency log; the timestamped Rekor entry for a signing event is auditor-grade evidence and lives outside your infrastructure, which auditors prefer. Pair the admission-decisions log with operational visibility for hardened images so the same artifact serves the auditor and the on-call engineer.

How Control IDs Map to Image-Governance Artifacts

Control IDs matter because auditors and platform leads search for the exact strings:

Framework and Control What It Requires Image-Governance Evidence That Satisfies It
NIST 800-53 rev 5: SR-3 (Supply Chain Controls and Processes) Documented and operating supply-chain controls Catalog policy plus provenance attestations plus Rekor entries
NIST 800-53 rev 5: SI-7(15) (Code Authentication) Cryptographic verification of executable code Cosign verification at admission
CIS Kubernetes Benchmark §5.2.6 Minimize admission of containers with allowPrivilegeEscalation Admission policy plus audit log
PCI-DSS 6.3.2 (in-scope component inventory) Maintain inventory of in-scope components SBOM per image plus image-registry inventory
SOC 2 CC7.1 (Change Management) Authorize changes before implementation PolicyReport showing every admission decision
FedRAMP rev 5: SI-7(15) Code authentication via signed components Cosign plus Sigstore Rekor entries
EU CRA Article 13 (cybersecurity-by-default) Documented and maintained SBOM, vulnerability handling SBOM plus VEX plus admission deny logs for vulnerable images


Organizations pursuing frameworks such as FedRAMP often find that policy documents alone are not enough. Being able to produce Rekor entries, provenance attestations, and admission logs for running workloads provides much stronger evidence that image-governance controls have been operating throughout the audit period.

5. Rollout Patterns: Exceptions, Sunsets, and Breaking Legacy Pipelines

Every governance program dies the day a policy blocks a legitimate deploy and the developer's only recourse is "raise a ticket and wait three days." The cure is a graduated rollout plus a fast exception channel. Operator wisdom from Some-Natalie's 2025 Open Source Summit talk frames this well: speed of decision matters more than the criteria of decision.

The Four-Phase Rollout Playbook

A graduated path from no-policy to strict-everywhere that does not break teams:

  1. Phase 1: Audit-only (enforcementAction: warn). Deploy every rule across all namespaces with warning-only enforcement. Duration: 4 weeks. Exit criterion: policy violation rate baseline established, top-5 violation patterns identified, owners notified. Success looks like: zero deploys blocked, full visibility into who would be affected.
  2. Phase 2: Deny in non-production (deny plus namespace selector). Flip enforcement to deny for dev and staging namespaces only. Production stays in warn. Duration: 4 weeks. Exit criterion: non-prod violation rate trending to zero, every violator has a remediation plan or an exception. Success looks like: developers learn the rules in low-stakes environments.
  3. Phase 3: Deny in production with allowlist exemptions. Flip prod to deny, maintain a named allowlist of legacy images grandfathered with documented sunset dates. Duration: 8 to 12 weeks. Exit criterion: all grandfathered exceptions have signed-off sunset dates within 90 days. Success looks like: new prod deploys are 100% policy-compliant.
  4. Phase 4: Strict everywhere with formal exception process. All allowlist exemptions sunset; new exceptions require the seven-field template plus a 24-hour decision SLA. Duration: ongoing. Exit criterion: exception backlog stays at or below 5, exception approval median time stays at or below 1 business day. Success looks like: governance is invisible to teams that follow the catalog.

The Seven-Field Exception Template

Real organizations need every exception to record seven fields, encoded as a ConfigMap so the exception itself is policy-as-code:

Field Purpose Example
requester Engineer plus manager accountability [email@protected], manager [email@protected]
justification Why the catalog cannot satisfy this "Vendor x.y.z requires apt shell; catalog image is distroless"
scope Where the exception applies namespace=team-alpha-prod, image=vendor.example.com/x:1.4.*
expiry When it auto-revokes 2026-09-30
owning_team Who maintains it team-alpha
sunset_trigger What event ends the exception "Vendor publishes distroless variant of x"
evidence_required What proves the sunset happened "Updated image deployed in prod; PolicyReport shows zero violations for 14 days"


The owning team is the field most often skipped, and the field that most often turns a 48-hour exception into a two-year footnote. Encode owner and expiry in the policy itself, and the sunset becomes mechanical rather than political. Pair the exception process with granular access control for container security so the approver list is itself an auditable artifact.

Break-Glass: When the Policy Is the Outage

failurePolicy: Fail is honest but unforgiving. A working break-glass procedure has a named approver list (no individual heroics), a time-boxed exception (24 hours maximum), and a post-incident review that asks whether the policy or the deployment was actually wrong. Organizations commonly encounter a webhook crash that blocked every deploy for 38 minutes; the team's post-mortem fix was not "loosen the policy" but "run two webhook replicas behind a service and add a synthetic deploy probe."

6. Metrics That Prove Governance Is Working, Not Just Blocking

A high admission-deny rate is not success. It usually means the catalog is unusable, developers do not know about it, or the policy is misconfigured. Real success is a low deny rate against strict policies, which means teams are using the catalog correctly. The KPIs below are the ones that survive contact with a CISO who reads dashboards.

Why "Percent of Blocked Deploys" Is the Wrong KPI

The deny rate is a hygiene signal, not an outcome signal. A program that blocks 40% of deploys looks "active" and is failing. A program that blocks 1% of deploys against a strict policy is winning, because the catalog has absorbed the failure modes upstream of admission. Outcome KPIs measure CVE math, time-to-rebuild, exception backlog, and audit-finding count.

Six KPIs That Actually Tell You Governance Is Working

KPI Definition Target (Mature Program) Source or Query Anti-Pattern
Catalog adoption rate Percent of running pods whose image base is in the golden catalog At or above 90% SBOM analysis vs catalog list Below 50% means the catalog is unusable
Signature coverage Percent of production images with valid Cosign signature 100% cosign verify across registry Static below 95% means the signing pipeline is broken
Admission policy denial rate (prod) Denied production deploys divided by total production deploys (rolling 30 days) At or below 1% Kyverno PolicyReport, Gatekeeper events Rising means the catalog or policy is wrong, not that teams are bad
Mean-time-to-rebuild on CVE disclosure Hours from upstream patch release to new catalog image deployed At or below 24h for CISA Known Exploited Vulnerabilities (KEV), at or below 72h for High Build-pipeline telemetry plus SBOM diff Above 7 days means the patch process is broken
Exception backlog Active exceptions divided by total approved exceptions, weighted by age At or below 5 active, none past 90 days expiry Exception ConfigMap plus ticket system Growing backlog means the sunset workflow is broken
Audit-finding count (image governance) Findings raised by external audit per cycle 0 Auditor report Repeat findings across cycles mean governance is theater


How to Wire These Into the Dashboard Your CISO Actually Reads

Three of the six KPIs (adoption rate, signature coverage, denial rate) come straight from the registry and the admission webhook log. The other three (rebuild time, exception backlog, audit-finding count) come from build telemetry, the exception ConfigMap, and the auditor's report. Quarterly review cadence is the right tempo: monthly is noisy, annual is too late to course-correct.

7. Closing: Linking Governance to Measurable CVE Reduction

Governance is not governance for its own sake. The reason to invest in catalog plus admission plus audit evidence is that the alternative is an unbounded CVE backlog and an unanswerable auditor question. Every control in this guide compounds on the next.

A golden-image catalog ships fewer packages, so there are fewer CVEs to triage. Fewer CVEs means a quieter denial stream at admission, which means a shorter and cleaner audit trail, which means lower mean-time-to-rebuild on the next disclosure. The relationship is straightforward: higher adoption of approved base images generally leads to fewer production vulnerabilities, a smaller CVE backlog, and faster remediation when new security advisories are released. The exact improvement depends on an organization’s tooling, processes, and deployment cadence. The foundation of container security is the catalog the admission policy enforces; one without the other is half a control.

Where Image Governance Is Heading in 2027

The 2026 to 2027 cloud-native security stack converges on signed-by-default base images, attestation-rich CEL admission policies that ingest SLSA and VEX directly, AI-assisted exception triage, and zero-CVE catalogs as a baseline expectation rather than a premium tier. 

Sigstore's CNCF graduation in October 2025 and the EU CRA enforcement deadline in the same month shifted signing and SBOM publication from "best practice" to "regulatory floor" for vendors selling into the EU. Organizations that establish catalog-driven image governance and admission controls early are likely to be better positioned for future compliance requirements and software supply chain audits.

A scope caveat from the field. Image governance does not replace runtime detection. It does not catch in-memory exploitation, lateral movement across cloud accounts, or live entitlement abuse. It reduces the input to those control planes and produces the audit evidence that proves the prevention layer is operating. Treat it as the control plane underneath the runtime layer, not a substitute for it.

How Minimus Approaches Container Image Governance

Minimus publishes hardened, minimal container images built directly from upstream source on a continuous rebuild cadence. Each image ships with a Cosign signature, a CycloneDX SBOM, a published VEX document, and a 48-hour critical-CVE remediation SLA. The Hardened Image Gallery is structured as a catalog: every image is digest-addressable, attested, and ready to drop into a ValidatingAdmissionPolicy registry allowlist or a Kyverno verifyImages policy.

Minimus images sit underneath your existing admission control, not in place of it. The result is a shorter exception backlog, a higher catalog adoption rate, and a base layer that contributes to satisfying key supply-chain-oriented controls auditors check (including NIST SP 800-53 SR-3 and SI-7(15), CIS Kubernetes Benchmark §5.2.6, PCI-DSS 6.3.2, SOC 2 CC7.1, FedRAMP rev 5 SI-7(15), and EU CRA Article 13).

Browse the catalog at images.minimus.io or read the verification, SBOM, signing, and admission-policy guides at docs.minimus.io.

Frequently Asked Questions

What Is Container Image Governance and Why Does It Need Both a Catalog and an Allowlist?

Container image governance is the control loop that joins a sanctioned catalog of golden images with a Kubernetes admission allowlist that enforces "only this catalog can run." The catalog without the allowlist is documentation; the allowlist without the catalog is a wall around an empty city. You need both, plus the audit evidence each produces.

How Is Container Registry Security Different From Image Governance?

Container registry security protects the storage layer: authentication, encryption-in-transit, retention policies, and scanning at push time. Image governance answers the deeper question of which images are allowed to run, who signed them, what their provenance is, and whether the running set matches what was approved. Registry security is necessary, but never sufficient on its own.

Which Kubernetes Admission Controller Policy Engine Should I Pick: Kyverno, OPA Gatekeeper, or ValidatingAdmissionPolicy?

Use Kyverno when image-signature verification needs to be built into the admission workflow, particularly through its verifyImages support for Sigstore. Use OPA Gatekeeper when policies are complex or your organization already runs OPA elsewhere. Use the in-tree ValidatingAdmissionPolicy (CEL, Kubernetes 1.30+) when your rules are simple and you want zero webhook operations. Most mature platforms run a combination of all three.

Is OCI Image Signing With Cosign Enough for Software Supply Chain Security?

OCI image signing with Cosign verifies the image bytes have not changed since signing. That is one slice of software supply chain security. You also need provenance (SLSA attestations), digest pinning at deploy time, and admission policies that check both before allowing a Pod to start. Signing alone proves nothing about how the image was built, only that it has not changed since.

How Fast Can We Roll Out Admission Policies Without Breaking Existing Teams?

Use a four-phase playbook: 4 weeks audit-only across all namespaces, 4 weeks deny in non-prod, 8 to 12 weeks deny in prod with grandfathered exceptions, then strict everywhere with a seven-field exception template and a one-business-day decision SLA. The cultural rule is that decision speed matters more than decision criteria. Slow exception processes create shadow IT faster than strict policies create compliance.

Pini Karuchi
CFO
use minimus for free

Free minimized container images

The world’s largest selection of free, ~0 CVEs, compliant container images.
No login. No $. Just pull & go.