NIST 800-53 REV 5 • SYSTEM AND SERVICES ACQUISITION
SA-8(4) — Partially Ordered Dependencies
Implement the security design principle of partially ordered dependencies in {{ insert: param, sa-08.04_odp }}.
CMMC Practice Mapping
No direct CMMC mapping
NIST 800-171 Mapping
No direct NIST 800-171 mapping
Related Controls
No related controls listed
Supplemental Guidance
The principle of partially ordered dependencies states that the synchronization, calling, and other dependencies in the system are partially ordered. A fundamental concept in system design is layering, whereby the system is organized into well-defined, functionally related modules or components. The layers are linearly ordered with respect to inter-layer dependencies, such that higher layers are dependent on lower layers. While providing functionality to higher layers, some layers can be self-contained and not dependent on lower layers. While a partial ordering of all functions in a given system may not be possible, if circular dependencies are constrained to occur within layers, the inherent problems of circularity can be more easily managed. Partially ordered dependencies and system layering contribute significantly to the simplicity and coherency of the system design. Partially ordered dependencies also facilitate system testing and analysis.
Practitioner Notes
Partially ordered dependencies means designing systems so that component dependencies flow in one direction and do not create circular relationships. This reduces complexity and makes security properties easier to reason about.
Example 1: In application architecture, structure dependencies so higher-level components depend on lower-level components, not the reverse. Your web front-end depends on the API layer, which depends on the database. The database should never call back into the web front-end — that creates a circular dependency that is hard to secure.
Example 2: In your infrastructure, avoid circular trust relationships between security domains. Your authentication service (Active Directory) should be a foundational dependency that other services rely on, not something that depends on the services it authenticates.