If…, then how…
If developers deploy their own code to production, is that a conflict, and what compensates?
Add to board memoOpen the memo
The short answer
- Recommendation
- Yes, it is a High conflict. With two or more developers, separate it: require another developer's approval before any merge to the main branch, and deploy only that branch through the pipeline. Where nobody can review, have someone outside the conflict review the deployment log monthly, and record it as an exception with an expiry date.
- Reasoning
- A developer who can write and deploy alone could release a back door, a changed calculation or a disabled check with nobody else seeing it. Required review before merge, with deployment only from the reviewed main branch, separates the duties and needs no exception. Required review means little if code can reach production another way, so the pipeline must be the only route and any bypass is treated as emergency access. A release log read after the change is live does not justify a lower rating.
- Considerations
- Review frequencies, deadlines and approval levels are the defaults in the CISO Times exceptions pack. Your own standard may set different ones.
- Lower the High rating only with a recorded reason and a review, shown to work, that would catch misuse.
- Put any route that skips review on the emergency access list: named users, every use logged with an alert to someone else, the reason recorded the same day, and an independent review within 1 working day in the pack's defaults.
- The developer does not approve the exception. A missed monthly review, or a log the developer supplied, is a failed control: re-score the exception without it and tell the risk owner.
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. 16 steps.
Start
Developers can write code and deploy it to production
The question is whether one person can take a change from their keyboard to live systems with nobody else seeing it. If they can, the pack treats it as a segregation of duties conflict.
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureExample 3 — developers who deploy their own code
- P02-A07 Segregation of Duties Conflict MatrixConflict Catalogue
Step
Treat it as a conflict, rated High by default
Writing code and deploying it is a listed conflict: a developer could add a back door, change a calculation or disable a check and release it. The pack rates it High by default, and its worked example keeps it High: a release log read after the change is live is not a reason to lower it. Lower a rating only with a recorded reason and a review, shown to work, that would catch misuse.
In the pack
- P02-A07 Segregation of Duties Conflict MatrixConflict Catalogue
- P02-A08 SoD Conflict Review & Compensating Control ProcedureConflict ratings
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 2 — Rate
Decision
Is there another developer who could review each change?
The reviewer must be someone other than the author, with enough knowledge of the code to spot a problem. A contractor or a development partner can count. A sole developer, or a team where everyone reviews only their own work, is a no. If you are unsure, answer no.
- Yes: Require another developer's approval before any merge
- No, or not known: Have someone else review the deployment log monthly
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 3 — Separate if you can
Step
Require another developer's approval before any merge
Set the code platform to block a merge into the main branch until a different developer approves it. The author must not be able to approve their own change or switch the rule off. Most platforms offer this at no cost: it is the cheapest separation there is.
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureExample 3 — developers who deploy their own code
- P02-A08 SoD Conflict Review & Compensating Control ProcedureCompensating control catalogue
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 3 — Separate if you can
Decision
Can only the reviewed main branch reach production?
Required review means little if a developer can still deploy from their own branch or laptop. Check that deployment runs only through the build pipeline, only from the main branch. If you have not checked, answer no.
- Yes: Confirm the settings with a fresh export
- No, or not known: Restrict deployment to the pipeline, from main only
In the pack
- P02-A07 Segregation of Duties Conflict MatrixConflict Catalogue
- P02-A08 SoD Conflict Review & Compensating Control ProcedureExample 3 — developers who deploy their own code
Step
Restrict deployment to the pipeline, from main only
Remove direct deployment rights from individual developers, so the pipeline is the only way to production and it deploys only the reviewed main branch.
In the pack
- P02-A07 Segregation of Duties Conflict MatrixConflict Catalogue
Step
Confirm the settings with a fresh export
Export the platform's branch and pipeline settings, or take dated screenshots, after the change. That is the evidence the conflict is separated. A manager's statement that it is is not.
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 3 — Separate if you can
- P02-A03 Exception Lifecycle Operating ProcedureStage 10 — Closure with evidence
Decision
Is there an emergency route that skips review?
Many teams keep a way to push an urgent fix without waiting for a reviewer, or administrators who can override branch rules. That route reopens the conflict each time it is used. If you do not know whether one exists, assume it does.
- Yes, or not known: Put the bypass on the emergency access list
- No: Separated: close the conflict, no exception needed
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureExample 3 — developers who deploy their own code
Step
Put the bypass on the emergency access list
Name who may use it in advance. Log every use and alert someone other than the user. The user records the reason the same day, and someone else reviews what was done within 1 working day in the pack's defaults. Change any credentials afterwards. Unreviewed use is treated as a possible incident.
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureEmergency and privileged access
- P02-A08 SoD Conflict Review & Compensating Control ProcedureEscalation
- P02-A02 Security Exception & Waiver StandardSegregation of duties (rule SD-06)
Outcome
Separated: close the conflict, no exception needed
Record the conflict as closed, with the settings export as evidence. Keep checking at each access review and at the annual review of the conflict list that the branch and pipeline rules are still on.
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureExample 3 — developers who deploy their own code
- P02-A07 Segregation of Duties Conflict MatrixInstructions
Step
Have someone else review the deployment log monthly
The pack's matrix names a monthly review of the deployment log. The reviewer, such as a technical director, the managing director or an outside development partner, pulls it from the pipeline themselves and follows up any release they cannot match to an agreed change. An automated alert on each production deployment, sent to someone else, adds a check as it happens.
In the pack
- P02-A07 Segregation of Duties Conflict MatrixConflict Catalogue
- P02-A08 SoD Conflict Review & Compensating Control ProcedureCompensating control catalogue
Step
Run it once, then raise an exception with an expiry
Run the review once and keep the evidence, because an untested control does not lower the score. Then raise an exception, in the pack's defaults within 5 working days of finding the conflict. Its score sets the approver and the longest duration. The developer does not approve it.
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 4 — Mitigate what cannot be separated (rules EX-01, EX-07)
- P02-A02 Security Exception & Waiver StandardSegregation of duties (rule SD-04)
Decision
At each review, did someone else check every month?
Review a High conflict quarterly and a Medium one every six months, in the pack's defaults. Check the reviewer pulled the log themselves, covered every release since the last review and followed up anything unexplained. A missed month, or a log supplied by the developer, is a failed control.
- Yes: Is a second developer now available to review?
- No, or not known: Failed control: re-score without it and tell the risk owner
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 5 — Review
Outcome
Failed control: re-score without it and tell the risk owner
Score the exception again at once without the review, which may move it to a higher approver, and report the conflict to the risk owner. Restore the review, or find a second reviewer.
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 5 — Review
- P02-A08 SoD Conflict Review & Compensating Control ProcedureEscalation
Decision
Is a second developer now available to review?
Ask at every review. A new hire or a development partner makes required review possible, and required review removes the conflict rather than watching it.
- Yes: require review: Require another developer's approval before any merge (back to an earlier step)
- No: Covered and checked: renew the exception at expiry
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 5 — Review
Outcome
Covered and checked: renew the exception at expiry
Record the review and the next date in your register. At expiry the exception is scored again and renewed. Once its renewals run out it goes to the next approval level up, so management sees the combined duty at least once a year.
In the pack
- P02-A08 SoD Conflict Review & Compensating Control ProcedureStage 4 — Mitigate what cannot be separated
- P02-A02 Security Exception & Waiver StandardRenewal (rule EX-08)
Practical checklist
- Check whether another developer, contractor or development partner can review each change.
- Set the code platform to block merges to the main branch until a different developer approves, with no self-approval or override by the author.
- Remove developers' direct deployment rights, so only the pipeline deploys, and only from the main branch.
- Confirm the settings with a fresh export or dated screenshots.
- Put any review bypass on the emergency access list.
- Where nobody can review, have someone else review the deployment log monthly from the pipeline, run it once, and raise an exception within 5 working days.
- At each review, check every monthly review ran, and move to required review as soon as a second developer is available.
Evidence to have ready
- The branch and pipeline settings export, dated after the change.
- The emergency access list entry for any bypass, with its use logs, reasons and reviews.
- For a covered conflict, the signed monthly deployment log reviews and the approved exception with its expiry.
- The conflict record, its rating and its review dates.
Assumptions
- You build or change software in-house and deploy it to systems you run.
- Review frequencies, deadlines and approval levels shown are the defaults in the CISO Times exceptions pack. Your own standard may set different ones.
Not covered here
- Separating duties in a small team more generally. That is “How do we separate duties when there are only a few people?”.
- How an exception is scored and how long it may last. That is “How do we score an exception and set how long it lasts?”.
- Assessing the security of a GenAI feature you are building. That is “How do we assess the security of a GenAI feature we are building ourselves?”.