- Home
- Compliance
- ISO 27001 Compliance
- Secure development
ISO 27001 controls
Secure development under ISO 27001: the controls that follow your code to production.
Annex A has a run of technological controls about building software. Read together, they describe a pipeline: decide what secure means for a feature, design for it, write it carefully, test it, keep environments apart, and treat outsourced code and test data with the same care. An auditor follows that pipeline and asks for the trace each stage leaves.
Back to ISO 27001 services01 · The control set
Eight controls that read as one pipeline
Controls 8.25 to 8.31 plus 8.33, each covering one stage of how software gets made.
The 2022 edition groups these controls in the technological theme. Each one is short in the standard; the work is deciding what each means for your stack. The names below are the public Annex A titles. What follows each is our own description of the purpose.
- 8.25 Secure development life cycle
- Security has a defined place in every phase of how you build, from idea to release.
- 8.26 Application security requirements
- Security needs are written down for an application before it is built or bought.
- 8.27 Secure system architecture and engineering principles
- Agreed design principles that new systems are measured against.
- 8.28 Secure coding
- Coding practices that avoid known classes of flaw, applied and checked.
- 8.29 Security testing in development and acceptance
- Security is tested before release, against the requirements set earlier.
- 8.30 Outsourced development
- Code written by others is directed, monitored and reviewed as if it were yours.
- 8.31 Separation of development, test and production environments
- Environments are kept apart so a mistake in one cannot spill into another.
- 8.33 Test information
- Data used for testing is chosen and protected, and real personal data is handled with care.
8.32 Change management sits in the middle of this run. It has its own guide because it reaches beyond code into infrastructure and configuration.
02 · Stage by stage
Where each control lands in a modern pipeline
One row per stage: the control that governs it and the evidence that stage naturally produces.
| Pipeline stage | Control | Evidence an auditor can sample |
|---|---|---|
| Planning a feature | 8.26 requirements | Security acceptance criteria on the ticket or design document |
| Design | 8.27 architecture principles | A short design review note or threat model for significant changes |
| Writing code | 8.28 secure coding | Coding guideline, linter and static analysis configuration, review comments |
| Pull request | 8.28 and 8.32 | Approved review by someone other than the author, with checks passed |
| Build and test | 8.29 security testing | Pipeline logs showing dependency, secret and static scans, and their results |
| Pre-release acceptance | 8.29 acceptance | Sign-off that the security criteria were met, or an accepted exception |
| Environments | 8.31 separation | Separate accounts or projects, access lists showing who reaches production |
| Test data | 8.33 test information | Masking or synthetic data method, approval for any use of live data |
| Vendor code | 8.30 outsourced development | Contract security clauses, review of delivered code, acceptance tests |
Notice that most evidence comes from tools you already run. A team that uses pull requests and a build pipeline is producing the records; the gap is usually that nobody has written down that these steps are the control, so they drift.
03 · The life cycle
Writing the life cycle down without inventing a new process
Describe the process you have, then add the security checkpoints it lacks.
- Draw your current path from ticket to production, as it really runs.
- Mark the points where a security decision is made or should be made.
- For each point, name the owner, the check and the record it leaves.
- Decide which changes are big enough to need a design review or threat model, and say how you tell.
- Write it in a page or two, and reference it from your secure development policy.
Using a recognised model
Public frameworks such as OWASP SAMM and the NIST Secure Software Development Framework (SSDF) describe secure development practices in detail. Neither is required by ISO 27001, but either can give your life cycle a vocabulary and a way to judge maturity over time.
04 · Small vs large teams
What the controls look like at different sizes
The intent is the same. The mechanism changes with headcount.
Small team
A handful of engineers, one product
- Branch protection forces one reviewer on every merge
- Security criteria are a checklist in the pull request template
- Free or bundled scanners run in the build
- Production access limited to two or three named people
- Synthetic seed data instead of copies of live data
Large team
Many squads, shared platforms
- A security champion in each squad, with a central owner
- Threat modelling required above a defined risk level
- Central scanning with tracked findings and agreed fix times
- Separate platform team owns environment separation
- A masking service for any data copied out of production
An auditor does not grade size. They check that what you said you do is what the records show you do.
05 · Vendors and test data
The two controls teams forget
Outsourced code and test data are where scope quietly leaks.
- Contract terms for vendors. Secure coding expectations, ownership of code, right to review, and how defects are handled.
- Review on delivery. Vendor code goes through the same pull request and scan path as your own.
- Vendor access. Contractors reach only the repositories and environments they need, and lose access when work ends.
- Test data rules. Live personal data is not used for testing unless approved, protected like production, and deleted after.
- Lower-environment hygiene. Secrets and keys in test and development are not the production ones.
- A database copy for debugging. A full production snapshot restored to a laptop or a test account is the classic finding under 8.33.
- Shared admin across environments. If one role can change development and production alike, separation under 8.31 is only on paper.
- Scans that nobody reads. A tool that runs but whose results are never triaged does not show testing under 8.29.
06 · What auditors ask
What a certification auditor is likely to ask
Expect sampling: a handful of recent changes, followed end to end.
- Show me your secure development policy and where the life cycle is described.
- Pick three merged changes from last quarter: who reviewed them, and what checks ran?
- How do you decide when a change needs a design or threat review?
- Who can deploy to production, and how is that limited?
- Where does test data come from, and has live data been used?
- For code a contractor wrote, show the review and acceptance.
Sources: ISO/IEC 27001:2022 Annex A control titles 8.25 to 8.33 (public titles only; the standard's text is not reproduced); OWASP Software Assurance Maturity Model (SAMM); NIST SP 800-218, Secure Software Development Framework (SSDF).
Secure development questions
Do we need a separate secure coding standard document?
You need agreed practices; their form is yours to choose.
Many teams point to a recognised public guide and add a short page of house rules for their languages and frameworks. What matters is that developers know the practices, the pipeline enforces what it can, and reviews check the rest.
Is a penetration test required for 8.29?
Not by name. Security testing is required; the method is your choice.
The control asks for security testing in development and acceptance. A penetration test is one way to test, often used for major releases or yearly. Automated scans and review checks usually cover the routine flow. Your risk assessment should explain the mix.
We only use a low-code platform. Do these controls apply?
Partly. Exclusions must be justified in the SoA.
Requirements, testing, separation of environments and change control usually still apply to configuration and workflows. If a control truly does not apply, record the reason in the Statement of Applicability.
Can one engineer approve their own pull request in a two-person team?
Avoid it. If unavoidable, add a compensating check.
Self-approval defeats the point of review. Where headcount makes it unavoidable, record the exception and add a compensating check, such as a weekly review of merged changes by the other person.
Related guides
Turn your pipeline into audit evidence.
An ISO 27001 gap analysis reads your development flow against controls 8.25 to 8.33 and shows which records you already have.