More Info:
Configure Image Provenance for your deployment.Risk Level
LowAddress
SecurityCompliance Standards
- CIS Kubernetes
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Review current admission controller configuration (managed control plane: use cloud console/CLI; self-managed: control plane node)
- Self-managed:
- Managed (EKS/AKS/GKE/OKE):
- Open the cluster configuration in the provider console or CLI and locate the API server admission plugins section.
- Decision: If
ImagePolicyWebhook(or an equivalent image provenance admission plugin for your platform) is not enabled, image provenance via ImagePolicyWebhook is not configured.
- Self-managed:
-
Identify any existing image policy webhook configuration (any machine with kubectl access)
- Decision: If you see webhook configurations, ClusterRoles, or bindings clearly tied to image policy/provenance, note their names for detailed inspection.
-
Inspect image policy webhook behavior (any machine with kubectl access)
- Verify:
- Scope: rules include
pods(and optionallydeployments,replicasets, etc.). - Failure policy: typically
Failto enforce provenance (not just audit). - Service/URL: points to a reachable webhook that validates image signatures/provenance.
- Scope: rules include
- Decision: If these conditions are not met, image provenance is not effectively enforced.
- Verify:
-
Assess current workload image provenance (any machine with kubectl access)
- Manually review a sample of images:
- Determine whether they come from a trusted registry that supports signing/attestation.
- Confirm that your intended image-signing or attestation tools (e.g., cosign, Notary, in-toto) are actually being used for these images.
- Decision: If unsigned/unanalyzed images are allowed without webhook enforcement, provenance is not assured.
- Manually review a sample of images:
-
Design or refine the image policy and webhook (any machine with kubectl access)
- Based on your chosen provenance mechanism (e.g., cosign + policy engine):
- Draft or update the webhook’s policy to:
- Require images from specific registries or repositories.
- Require valid signatures/attestations for allowed images.
- Optionally block
:latestor untagged images.
- Draft or update the webhook’s policy to:
- Implement by applying or updating manifests:
- Note: You must obtain or write these manifests according to the image provenance solution you adopt and the Kubernetes documentation; they are not auto-generated.
- Based on your chosen provenance mechanism (e.g., cosign + policy engine):
-
Verify enforcement of image provenance (any machine with kubectl access)
- Test pod creation with:
- Confirm results:
- Non-compliant pod is rejected with an error message from the image policy webhook.
- Compliant pod is admitted and runs.
- If both are admitted or both are denied without reference to image policy, revisit steps 2–5 and adjust configuration and policy until the observed behavior matches your intended image provenance requirements.
- Test pod creation with:
Using kubectl
Using kubectl
- Potential problem indication:
- No webhook configuration objects related to image policy or provenance (names typically contain
imagepolicy,image-provenance,image-signature, etc.). - Or only generic webhooks that clearly do not enforce image provenance.
- No webhook configuration objects related to image policy or provenance (names typically contain
rules:- Problem indication: rules do not target
apiGroups: [""],apiVersions: ["v1"],resources: ["pods"](or other workload types where images are used), or only apply to irrelevant resources.
- Problem indication: rules do not target
clientConfig:(URL/service):- Problem indication: points to a non-existent service, an HTTP (not HTTPS) endpoint, or uses invalid CA bundle, causing the webhook to be effectively bypassed.
failurePolicy:- Problem indication: set to
Ignoreso that if the image policy service fails, pod creation continues without image provenance checks.
- Problem indication: set to
namespaceSelector/objectSelector:- Problem indication: selectors exclude all or most namespaces/workloads where image provenance should be enforced (e.g., only selected namespaces, leaving production unprotected).
matchPolicy/sideEffects/admissionReviewVersions:- Problem indication: misconfiguration that would prevent the webhook from reliably receiving pod admission requests.
- Problem indication:
- Widespread use of untrusted or unverifiable image registries (e.g., random public registries) without any corresponding image policy webhook that validates signatures or provenance.
- Inconsistent image sources that suggest lack of a controlled provenance strategy (e.g., mix of arbitrary Docker Hub images with no signed/private alternatives).
- Problem indication:
- No
--admission-control-config-file(or equivalent) flag present pointing to a configuration that includesimagePolicy/imagePolicyWebhooksettings. - Or a referenced admission config file exists but does not define any
imagePolicystanza.
- No
- Problem indication:
- No vendor- or add-on–specific components that typically implement image provenance or admission enforcement (e.g., no image policy controllers, no Sigstore/Notary/Gatekeeper-style integrations), combined with the lack of webhooks found earlier.
Use the results above to decide:
- Whether an ImagePolicyWebhook (or equivalent admission mechanism) exists and is correctly wired to enforce image provenance on pod creation.
- Whether the scope (namespaces/resources), failure behavior, and connectivity would realistically prevent unsigned/untrusted images from being admitted.
Automation
Automation

