EmergenceDB is an open-source graph model for Governance, Risk, and Compliance (GRC) systems. It allows users to define, query, and manage relationships between key GRC entities such as requirements, controls, policies, risks, and evidence. This schema supports dynamic queries, integrations, and customization to fit diverse organizational needs.
- Node Label:
Control - Key Properties:
ControlID: Unique identifier (e.g., "AC-1").Name: Name of the control.Description: Control details.Implemented: Boolean indicating if implemented.Framework: Associated framework (e.g., NIST, PCI-DSS).
- Node Label:
Requirement - Key Properties:
RequirementID: Unique identifier (e.g., "NIST-800-53-AC-1").Name: Short description.Description: Requirement details.Framework: Associated framework.NodePack: Grouping mechanism for requirements.
- Node Label:
Policy - Key Properties:
PolicyID: Unique identifier.Name: Policy name.Description: Overview.LastUpdated: Last updated timestamp.
- Node Label:
Evidence - Key Properties:
EvidenceID: Unique identifier.ArtifactDescription: Evidence details.Source: Evidence origin.DateCollected: Collection date.
- Node Label:
Risk - Key Properties:
RiskID: Unique identifier.Name: Risk name.Description: Details.Severity: Severity level.Likelihood: Likelihood of occurrence.Impact: Potential impact.
(:Control)-[:Satisfies]->(:Requirement): Links a control to the requirement it satisfies.(:Evidence)-[:Supports]->(:Control): Connects evidence to the control it supports.(:Control)-[:Mitigates]->(:Risk): Indicates a control mitigates a specific risk.(:Policy)-[:Documents]->(:Control): Links policies to the controls they document.(:Requirement)-[:RelatesTo]->(:Requirement): Shows conceptual links between related requirements.
MATCH (control:Control)-[:Satisfies]->(requirement:Requirement {RequirementID: "PCI-DSS-1.1"})
RETURN control.Name, control.DescriptionMATCH (evidence:Evidence)-[:Supports]->(control:Control {ControlID: "AC-1"})
RETURN evidence.EvidenceID, evidence.ArtifactDescriptionMATCH (control:Control)-[:Mitigates]->(risk:Risk)
WHERE control.Implemented = true
RETURN risk.Name, risk.Description, risk.Severity- Install a graph database such as Neo4j.
- Create indices for
ControlID,RequirementID, andRiskIDto optimize query performance.
- Import your organization’s GRC data to create nodes and relationships.
- Automate data ingestion from compliance tools, vulnerability scanners, or other sources.
- Extend existing nodes with additional properties (e.g.,
OwnerforControlorPriorityforRisk).
- Example: Audits
AuditID,AuditDate,Auditor- Relationships:
(:Audit)-[:Evaluates]->(:Control)(:Audit)-[:ReportsOn]->(:Risk)
- Define custom relationships (e.g.,
(:Risk)-[:Exacerbates]->(:Risk)to model cascading risks).
- Use tools like Neo4j Bloom or integrate with Power BI for interactive visualizations.
-
Maintenance
- Regularly audit nodes and relationships to ensure data accuracy.
- Version control schema changes.
-
Access Control
- Apply RBAC (Role-Based Access Control) to manage permissions.
-
Documentation
- Maintain a registry of node types, properties, and relationships.
For questions, feedback, or contributions, reach out to mitchell@securemetrics.io.