Attack→Control Relationships Schema (crml_attack_control_relationships: "1.0")
This page documents the CRML Attack→Control Relationships document type.
- JSON Schema:
crml_lang/src/crml_lang/schemas/crml-attack-control-relationships-schema.json - Pydantic model:
crml_lang/src/crml_lang/models/attack_control_relationships_model.py(CRAttackControlRelationships)
What an attack→control relationships mapping is
An attack→control relationships mapping is a portable set of grouped mappings from an attack-pattern id (e.g., ATT&CK) to one or more control ids.
It is intended to support workflows like:
- a scenario (or dataset) references attack ids (e.g.,
attck:T1059.003), - tools/engines translate these into candidate controls (
cisv8:...,iso27001:...,org:...), - the mapping provides provenance, relationship type, and optional strength/confidence.
CRML does not mandate attack→attack mappings (e.g., ATT&CK↔CAPEC). If you need those, that is an engine/tool responsibility.
Top-level structure
crml_attack_control_relationships: "1.0"
meta: { ... }
relationships:
id: "..." # optional
relationships: [ ... ]
metadata: { ... } # optional
Relationship mapping (grouped 1→N)
Each mapping entry groups all control targets for a single attack id:
attack(required): attack-pattern id (recommended namespace:attck)targets(required): non-empty list of target entries
Target entry
Each target entry has:
control(required): canonical control id (namespace:key)relationship_type(required): one ofmitigated_bydetectable_byrespondable_bystrength(optional, 0..1): tool/community-defined strength metricconfidence(optional, 0..1): tool/community-defined confidencedescription(optional): free-form description (avoid copyrighted text)references(optional): provenance pointerstags(optional): tool tags
Minimal example
crml_attack_control_relationships: "1.0"
meta:
name: "Example attack→control mappings"
relationships:
id: "example-mapping"
relationships:
- attack: "attck:T1059.003"
targets:
- control: "cisv8:8.2"
relationship_type: mitigated_by
strength: 0.7
confidence: 0.8
references:
- type: url
url: https://example.com/mapping-notes
Using attack→control relationships in portfolios
A portfolio may reference these mappings by path:
portfolio:
attack_control_relationships:
- ../attack_control_relationships/attck-to-controls.yaml
Validation
Python:
from crml_lang import validate_attack_control_relationships
report = validate_attack_control_relationships("path/to/mapping.yaml", source_kind="path")
assert report.ok
````