Security Architecture, Zero trust

Building an assumption register without duplicating the control inventory

Why a fourth register needs a reason

Twelve months after one architecture team stood up an assumption register, they had four hundred entries. Architects filed every design decision. Engineers added every integration dependency. Someone transcribed the entire control inventory into assumption language because "control X works" felt like an assumption worth tracking. The register was abandoned the following quarter — not because the concept failed, but because nobody had defined what it was not for.

The register's value is scope discipline. The moment it becomes a mirror of the architecture, it stops functioning as a validation tool and starts consuming the maintenance overhead of three other registers simultaneously. An assumption register documents cross-domain behavioral claims that the architecture depends on but that no single control test can confirm. It does not document controls, standards obligations, funding decisions, or exposure paths from unremediated findings — those belong elsewhere, and filing them here guarantees duplication.

Before standing one up, the honest question is whether the design already carries assumptions that could fail across a boundary without triggering an existing assurance function. If it does, the register has a reason. If the existing control testing program already covers every claim, the register is redundant before the first entry is written.

What belongs in it and what belongs in the control inventory

The sharpest practical distinction: a control inventory records what is deployed and configured; an assumption register records what must remain true across the interaction of multiple controls or systems for the design to hold. "MFA is enforced at the policy decision point" belongs in the control inventory. "MFA enforcement survives an IdP failover to the secondary replica without dropping the session context that the PDP uses for per-request authorization" is an assumption — it spans two systems, a failure mode, and a behavioral claim that no individual control test touches.

Control testing verifies that individual controls operate within their isolated domains, whereas architecture validation asks whether the cross-domain assumptions holding those systems together hold up under stress. Duplication occurs when teams file the same underlying claim in both places using different terminology.

Exposure paths stemming from unremediated findings belong in vulnerability exposure management, which owns attack paths arising from known, unpatched flaws—do not file those here. Similarly, tracking architecture debt and broad validation status reporting belong to executive governance frameworks; the assumption register is an operational validation tool, not a reporting vehicle.

Register boundary table

Candidate entryRegister it belongs inWhyWhat would be duplicated if misfiledCross-reference to record
"Recording is enabled on the jump host policy"Control inventory / assuranceThis is a statement about a single control's configuration, verifiable by testing the control in isolationExisting control test evidenceControl test record; assurance finding
"No admin path reaches the target without traversing the recorded proxy"Assumption registerClaims span the PAM proxy, jump host configuration, and any direct-to-target path — no single control owns the interactionWould duplicate jump host configuration record if filed thereArchitecture decision record
"Token revocation propagates to all resource servers within session timeout window across IdP, gateway, and downstream APIs"Assumption registerClaim spans IdP behavior, gateway policy, and API token-handling — no single control owns the interactionWould duplicate IdP configuration record if filed thereArchitecture decision record
"Network segmentation design approved pending funding for east-west inspection nodes"Architecture decision register This is a funding-gated design decision, not a behavioral assumption under testWould duplicate the decision register and create a false validation obligationArchitecture decision record
"Encryption in transit is required for all data flows crossing tenant boundaries per internal policy"Standards/policy obligation registerThis is a mandatory control requirement, not a behavioral assumptionWould duplicate the policy control mapping and the GRC registerPolicy register; applicable control identifier
"The authentication service dependency on the directory synchronization job means an undetected sync failure will produce stale group membership at the PDP within one replication cycle"Assumption registerCross-system dependency claim with a specific failure mode; spans auth, directory sync, and PDP behaviorWould duplicate dependency map if filed there without the behavioral claim attachedDependency map
"NIST AC-2, as baselined by FedRAMP, requires account management procedures covering account establishment, activation, modification, and termination" (Source: NIST SP 800-53 Rev. 5, https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final)Standards obligation registerThis is a named control with a fixed identifier; assumption registers are for behavioral claims, not compliance mappingsWould duplicate the compliance control mapping in the GRC systemCompliance register; authorization package

The minimum fields an entry needs

Bloat usually enters through optional fields that teams populate inconsistently and then report against. A register that can function with seven fields is more likely to survive a staffing change than one requiring twelve. The minimum set that makes an entry actionable:

Assumption ID — a sequential identifier that can be cross-referenced from architecture decision records and dependency maps without ambiguity.

Statement — the behavioral claim in a single sentence, written so it can be falsified. "The secondary authentication path maintains equivalent policy enforcement to the primary path" is testable. "Authentication is resilient" is not.

Scope boundary — which systems, domains, or trust boundaries the claim spans. This field is what separates an assumption register entry from a control inventory line. If the scope boundary field names only one system, the entry probably belongs elsewhere.

Validation status — one of: unassigned, untested, tested-held, tested-failed, or retired. No scoring, no maturity weighting. Adding numeric confidence scores creates false precision that reviewers mistake for objective measurement rather than engineering judgment; explicit categories establish a clean binary that is straightforward to audit.

Unassigned applies to entries lacking a designated test owner; these feed the testing gap inventory and must not be collapsed into untested, which denotes an assigned owner who has simply not yet executed. Tested-held entries must record the date the determination was made because the retest cadence lives in the test plan rather than the register—without an explicit timestamp, a held result never expires and cannot be challenged in subsequent review cycles.

Held-as-of date — populated only when validation status is tested-held; records when the held determination was made. Blank for all other statuses.

Assumption owner — the named individual or named role accountable for the design claim, typically the architect or system owner whose design the assumption supports. "Platform team" is not an owner. When an organizational change removes the person named in the field, the entry should trigger a review — stale ownership is one of the faster paths to a register that nobody acts on. A designated backup should be recorded alongside the primary.

Test owner — the named individual or named role accountable for designing and executing a validation activity that can produce evidence. May be in a different function from the assumption owner.

