Image without description
  • Jacco Meijer
  • |
  • Oct 18, 2025

Security controls for software development

Exploring how security controls protect and improve every stage of the DevSecOps workflow.

Security controls for software development

The foundation for this post is in the post below.

Image without description
  • Jacco Meijer
  • |
  • Oct 17, 2025

Software development security

On risk assessments, security controls and the complexity of securing the Software Development Lifecycle (SDLC)

DevSecOps

In strong contrast to Waterfall, DevSecOps is a modern approach that integrates security throughout the entire SDLC.

Outlining security controls for software development by following the DevSecOps approach works well because security is integrated into every step of DevSecOps.

Image without description
Figure 1. The DevSecOps approach with security integrated in every step

Figure 1 shows how the steps relate. Each step is outlined below and relates the step to the relevant security controls, scrum roles, scrum events and which controls could be added to automated CI/CD pipelines.

Controls from compliancy standards like ISO 27002 are not added but with the help of AI, a simple basic set can be generated. For making the list more actionable AI can also assist with tool recommendations.

Not all security controls are equally critical. Their implementation must always be guided by risk assessments. In this post, controls are categorized and prioritized based on relative importance, as outlined below.

ImportanceDescriptionCriteria
EssentialFoundational controls necessary for baseline security and operational integrity.Supports core security functions (e.g., detection, response); significantly reduces risk.
ImportantControls that enhance security posture and efficiency but are not critical to basic operations.Improves detection, visibility or response; offers strong but deferrable security and process benefits.
OptionalAdvanced or supplemental controls that add value in mature or resource-rich environments.Useful for optimization; may require more resources, customization or maturity to implement effectively.

πŸ”§ 1 - Plan

Product owner responsibilities

ImportanceControlRationale
EssentialClassify data based on sensitivityData classification underpins all security decisions and controls.
EssentialFacilitate regular risk assessmentsIdentifies threats and vulnerabilities; informs security prioritization across the SDLC.
EssentialDrive secure Solution Design and Architecture (SDA)Embeds security early in system design; improves resilience, scalability and reduces risk exposure.
ImportantAssign a security championEncourages security ownership in the team; recommended especially where security expertise is limited.
ImportantOversee privacy impact assessmentsCrucial for handling personal data, especially under GDPR, CCPA or similar regulations.
OptionalMap to governance frameworks (NIST, ISO, NIS2, etc.)Useful for compliance and audit readiness; less critical for daily DevSecOps unless under regulatory pressure.

During scrum planning event

ImportanceControlRationale
EssentialAdd security requirements to user storiesEnsures security is considered from the outset and integrated into feature development.
EssentialDefine security-specific acceptance criteriaMakes security testable and part of the Definition of Done.
EssentialConduct threat modeling on evolving requirementsProactively identifies and mitigates new risks introduced by changing features.
ImportantEvaluate compliance and legal considerationsEnsures adherence to regulatory requirements; more relevant for regulated environments.
ImportantPlan rollback and deployment strategies earlyEnables safe release and recovery options; especially important for complex or risky features.

During scrum refinement activity

ImportanceControlRationale
EssentialReview new threat surfaces from backlog changesKeeps pace with evolving risks and ensures proactive security responses.
OptionalUpdate STRIDE modelsProvides structured threat modeling; best used during major changes, not required for every refinement cycle.

πŸ”§ 2 - Code

Product owner responsibilities

ImportanceControlRationale
EssentialEnforce secure repository policiesControls codebase integrity by regulating access and ensuring only reviewed, approved changes are merged.
ImportantEnforce secure coding standardsGuides developers to write secure, maintainable code and reduce common vulnerabilities early.
OptionalProvide security awareness and trainingBuilds a security first mindset; valuable but less critical in daily delivery if delegated effectively.

Dev team responsibilities

ImportanceControlRationale
EssentialPrevent hardcoded credentials and secretsHardcoded secrets are a major risk; avoiding them is critical for protecting sensitive information.
ImportantValidate third-party code componentsThird-party dependencies can introduce supply chain risks and should be vetted carefully.
OptionalConduct security-focused peer reviewsHelps catch issues not found by tools, but requires trained reviewers and consistent practices.

In the CI/CD pipeline

ImportanceControlRationale
EssentialUse commit hooks for linting, testing and signingEnforces code quality and security before it enters the build pipeline.
EssentialRun Static Application Security Testing (SAST)Detects code-level vulnerabilities early, helping shift security left.

πŸ”§ 3 - Build

Product owner responsibilities

ImportanceControlRationale
EssentialEnforce build integrity policiesEnsures only verified, approved code gets built; prevents unauthorized or malicious changes.
ImportantSupport Coordinated Vulnerability Disclosure (CVD)Enables secure reporting and response to vulnerabilities from external researchers.
OptionalSupport bug bounty programsAdds an external layer of security validation, but requires mature vulnerability management.

