- As a CI/CD pipeline step that fails the build on non-compliance
- Through the Kosli API for custom tooling
- Via a Kubernetes admission controller that rejects non-compliant pods
Assertion scopes
kosli assert artifact (and its API equivalent) supports three assertion modes:
| Mode | CLI flag | When to use |
|---|---|---|
| Environment | --environment | Check all policies attached to the target environment. The most common choice for deployment gates. |
| Specific policies | --policy | Check one or more named policies, regardless of environment attachment. Useful for promotion gates between stages. |
| Flow templates | (no scope flag) | Check against the template files of the flows the artifact appears in. |
--environment and --policy are mutually exclusive.
--flow can be combined with any mode to narrow the lookup to a specific flow. Without --flow, all flows containing the artifact (by fingerprint) are considered.
See kosli assert artifact for the full flag reference.
Enforce in CI/CD pipelines
Addkosli assert artifact as a step before your deployment step. If the artifact is non-compliant, the command exits with a non-zero status and the pipeline fails.
Assert against an environment
Check all policies attached to the target environment:- GitHub Actions
- GitLab CI
Assert against specific policies
Check one or more named policies directly. This is useful when gating a promotion between stages or checking policies that are not attached to an environment:Enforce via the API
For custom deployment tooling or non-CI contexts, call the assert endpoint directly:- EU
- US
compliant—trueorfalsepolicy_evaluations— detailed results per policy (when asserting against an environment)compliance_status— per-attestation compliance breakdown
- EU
- US
Enforce with a Kubernetes admission controller
A Kubernetes validating admission webhook can call the Kosli assert API when a pod is created and reject pods whose images are non-compliant. The flow is:Pod creation triggers the webhook
Kubernetes calls your admission webhook before scheduling the pod.
Webhook extracts the image fingerprint
The webhook reads the container image reference from the pod spec and resolves its SHA256 digest.
Webhook calls the Kosli assert API
The webhook sends a request to the assert endpoint with the fingerprint and the target environment name.
What happens on failure
CLI: A non-compliant artifact causeskosli assert artifact to exit with a non-zero code. CI/CD pipelines treat this as a failed step and stop the deployment. Use --output json to get machine-readable compliance details.
API: The response body returns compliant: false with a compliance_status object describing which attestations are missing or non-compliant, and policy_evaluations listing per-policy results.