A safeguard to mitigate threats
A security control is a specific safeguard that reduces riskRiskComplianceA risk to the product or businessView reference → to a system: a firewall rule, an access review, an encrypted backup, a mandatory training. Controls are where security stops being a statement of intent and becomes something an auditor can inspect and an attacker has to defeat. The discipline classifies them along two axes at once, by what they do in time and by what kind of thing they are, and the two-axis grid is what keeps a security programme from being a pile of disconnected fixes.
The vocabulary of preventive, detective, and corrective controls comes from internal-audit and accounting practice, where the question was always who stops the error, who notices it, and who fixes it. Information security adopted the framing wholesale. A preventive control reduces the chance an incidentIncidentDevOps & PlatformA production incidentView reference → happens at all (encryption, access rules); a detective control surfaces an incident as or after it occurs (intrusion detection, log review); a corrective control limits damage and restores the system afterwards (backups, patching). The trio maps cleanly onto the NIST Cybersecurity Framework functions, where preventive controls support Protect, detective controls support Detect, and corrective controls support Respond and Recover.
The second axis, technical versus administrative versus physical, sorts controls by their nature: a software ACL, a written policy, a locked server cage. Major frameworks codify the catalogue. NIST SP 800-53 lists hundreds of controls across families; the CIS Controls (v8 has 18) prioritise a defensible subset; and ISO/IEC 27001 Annex A enumerates the controls an information security management system selects from. The 2022 ISO revision added attributes to each control, including its control type, which formalised the preventive-detective-corrective tag inside the standard itself.
A SaaS team has a threatThreatSecurityA specific security threatView reference → on its board: an attacker who phishes an engineer's credentials could reach the production database. One control rarely answers a threat on its own, so the team layers across the time axis. Preventive: mandatory hardware-key multi-factor authentication on every production login. Detective: an alert when a database admin session opens from an unrecognised device. Corrective: automated session revocation and a rotation runbookRunbookDevOps & PlatformA runbook for incident responseView reference → that the on-call engineer can trigger in one command.
Each control is now an inspectable object. The auditor checking the team against ISO 27001 does not ask "are you secure?"; they ask "show me the control, show me it is operating." The MFA setting, the alert ruleAlert RuleDevOps & PlatformAn alerting ruleView reference →, the runbook, each leaves evidenceEvidenceValidationData supporting or refuting a hypothesisView reference →. The threat is the reason the controls exist; the framework is why these specific controls were chosen.
In the Unified Product Graph, a security control is a connective entity, defined as much by what it links to as by what it is. A Compliance FrameworkrequiresSecurity Controlcross-domain edge records the obligation that put it in scope; a compliance_framework_requires_security_controlSecurity PolicymandatesSecurity Controlhierarchy edge ties it to the rule it enforces; and a security_policy_mandates_security_controlProductenforcesSecurity Controlhierarchy edge grounds it in the actual system. Its outbound defence is captured by product_enforces_security_controlSecurity ControlmitigatesThreatcross-domain and security_control_mitigates_threatSecurity ControlprotectsServicecross-domain, so the graph can answer two audit-grade questions at once: which framework requirement does this control satisfy, and which threat does it actually stop. A control that satisfies a framework but mitigates no threat is compliance theatre, and the structure makes that visible.security_control_protects_service
Type-specific fields on BaseNode
control_typestringFunctional role. `preventive` = stops attacks (MFA, input validation). `detective` = identifies attacks in progress (intrusion detection, audit logs). `corrective` = reduces impact after an attack (incident response, backup restore). `compensating` = alternative when primary isn't feasible.
effectivenessobjectMitigation effectiveness (1 = minimal, 5 = fully effective)
control_familystringControl family (e.g. "access control", "network security")
framework_refstringFramework reference (e.g. "CC6.1", "A.9.2.3")
last_testedstringISO date last tested
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 phases — initial: planned
5 edge types connected to this entity.
product_enforces_security_controlsecurity_policy_mandates_security_controlsecurity_control_mitigates_threatsecurity_control_protects_servicecompliance_framework_requires_security_control