If…, then how…
If we build or configure software ourselves, how much secure development does ISO 27001 expect?
Add to board memoOpen the memo
The short answer
- Recommendation
- Decide first whether you build software at all. If you do, set the depth of control by what the software can reach, enforce peer review and scanning in the tooling, separate environments, test before release and track findings to closure. Trace a sample of changes.
- Reasoning
- The development controls reward a short standard that is built into the tools over a long one that is not. Auditors sample changes and look for skipped steps with no record, scanning findings nobody triages, standing production rights for developers and test findings left open. Scaling the depth to the risk keeps a small team from either ignoring the control or burying itself in it.
- Considerations
- The standard's text is paywalled. The controls are described from the pack's Library and public guides, which are secondary.
- NCSC's secure development principles (secure the environment, the repository and the pipeline, test continually and plan for flaws) and OWASP guidance are useful sources for the content of your standard. Neither is a pack rule.
- The 12 month interval for testing exposed systems is the Library's example. Your risk decides.
- If the only software is bought, say so in the Statement of Applicability and keep the buying controls.
The decision, step by step
Select any step for the reasoning behind it and where the pack covers it.
- Start
- Step
- Decision
- Outcome
- Loop back
Keyboard: Tab to a step, arrow keys move along the flow, Enter pins its explanation, + and − zoom, 0 fits the diagram, Esc closes. The text version below has the same content.
Where a step quotes a number, it is the default in the CISO Times pack. Your own standard may set a different one.
Read as text
The same flow written out: each step, its reasoning and where the pack covers it. 22 steps.
Start
We build or configure software and must show it is built securely
The development controls ask that security is built into how software is made, rather than tested in at the end. The Library says they apply where you develop or configure software yourself, including scripts, integrations and low-code applications. How much you need depends on what you build and the data it handles.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Decision
Do we write code, scripts, infrastructure as code or low-code apps?
Infrastructure as code and scripts that deploy or configure services count. If the only software you use is bought and configured through a console, the development controls may not apply, though the requirements for buying still do. If you are not sure what your engineers build, answer yes.
- No: Record why development does not apply; cover bought software instead
- Yes, or not known: Does the software face the internet or handle sensitive data?
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Outcome
Record why development does not apply; cover bought software instead
Write the reason in the Statement of Applicability, naming what you checked. Do not claim the control is met by default; claim only that you checked and found no development. Bought software still needs security requirements before purchase and testing before acceptance. The questions on justifying an exclusion and on the cloud services you rely on go further.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Decision
Does the software face the internet or handle sensitive data?
Depth of control should follow risk. The pack's AI review procedure sets three depths by what a feature can reach, and the same idea works here: more rigour for exposed systems and sensitive data, less for an internal script. If unsure, answer yes.
- Yes, or not known: Set security requirements for each new feature from its data and risks
- No: Keep it light: a short standard, peer review and basic scanning
In the pack
- P25-A03 LLM Application Security Review ProcedureWhat sets the depth
Step
Keep it light: a short standard, peer review and basic scanning
For low-exposure software write a one-page standard with the few rules you will enforce: peer review before merge, dependency scanning and no secrets in code. Say in the Statement of Applicability that the control is applied in this proportion.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Set security requirements for each new feature from its data and risks
For a new application or major change write down what it needs: authentication, access control, logging and data protection. Put them in specifications and acceptance criteria. Requirements added after the contract is signed are the Library's named mistake.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Write a short secure development standard and design principles
Put in one short standard the design principles (least privilege, defence in depth, secure defaults), the coding rules for your languages and how developers are trained in them. Review the design of significant systems against it before building. Principles written but never applied to a design is the Library's named mistake.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Decision
Is peer review before merge enforced by the tooling?
A rule that depends on goodwill fails under deadline pressure. Branch protection that blocks a merge without a second reviewer is a record that cannot be skipped quietly. If a developer can merge their own code, answer no.
- Yes: Do code and dependency scans run, with someone triaging findings?
- No, or not known: Turn on required review and protected branches
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Turn on required review and protected branches
Set the repository so a change needs a reviewer other than its author, and so the pipeline must pass before release. Record any bypass with its reason, and review those records.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Decision
Do code and dependency scans run, with someone triaging findings?
Scanning tools whose findings nobody triages are the Library's named mistake. Vulnerable dependencies left for months are the other. If scans run but nobody owns the results, answer no.
- Yes: Are environments separate, with no standing production rights?
- No, or not known: Add the scans to the pipeline and name who triages and by when
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Add the scans to the pipeline and name who triages and by when
Choose scans for the languages and components you use, run them on every change, and set a deadline for each severity. The vulnerability pack's prioritisation can set the deadlines. Record exceptions as you would for any other finding.
In the pack
- P01-A02 Vulnerability & Exposure Management Standard5.2 Remediation deadlines
Decision
Are environments separate, with no standing production rights?
Developers with permanent administrator rights in production and tests run against live data are the Library's named mistakes. Separate accounts, separate credentials and a controlled route to production fix them. If developers can change production directly, answer no.
- Yes: Test before release; add an independent test for significant releases
- No, or not known: Separate the environments; move changes only by the release route
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Separate the environments; move changes only by the release route
Use separate accounts or subscriptions, give developers time-limited production access through a request, and keep live data out of test. Link the release route to your change procedure. Where live data is essential in test, get approval, protect it to the same level and delete it afterwards.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Test before release; add an independent test for significant releases
Run security tests in the pipeline. For significant releases, or at least every 12 months for exposed systems, add a penetration test (the Library's 12-month example), by someone who did not build the system where you can (the flow's advice; the pack's AI review requires it only at its deepest level). The pack's AI review procedure likewise puts an independent tester at its deepest level.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
- P25-A03 LLM Application Security Review ProcedureReview depth
Decision
Are test findings tracked to closure, with a date and an owner?
Penetration test findings left open until the next test are the Library's named mistake. Every finding needs an owner and a date, or an exception that someone with authority has accepted. If findings sit in a report, answer no.
- Yes: Is development outsourced, or is the software bought?
- No, or not known: Put each finding in the tracker with an owner and a date
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Put each finding in the tracker with an owner and a date
Use the same tracker as for scanner findings so one deadline model applies. Review overdue ones at the same meeting. A finding past its date needs a recorded exception, not silence.
In the pack
- P02-A02 Security Exception & Waiver StandardWhen an exception is needed
Decision
Is development outsourced, or is the software bought?
Outsourced development and acquired systems are covered too. The Library asks you to test acquired systems against their security requirements before acceptance. If a supplier writes code for you, answer yes.
- Yes: Put requirements in the contract and test delivery on acceptance
- No: Trace a sample of recent changes through the standard
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Put requirements in the contract and test delivery on acceptance
Include the requirements in the tender and the contract, ask for evidence of the supplier's own practice and test before you accept. A clause library helps with the wording. Review the supplier's work as it is delivered, not only at acceptance.
In the pack
- P06-A07 Supplier Contract Security Clause LibraryHow to use this library
Step
Trace a sample of recent changes through the standard
Pick a few changes and check each for requirements, review, scanning, testing and release approval. Skipped steps under deadline pressure with no record is the Library's named mistake. The auditor will take the same sample.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
- P08-A05 Mandatory ISMS Documentation ChecklistAnnex A Documents
Decision
Did every sampled change follow the standard?
A standard nobody follows is the commonest gap. Where a step was skipped, was the reason recorded and approved? If any change skipped a step with no record, answer no.
- Yes: Secure development applied in proportion, followed and sampled
- No, or not known: Fix the cause, record the exception and sample again
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Step
Fix the cause, record the exception and sample again
Find why the step was skipped: tooling, time or unclear ownership. Fix that, record the exception for the sampled change and take a fresh sample.
- Then: Trace a sample of recent changes through the standard (back to an earlier step)
In the pack
- P02-A02 Security Exception & Waiver StandardWhen an exception is needed
Outcome
Secure development applied in proportion, followed and sampled
Keep the standard, the pipeline settings, the finding tracker and the sample result. Do not claim a secure development life cycle for software that was not in the sample, or describe scanning as testing. AI features have their own review.
In the pack
- P08-A03 Annex A Control Implementation LibraryControl Library
Practical checklist
- Decide whether you write or configure software, and record the answer in the Statement of Applicability.
- Set the depth of control by what the software can reach and the data it handles.
- Set security requirements for each new application or major change.
- Enforce peer review, scanning and separate environments in the tooling.
- Test before release, with an independent test for significant or exposed releases.
- Track findings to closure, and trace a sample of changes through the standard.
Evidence to have ready
- The secure development standard, with its depth rules.
- Pipeline and repository settings showing required review and scanning.
- Test results and the finding tracker with owners and dates.
- A sample of changes that followed the standard, and exceptions where they did not.
Assumptions
- You know who writes, configures or deploys software for your services.
- You have a place changes and findings are recorded, such as a repository and a tracker.
- The ISMS scope names the systems that are built in-house or by a supplier.
Not covered here
- Controlling how changes reach production. That is “How do we decide which changes to systems need approval, and handle emergency changes, under ISO 27001?”.
- Developers who deploy their own code. That is “If developers deploy their own code to production, is that a conflict, and what compensates?”.
- Reviewing an AI feature or agent before release. That is “How do we review an LLM feature or an AI agent for security before it goes live?”.
- Prioritising scanner findings. That is “How do we decide what to fix first when the scanner shows thousands of findings?”.
Related questions
- How do we decide which changes to systems need approval, and handle emergency changes, under ISO 27001?
- If developers deploy their own code to production, is that a conflict, and what compensates?
- How do we review an LLM feature or an AI agent for security before it goes live?
- How do we decide what to fix first when the scanner shows thousands of findings?
- How do we decide which security clauses go into a contract?