In the CI/CD pipeline

ImportanceControlRationale
EssentialScan dependencies for vulnerabilitiesOpen source components are common attack vectors; automated scanning helps mitigate this risk.
EssentialDetect hardcoded secrets (double check)Also prevented during coding. Prevents exposure of sensitive credentials before they reach production.
ImportantEnforce policy-as-code gatesAutomates enforcement of security/compliance rules early in the pipeline.
ImportantAutomate dependency updatesReduces risk from known vulnerabilities by keeping components current.
OptionalIntegrate continuous penetration testingValuable for mature orgs; provides deeper testing, but can be complex and resource-intensive.

πŸ”§ 4 - Test

Product owner responsibilities

ImportanceControlRationale
EssentialEnsure exploratory security testing is performedUncovers unanticipated risks; complements automated and structured testing methods.
ImportantSchedule manual penetration tests periodicallyProvides deep dive validation before major releases; supports compliance and proactive mitigation.

In the CI/CD pipeline

ImportanceControlRationale
EssentialDAST, IAST and API Security TestingFinds real world vulnerabilities in running apps and APIs.
EssentialCompliance and Privacy ValidationEnsures legal and regulatory alignment before release.
ImportantRegression and Fuzz TestingDetects edge case vulnerabilities from new changes or malformed input.
OptionalChaos Security TestingValidates system resilience in unpredictable scenarios; valuable in mature environments.

βš™οΈ 5 - Release

Product owner responsibilities

ImportanceControlRationale
EssentialImplement secrets lifecycle managementEnsures secure handling of secrets throughout their lifecycle, reducing exposure risk.
ImportantValidate rollback strategiesEnables recovery from faulty releases, minimizing downtime and damage.
OptionalAudit release approval workflowsEnhances transparency and traceability, though not mission critical for every release cycle.

During scrum review event

ImportanceControlRationale
EssentialConduct security reviews and obtain risk sign-offConfirms that security risks are identified, mitigated or formally accepted before release.
ImportantDocument and communicate key security decisionsBuilds an audit trail and supports team awareness and future decision making.

In the CI/CD pipeline

ImportanceControlRationale
EssentialEnforce artifact signing and integrity verificationProtects against tampering by verifying that artifacts are legitimate and unaltered.
ImportantApply consistent version tagging policiesEnables traceability and structured rollback in case of release issues.
OptionalGenerate release notes with security insights (CVEs, CWEs, OWASP Top 10)Promotes awareness and improves communication, but not a direct control.

βš™οΈ 6 - Deploy

Product owner responsibilities

ImportanceControlRationale
EssentialEnsure pre-deployment image scanningIdentifies known vulnerabilities before images are deployed, preventing insecure releases.

In the CI/CD pipeline

ImportanceControlRationale
EssentialAnalyze Infrastructure as Code (IaC) for misconfigurationsPrevents insecure infrastructure deployments from reaching production.
ImportantSecurely inject secrets at runtimeProtects sensitive data by avoiding exposure during build or deployment.
OptionalImplement Zero Trust deployment practicesImproves security posture; best suited for mature or highly regulated environments.

βš™οΈ 7 - Operate

Product owner responsibilities

ImportanceControlRationale
EssentialEnsure incident response outcomes and monitoring results are incorporated into the backlogSupports continuous improvement and proactive risk mitigation through feedback loops
ImportantEnsure environment and network segmentation is preservedLimits blast radius and helps contain breaches in case of an incident
ImportantEnsure containers and host operating systems are appropriately hardenedReduces the attack surface by minimizing exploitable vulnerabilities
OptionalAdvocate for hardened runtime environmentsTypically managed by platform or security teams; less central to the product owner’s core role

During scrum retrospective event

ImportanceControlRationale
EssentialReflect on operational incidents and concernsEncourages learning from failures and builds a culture of continuous improvement in security operations.

In the CI/CD pipeline

ImportanceControlRationale
EssentialEnforce least privilege IAMMinimizes access-related risk by restricting privileges to the minimum necessary.
EssentialAuto patch known vulnerabilitiesReduces exposure to known exploits through timely updates.
ImportantImplement secure and tamper-resistant audit loggingSupports investigations, compliance and operational integrity.
OptionalEnable Runtime Application Self-Protection (RASP)Adds real time protection; best suited once foundational defenses are in place.

βš™οΈ 8 - Monitor

Product owner responsibilities

ImportanceControlRationale
EssentialEnsure SIEM/SOAR integration and audit log monitoringEnables centralized visibility, alerting and supports effective threat detection and response.
ImportantLeverage threat intelligence and anomaly detectionEnhances proactive detection capabilities by identifying unusual or known malicious behavior.
OptionalUse ML or behavioral analyticsUseful for advanced detection; typically leveraged in mature security programs.

