Skip to main content
The risks page describes what can go wrong in software delivery. A control is the counterpart: a repeatable, verifiable activity that mitigates one or more of those risks. Controls are what stand between an identified risk and a security or compliance incident. The challenge is not defining controls (most teams already know what “good” looks like) but enforcing them consistently and proving they ran. Manual checklists drift, spreadsheets go stale, and tribal knowledge leaves with the people who hold it. Kosli automates the recording and enforcement of controls so you get continuous evidence that the right things happened.

The SDLC control model

Controls are organized by the phase of the software delivery lifecycle where they apply:

Build controls

Security and quality checks during development: code review, dependency scanning, secret scanning, unit testing, SBOM generation, artifact signing.

Release controls

Validation before deployment: integration testing, vulnerability scanning, compliance gates, approval workflows, change documentation.

Runtime controls

Monitoring and enforcement in production: environment snapshotting, drift detection, policy enforcement, allowlisting, rollback verification.

Lifecycle controls

Human and organizational factors: security training, penetration testing, service ownership.
Kosli’s SDLC Controls Framework contains a rich catalog of controls with risk mappings. Your organization may define additional controls or adapt these to fit your specific compliance requirements.

Example controls by phase

The following examples show representative controls from each phase, the risks they mitigate, and the Kosli concepts that implement them.

Build

Build controls catch problems at the earliest and cheapest point in the lifecycle. The reason code review is a build control (rather than a release control) is that catching an insider threat or unreviewed change before it reaches a releasable artifact reduces the blast radius significantly. Similarly, scanning dependencies during the build is the first opportunity to detect a supply chain compromise before it propagates further.
ControlRisk mitigatedKosli concept
Code reviewInsider threat, Unreviewed changesAttestation (pullrequest type)
Dependency scanningSupply chain compromiseAttestation (snyk type)
Secret scanningCredential and secret exposureAttestation (custom type)
Unit testingVulnerable software in productionAttestation (junit type)

Release

Release controls act as the final gate before software reaches production. While build controls verify individual pieces, release controls verify the whole: does this artifact, taken together with its dependencies and configuration, meet the bar for deployment? Compliance gates and approval workflows exist because some changes carry enough risk that automated checks alone are not sufficient.
ControlRisk mitigatedKosli concept
Compliance gateUnauthorized deploymentFlow Template
Approval workflowUnauthorized deploymentAttestation (approval type)
Vulnerability scanningVulnerable software in productionAttestation (snyk type)

Runtime

Runtime controls address a different class of problem entirely. Even if every build and release control passes, the production environment can still diverge from expectations. Configuration drift happens gradually as manual fixes accumulate. Shadow changes appear when someone bypasses the pipeline altogether. The reason runtime monitoring matters is that it closes the loop: you verify not just what you intended to deploy, but what is actually running.
ControlRisk mitigatedKosli concept
Environment snapshottingShadow changes, Configuration driftEnvironment Snapshot
Drift detectionConfiguration driftEnvironment Snapshot + notifications
Policy enforcementUnauthorized deploymentEnvironment Policy

Lifecycle

Lifecycle controls address the human and organizational factors that underpin all other controls. While build, release, and runtime controls target specific phases, lifecycle controls ensure that teams have the knowledge, accountability, and validation processes to operate a secure SDLC. Without them, the technical controls may be in place but the people and processes behind them are fragile.
ControlRisk mitigatedKosli concept
Security trainingInsider threatAttestation (custom type)
Penetration testingVulnerable software in productionAttestation (custom type)
Service ownershipLack of auditabilityTrail

From controls to Kosli concepts

The controls above are abstract: they describe what needs to happen. Kosli provides the building blocks that implement them. The reason Kosli models controls this way (rather than, say, embedding them as pipeline plugins or CI-specific integrations) is that controls span tools and environments. A single control like “code review” might originate in GitHub, get recorded in a CI pipeline, and need to be verifiable months later during an audit. Kosli’s model is designed to be tool-agnostic so that evidence from any source fits into the same structure. Kosli organizes controls through a hierarchy. At the top is a Flow, which models a process that contains controls (your CI pipeline, your Terraform workflow, your onboarding procedure). Each time that process runs, it creates a Trail, a single execution that collects all the evidence for that run. The reason this layered approach matters is that a single attestation is meaningless without the context of which process produced it and which execution it belongs to. Within a Trail, Attestations record that specific controls were executed and capture their results. A Flow Template defines which attestations are required for a Trail to be compliant. If a required attestation is missing, Kosli flags the Trail as non-compliant. At the runtime level, Environment Policies enforce controls over what may run in production, and Environment Snapshots provide the data that makes runtime controls like drift detection possible. The reason Environments are modeled separately from Flows is that what you build and what you run are fundamentally different concerns. An artifact may pass every build and release control but still create a compliance problem if it appears in an environment where it does not belong. To understand each of these building blocks in detail, continue to How Kosli works.

How Kosli works

Explore each building block and how they connect.

Build controls lab

See build controls in action through a hands-on lab.

Release controls lab

See release controls in action through a hands-on lab.

Runtime controls lab

See runtime controls in action through a hands-on lab.
Last modified on March 31, 2026