5.2 KiB
5.2 KiB
Data Model: Canonical Control Catalog Foundation
Overview
The first slice introduces a product-seeded control catalog and a shared resolution contract. The catalog itself is not operator-managed persistence in v1; it is a bounded canonical registry consumed by existing governance domains.
Entity: CanonicalControlDefinition
- Purpose: Represents one stable governance control objective independent of framework clauses, provider identifiers, or individual workload payloads.
- Identity:
control_key— stable canonical slug, unique across the catalog
- Core fields:
namedomain_keysubdomain_keycontrol_classsummaryoperator_description
- Semantics fields:
detectability_classevaluation_strategyevidence_archetypes[]artifact_suitabilityhistorical_status—activeorretired
- Validation rules:
control_keymust be stable, lowercase, and provider-neutral.domain_keyandsubdomain_keymust point to canonical catalog taxonomy, not framework or provider namespaces.- Each control must declare at least one evidence archetype.
- Each control must declare explicit suitability flags for baseline, drift, finding, exception, evidence, review, and report usage.
Entity: MicrosoftSubjectBinding
- Purpose: Connects provider-owned Microsoft subjects, workloads, or signals to one canonical control without redefining the control.
- Fields:
control_keyprovider— alwaysmicrosoftin the first slicesubject_family_keyworkloadsignal_keys[]supported_contexts[]— for example baseline, finding, evidence, exception, review, reportprimary— whether this binding is the default control for the declared contextnotes
- Validation rules:
- Every binding must reference an existing
control_key. - Provider-specific descriptors must not overwrite control-core terminology.
- More than one binding may point to the same control.
- Multiple controls may only claim the same binding context when the ambiguity is intentionally declared and handled.
- Every binding must reference an existing
Entity: CanonicalControlResolutionResult
- Purpose: Shared response contract for downstream consumers.
- Resolver matching rule: provider, consumer context, and every supplied subject-family, workload, or signal discriminator combine conjunctively to narrow candidate bindings.
- States:
resolvedunresolvedambiguous
- Fields when resolved:
status— alwaysresolvedcontrol— fullCanonicalControlDefinitionpayload containing:control_keynamedomain_keysubdomain_keycontrol_classsummaryoperator_descriptiondetectability_classevaluation_strategyevidence_archetypes[]artifact_suitabilityhistorical_status
- Fields when unresolved:
reason_code— stable failure vocabulary such asmissing_binding,unsupported_provider,unsupported_consumer_context, orinsufficient_contextbinding_context
- Fields when ambiguous:
reason_code— stable failure vocabulary, includingambiguous_bindingcandidate_control_keys[]binding_context
- Validation rules:
resolvedreturns exactly one canonical control.- All supplied discriminator inputs must narrow resolution together; the resolver must not ignore a provided field to force a match.
ambiguousreturns no guessed winner.unresolvedreturns no local fallback label.
Supporting Classifications
DetectabilityClass
direct_technicalindirect_technicalworkflow_attestedexternal_evidence_only
EvaluationStrategy
state_evaluatedsignal_inferredworkflow_confirmedexternally_attested
EvidenceArchetype
configuration_snapshotexecution_resultpolicy_or_assignment_summaryoperator_attestationexternal_artifact_reference
Relationships
- One
CanonicalControlDefinitionhas manyMicrosoftSubjectBindingrecords. - One
MicrosoftSubjectBindingreferences exactly one canonical control. - One governed subject or signal context may resolve to one control or to an explicit ambiguous set.
- Existing governance consumers remain the owners of their own records and read models; they do not become child entities of the canonical catalog.
Lifecycle
CanonicalControlDefinition lifecycle
active: valid for new bindings and downstream useretired: historical references remain resolvable, but new adoption should stop unless explicitly allowed
Resolution lifecycle
resolved: downstream consumer may use canonical metadata directlyunresolved: downstream consumer must surface or log explicit absence rather than invent local meaningambiguous: downstream consumer must stop and preserve explicit ambiguity until the binding model is clarified
Rollout Model
- The first slice keeps the catalog seeded in code and consumed through the resolver.
- Broad persistence of
canonical_control_keyon downstream entities is deferred. - First-slice adoption is read-through and bounded to findings-derived evidence composition and tenant review composition.