During scrum retrospective event

ImportanceControlRationale
EssentialTrack vulnerability resolution metricsDrives accountability and improvement in remediation speed and efficiency.
ImportantReview incident response performanceHelps refine playbooks and processes based on recent events.

In the CI/CD pipeline

ImportanceControlRationale
EssentialRun continuous monitoring within the CI/CD pipelineProvides real-time visibility and early detection of threats during the software lifecycle.
ImportantDetect and alert on IDS/IPS eventsStrengthens defense with actionable, network level threat detection.
OptionalAutomate incident response with playbooks and ticketingImproves response time and consistency, but requires mature alerting and monitoring infrastructure.

Detect versus Protect

The number of cybersecurity tools and acronyms continues to grow steadily. For SDLC controls it is important to understand the distinction between:

  • detect, identifying and alerting on threats and suspicious activities and;
  • protect, actively safeguard systems and data by preventing and blocking threats.

The table below explains the roles and capabilities of IDS/IPS and SIEM/SOAR controls:

ControlRoleDetectProtect
IDSMonitor network or system traffic to detect suspicious activitiesβœ…βŒ
IPSDetect and actively block threatsβœ…βœ…
SIEMCollect, analyze and correlate security eventsβœ…βŒ
SOARAutomate and orchestrate response actionsβœ…βœ…

Risk analysis

This post outlines many security controls whose full implementation is only justified in very high risk or mission critical software projects.

In practice, selecting which controls to implement is guided by a cost benefit analysis. Evaluating the security improvements that each control offers to the SDLC compared to the resources required to implement them.

These benefits are best understood through thorough risk analysis. This helps identify which threats are most relevant and which controls provide the greatest value in mitigating them.

More on risk analysis is in the post below.

Image without description
  • Jacco Meijer
  • |
  • Oct 19, 2025

Risk analysis for software development

By systematically identifying and assessing potential risks, teams can reduce uncertainty and prevent costly issues.

Conclusion

By embedding security into every phase of the Software Development Lifecycle (SDLC), the DevSecOps approach ensures that security is no longer an afterthought, but a continuous and integrated discipline. From planning and coding to deployment and monitoring, each step introduces targeted controls that reduce risk and increase resilience.

Rather than applying a one size fits all checklist, these controls should be tailored through risk analysis and cost benefit evaluations, ensuring that resources are focused where they matter most. Automation, tool integration and security aware roles within agile teams make it possible to maintain both speed and security.

In an environment where threats evolve rapidly, DevSecOps provides a structured yet flexible foundation for building secure software by design, by default and by deployment.


Other posts

Image without description
  • Jacco Meijer
  • |
  • Oct 22, 2025

What cyber security mistakes do organizations still make?

A brief check on how the AI response for this question compares to real life experience.

Image without description
  • Jacco Meijer
  • |
  • Oct 19, 2025

Risk analysis for software development

By systematically identifying and assessing potential risks, teams can reduce uncertainty and prevent costly issues.

Image without description
  • Jacco Meijer
  • |
  • Oct 17, 2025

Software development security

On risk assessments, security controls and the complexity of securing the Software Development Lifecycle (SDLC)

Image without description
  • Jacco Meijer
  • |
  • Oct 14, 2025

Canonical controls with Enterprise Risk and Security Management

How to use the SCF canonical control objectives with ERSM in Archimate

Image without description
  • Jacco Meijer
  • |
  • Oct 7, 2025

ISO 27000, ISA 62443, NIS2, BIO, NIST CSF and NIST SP 800-53

How to align the steadily increasing number of cyber security frameworks, standards and regulations?

Image without description
  • Jacco Meijer
  • |
  • Aug 15, 2025

Asset security

Information asset identification and classification from a security perspective

Image without description
  • Jacco Meijer
  • |
  • Aug 8, 2025

Data security

Data identification, data roles and data classification from a security perspective

Image without description
  • Jacco Meijer
  • |
  • Jul 25, 2025

Threat modeling, security frameworks and Enterprise Architecture

Combining ISO 27001, NIST CSF and threat modeling with Enterprise Architecture strengthens all elements

Image without description
  • Jacco Meijer
  • |
  • Jul 18, 2025

Threat modeling as part of a risk framework

Threat modeling in the context of ISO 27001 and NIST CSF

Image without description
  • Jacco Meijer
  • |
  • Jul 11, 2025

Cyber security risk frameworks

Managing cyber security risk with ISO 27001 and NIST CSF

Image without description
  • Jacco Meijer
  • |
  • Jun 27, 2025

NIST CSF Tiers for cyber security risk governance and management

NIST CSF 2.0 contains useful tiers for Capability Maturity Modeling in Enterprise Architecture

Image without description
  • Jacco Meijer
  • |
  • Jun 20, 2025

