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

About the Software Development Lifecycle (SDLC) and how this relates to security controls and assessing software risks

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 be used to generate tool recommendations.

🔧 1 - Plan

Product Owner

  • Assign a security champion
  • Drive proper Solution Design and Architecture (SDA)
  • Facilitate risk assessments
  • Classify data according to sensitivity
  • Oversee privacy impact assessments
  • Map security governance policies (NIST, ISO, OWASP)

Scrum planning activities

  • Threat modeling on evolving requirements
  • Add security requirements to user stories
  • Evaluate compliance and legal requirements
  • Plan rollback and deployment strategies early
  • Include security-specific acceptance criteria in stories

Scrum refinement activities

  • Perform or update STRIDE models
  • Review new threat surfaces from backlog changes

🔧 2 - Code

Product Owner

  • Enforce secure coding standards
  • Provide regular security training and awareness sessions
  • Enforce secure repository policies

Dev team

  • Perform security focused peer code reviews
  • Prevent hardcoded credentials and secrets
  • Validate third party code components

Automated by CI/CD

  • Run Static Application Security Testing (SAST)
  • Use commit hooks for linting, tests and signing

🔧 3 - Build

Product Owner

  • Enforce build integrity policy
  • Support a bug bounty program
  • Support Coordinated Vulnerability Disclosure (CVD)

Automated by CI/CD

  • Scan dependencies for vulnerabilities
  • Scan for hardcoded secrets
  • Automate dependency updates
  • Apply policy-as-code gates
  • Integrate continuous PEN test pipelines

🔧 4 - Test

Product Owner

  • Schedule manual PEN tests every N major releases
  • Ensure conduction of exploratory security testing

Automated by CI/CD

  • DAST, IAST, API Security Testing
  • Chaos security tests
  • Regression and fuzz testing
  • Compliance and privacy policy validation

⚙️ 5 - Release

Product Owner

  • Ensure implementation of secrets lifecycle management
  • Ensure validation of rollback strategy
  • Ensure that release approvals are audited

Scrum review activities

  • Conduct security review and risk sign-off
  • Document and communicate security decisions

Automated by CI/CD

  • Generate release notes with security info (CVE, CWE, OWASP Top 10)
  • Ensure artifact signing and tamper checks
  • Apply version tagging policies

⚙️ 6 - Deploy

Product Owner

  • Ensure that pre-deployment image scanning is performed

Automated by CI/CD

  • Analyze IaC for misconfigurations
  • Inject secrets securely at runtime
  • Zero trust security deployment practices

⚙️ 7 - Operate

Product Owner

  • Ensure that incident response outcomes and monitoring results are fed back into the backlog
  • Enforce hardened runtime environments
  • Ensure that containers and host operating systems are hardened
  • Ensure that environment and network segmentation is maintained

Scrum retrospective activities

  • Reflect on operational concerns and incidents

Automated by CI/CD

  • Ensure least privilege IAM
  • Enable Runtime Application Self Protection (RASP)
  • Patch known vulnerabilities automatically
  • Secure audit logging

⚙️ 8 - Monitor

Product Owner

  • Ensure integration of SIEM/SOAR and audit log monitoring
  • Ensure anomaly detection and threat intelligence
  • Use ML/behavioral analytics

Scrum retrospective activities

  • Track and discuss vulnerability resolution metrics
  • Review incident handling effectiveness

Automated by CI/CD

  • Automate incident response with playbooks and ticketing
  • Detect and alert on IDS/IPS events
  • Run continuous monitoring pipelines

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 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

About the Software Development Lifecycle (SDLC) and how this relates to security controls and assessing software risks

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.