Skip to content

Segregation of Duties

Segregation of duties is the rule that the person who does something is not the person who confirms it was done properly.

In OrviQ it is enforced structurally, at the service layer, on every governed decision.


The universal rule

The maker cannot be the checker.

Concretely, across the platform:

The person who...Cannot...
Proposed a mappingApprove it
Requested an exceptionApprove or reject it
Made an applicability decisionApprove it
Authored an assessmentReview and approve it
Owns a findingReview, accept, dismiss or close it
Owns an action planApprove it
Approved an action planVerify it
Submitted an engagementDecide it
Authored a BIA, plan or exerciseApprove or sign it off
Submitted an incident reviewApprove the closure
Prepared an audit plan or engagementApprove or sign it off
Coordinated a regulatory responseApprove it
Authored a policyApprove its publication

Where enforcement happens

At the service layer, not in the interface.

This matters because interface-level enforcement can be bypassed by an API call. A rule that only exists in a button's disabled state is not a control.

Beyond blocking the action, requesters are excluded from their own review queues, so a submitter never sees their own item awaiting their approval.


The Three Lines model in findings

Findings carry the clearest expression of the model.

LinePermissionCan doCannot do
Line 1finding.remediateComment, attach evidence, remediate, request reassessmentAccept, dismiss or close
Line 2finding.reviewAssign, accept, dismiss, send back, closeAct on a finding they own
Line 2finding.escalateEscalate for risk reviewEscalate a finding they own
Independentfinding.closeIndependent closure

Action plans go further, requiring three distinct people: an owner (action_plan.write), an approver (action_plan.approve) and a verifier (action_plan.verify), none of whom may hold two of those roles on the same plan.


Permissions that are never auto-granted

Some permissions are excluded from every system role template, including the Tenant Administrator's all-permissions grant.

PermissionWhy
tprm.assessGoverned third-party risk assessment is a professional judgement
tprm.classifyRegulatory classification is a professional judgement
tprm.decideApproving a material outsourcing arrangement is a governance decision
assessment.review_self_overrideThe SoD break-glass — see below

Administering the system is not the same as exercising judgement within it

A Tenant Administrator holds tprm.manage — they can configure lifecycle dates, terminate engagements and offboard parties. They cannot assess, classify or decide.

Administrative access should not confer professional authority. Whoever maintains the platform is not thereby qualified to approve a material outsourcing arrangement.


The governed break-glass

One permission deliberately defeats a segregation rule: assessment.review_self_override lets a user approve a control assessment they authored.

It is designed to be hard to use accidentally:

GuardEffect
Off by defaultGranted to no system role template
Excluded from the admin grantExplicitly excluded from the Tenant Administrator all-permissions grant
Not satisfied by admin statusAdministrator status alone never satisfies it
Requires a reasonThe override requires a documented justification
Dedicated audit eventRaises its own distinct audit event, not a generic one

Grant it to a custom role only if your governance model genuinely needs an emergency self-approval path — and expect to explain each use.

A related pattern applies to control_source.override_trust, which is deliberately narrower than control_source.publish and cannot be consumed by the person who granted it.


Roles and stage bindings

Workflow stages bind to tenant RBAC role keys. Segregation depends on those roles being held by different people.

A six-eye chain with one person holding both stage roles is a four-eye chain

The workflow engine enforces that the same person cannot act twice. It cannot know that your Compliance Officer and Compliance Manager roles are held by the same individual.

Review role assignments periodically against your chain configuration. This is the most common way a well-designed chain silently loses depth.


Permissions

ActionPermission
Define workflow steps and SoD flagsworkflow.configure
Approve transitionsworkflow.approve
Administrative overrideworkflow.override
Self-review break-glassassessment.review_self_override

Example

An action plan requiring three people.

ACT-2026-0188 — Enforce MFA on remaining privileged accounts.

RolePersonPermission
OwnerIT Security Operations Manageraction_plan.write
ApproverCompliance Manageraction_plan.approve
VerifierSenior Compliance Analystaction_plan.verify

What was blocked: the IT Security Operations Manager attempted to mark the plan verified after completing the work. Blocked — the owner cannot verify.

What that caught: the verifier, checking independently, found that the indicator was still failing for one account. The plan had been completed on the two accounts named in the plan; a third had been added to scope after the plan was written.

Had the owner been able to self-verify, the plan would have closed with the finding still live.


Troubleshooting

"I cannot approve my own work." That is the rule operating as designed.

"I am an administrator and still blocked." Some permissions are never auto-granted to administrators, and administrator status never satisfies a segregation check.

"A six-eye chain is only involving two people." One person holds both stage roles. Review role assignments.

"We genuinely need a self-approval path."assessment.review_self_override exists for control assessments. Grant it deliberately to a custom role, and expect each use to be audited and questioned.


OrviQ Enterprise Governance, Risk & Compliance Platform