Archimate risk assessment elements

A few simple specializations for working with risk assessments in Archimate

Image without description
  • Jacco Meijer
  • |
  • Jun 13, 2025

Security principles in Enterprise Architecture

Adding security principles to Enterprise Architecture for NIST CSF and ISO 27001

Image without description
  • Jacco Meijer
  • |
  • Jun 6, 2025

Combining ISO 27001 and NIST CSF

How to use ISO 27001 and NIST Cyber Security Framework together

Image without description
  • Jacco Meijer
  • |
  • May 1, 2025

CISSP certification and Enterprise Architecture

How do the CISSP certification domains relate to Enterprise Architecture and the ArchiMate layers?

Image without description
  • Jacco Meijer
  • |
  • Apr 23, 2025

Architect roles in the ArchiMate context

An ArchiMate model that maps architect roles to the ArchiMate framework layers.

Image without description
  • Jacco Meijer
  • |
  • Mar 18, 2025

Visualizing IT Architecture in three languages, UML, C4 and ArchiMate

What are the differences and what are these languages most used for?

Image without description
  • Jacco Meijer
  • |
  • Feb 18, 2025

OAuth 2.0 and OpenID Connect Sequence Diagrams

Technical specs can be hard to read. While still highly technical, the UML Sequence Diagrams provided in this blog are a lot easier to understand.

Image without description
  • Jacco Meijer
  • |
  • Jan 9, 2025

OWASP and CISSP

OWASP recommendations from the independent information security certification CISSP.

Image without description
  • Jacco Meijer
  • |
  • Mar 21, 2024

UI Library with MDX documentation

Using the simple Render JSX plugin for Esbuild this post shows how to setup a simple UI library.

Image without description
  • Jacco Meijer
  • |
  • Mar 20, 2024

Render JSX plugin for Esbuild

Transform Esbuild generated JSX bundles to HTML pages.

Image without description
  • Jacco Meijer
  • |
  • Mar 19, 2024

Esbuild as a static site generator for MDX

Static site generators gain popularity. This blog is about using Esbuild as a static site generator for MDX.

Image without description
  • Jacco Meijer
  • |
  • Mar 18, 2024

11ty and Github pages

Simplifying the Contentful-Gatsby-Netlfy trio.

Image without description
  • Jacco Meijer
  • |
  • Jun 30, 2022

NPM7 and @npmcli/arborist

@npmcli/arborist is a powerful library that handles the new NPM 7 workspaces. This blog is about a simple make tool that uses the library.

Image without description
  • Jacco Meijer
  • |
  • May 12, 2022

Comparing React app, Nextjs and Gatsby

A new React project starts with a React toolchain. Main tools in the chains are SSR, React server components and GraphQL.

Image without description
  • Jacco Meijer
  • |
  • May 10, 2022

Versioning strategy for NPM modules

It is important to be able to bump the version of a NPM package without side effects.

Image without description
  • Jacco Meijer
  • |
  • Apr 12, 2022

React component themes and CSS variables

Creating React components with flexible themes by using CSS variables.

Image without description
  • Jacco Meijer
  • |
  • Mar 21, 2022

Content modeling with variants

The efficiency of a variant field in a content model.

Image without description
  • Jacco Meijer
  • |
  • Mar 12, 2022

Documentation

Documenting a software project is challenging. Here's a few simple guidelines that help a team writing clear documentation.

Image without description
  • Jacco Meijer
  • |
  • Mar 11, 2022

Javascript history

In 1986 David Ungar and Randall B. Smith developed Self at Xerox PARC. Inspired by Java, Scheme and Self Brendan Eich created Javascript in 1995.

Image without description
  • Jacco Meijer
  • |
  • Mar 10, 2022

On Javascript transpilers, bundlers and modules

There's Javascript transpilers, modules, bundles and bundlers. This is a brief overview of all of these.

Image without description
  • Jacco Meijer
  • |
  • Feb 11, 2022

Agile Scrum

The Agile Scrum framework is flexible enough to be used in many different ways. Here's one way of working.

Image without description
  • Jacco Meijer
  • |
  • Jan 20, 2022

What happened to Wheelroom?

Founded in 2018. Started to fly in 2020 and abandoned in 2021. What happened?

Image without description
  • Jacco Meijer
  • |
  • Jan 19, 2022

Contentful, Netlify and Gatsby four years later

What did we learn from using Contentful for four years?

Image without description
  • Jacco Meijer
  • |
  • Jan 18, 2022

Typescript interface for React UI components

How to define an interface for React UI components that prevents breaking changes.

Image without description
  • Jacco Meijer
  • |
  • Jan 17, 2022

Naming React components

What's in a name? A clear naming strategy helps developers communicate. Most devs rather spend time writing component code than wasting time on a good component name.