These two owner fields are required, not optional. Separating them is the mechanism that keeps validation independent enough to be credible, and both must be populated before an entry can leave unassigned status.

Recording the owner of the assumption and the owner of the test

These are two different people, and conflating them produces a validation program where the architect who made an assumption is also the one confirming it held. The assumption owner is accountable for the design claim. The test owner is accountable for designing and executing a validation activity that can produce evidence.

NIST SP 800-53A Rev. 5 defines depth and coverage as attributes of the assessment method — how rigorously a test is conducted and how broadly it applies — not as attributes of the control being assessed (Source: NIST SP 800-53A Rev. 5, https://csrc.nist.gov/publications/detail/sp/800-53a/rev-5/final). The same principle applies to assumption validation: while the test owner decides the testing method and rigor, adjudicating whether the evidence warrants retiring or holding an entry belongs to an independent design authority. An assumption owner must never evaluate evidence against their own claim; preserving this structural separation is what keeps the validation credible.

Keeping it smaller than the architecture

The register in the opening example failed because the filing criterion was "this feels like an assumption." Every design decision involves assumptions; filing all of them produces a register that is structurally identical to the architecture itself.

The practical filter is consequence specificity. An entry earns a place in the register only when three conditions hold simultaneously: the claim spans more than one system or control domain, an existing assurance activity would not catch a failure before it occurs rather than merely flagging it after the fact, and the architecture's threat model or degraded-mode resilience design directly depends on the claim remaining true. Miss any one of those conditions, and the entry belongs in an existing inventory or nowhere at all.

The second condition deserves emphasis. The question is not whether an alert would fire within some window after a failure — for identity paths where session context can be dropped in minutes, detection latency is itself the exposure. An assumption whose failure is detectable by monitoring but not caught by a prior assurance activity before that failure can become breach-enabling still belongs here. The relevant question is: Would an existing assurance activity test this claim before it fails, rather than notice the failure afterward? If the honest answer is yes, the assumption is already covered. If the answer is no, it has a place here.

The third condition is broader than it might appear. Many resilience assumptions — directory sync staleness, IdP failover behavior, degraded-mode policy enforcement — sit outside the formal threat model but are still load-bearing for the design. Limiting the filter to threat model claims alone would exclude them.

Applying this filter at intake — before an entry is written, not during a quarterly review — keeps the register below a size where it can be actively governed. A register that grows faster than it retires entries is accumulating unmaintained claims, which is worse than having no register because it creates the appearance of coverage.

When an entry should be retired

Retirement is not the same as passing a test. An entry can be retired for four distinct reasons, each requiring different evidence:

Assumption validated and control implemented: the behavioral claim has been tested, held, and a permanent control now enforces the condition continuously — and that control can itself be tested independently of the cross-domain interaction it governs. The assumption is no longer load-bearing as a design claim because enforcement is direct and verifiable in isolation. If the new control is itself a cross-domain behavioral claim dressed in control language, the assumption has not been retired; it has been relabeled, and the entry should remain open against the underlying claim. File the control; close the entry only when the independence condition is satisfied.

Assumption superseded by design change: the architecture changed, and the claim no longer describes the system. Leaving the entry active creates a false validation obligation against a design that no longer exists.

Assumption migrated: the claim turned out to belong in a different register — a dependency map, a control inventory line, or a standards obligation. Migrate with a cross-reference; do not duplicate.

Assumption determined out of scope: the threat model changed, and the failure mode the assumption guards against is no longer in scope. Document the decision and the authority who made it.

The assessment planning discipline in NIST SP 800-37 Rev. 2 requires that scope be documented at the plan level, covering what is being assessed and what procedures apply (Source: NIST SP 800-37 Rev. 2, https://csrc.nist.gov/publications/detail/sp/800-37/rev-2/final). Assumption register retirement follows the same logic: scope decisions should be documented with enough specificity that a successor can reconstruct why an entry was closed without re-interviewing the original architect.

The duplication test

Before filing any entry, run it against these four questions. A "yes" to any one of them redirects the entry:

  • Does this entry describe a control's existence or configuration? → Control inventory.
  • Does this entry describe whether a control operated as designed during a specific period? → Control testing and assurance records.
  • Does this entry describe an attack path from a specific unremediated finding? → Vulnerability exposure management scope.
  • Does this entry describe a decision that is pending funding or approval rather than a behavioral claim under test? → Architecture decision register.

If all four answers are no, the entry is a candidate for the assumption register. Write the statement so it can be falsified, assign two distinct owners, and apply the consequence-specificity filter before committing it. Entries lacking an assigned test owner should be designated as unassigned and tracked in the testing gap backlog until an owner is named.

A register with thirty well-scoped entries that the team actively tests and retires is operationally more useful than one with four hundred entries that nobody can act on. Scope discipline is the design decision the register makes about itself.

Sources

SC Media Editorial Intelligence, reviewed by Saurabh Srivastava

This content was reviewed and approved by a cybersecurity practitioner participating in CyberRisk Alliance’s Expert Review Program. Reviewers assess technical accuracy, relevance, and alignment with current industry practices.

Saurabh Srivastava is a cybersecurity leader and advisor working across cloud security, data security, security architecture, and the security implications of AI. As Director of Hybrid Cloud Security at Hilton, he leads cloud security architecture and governance across multi-region, multi-cloud environments. He holds CISSP, CCSP, and CISM certifications, along with multiple AWS Professional-level certifications, and is an IEEE Senior Member. He joins the CyberRisk Alliance Expert Advisory Panel to help keep security writing for practitioners grounded in how these systems actually behave in production.

Get daily email updates

SC Media's daily must-read of the most current and pressing daily news

By clicking the Subscribe button below, you agree to SC Media Terms of Use and Privacy Policy.

You can skip this ad in 5 seconds