Subscribe to the Non-Human & AI Identity Journal

What do security teams get wrong about SCA and dependency governance?

They often treat SCA as a visibility tool rather than an enforcement mechanism. Knowing what is in use is not the same as stopping bad packages from entering the environment. Strong governance blocks risky dependencies at ingestion, tracks what was prevented, and reserves SBOMs for traceability and audit support rather than relying on them as the primary control.

Why This Matters for Security Teams

Software composition analysis is often deployed as if visibility alone will improve supply-chain safety, but SCA only shows what is present after a dependency decision has already been made. That is a weak position when modern build pipelines pull packages automatically, transitive dependencies arrive without review, and malicious or compromised packages can be introduced faster than a manual review cycle can react. NIST Cybersecurity Framework 2.0 frames this as a governance and control problem, not just a reporting problem.

The practical risk is that teams confuse inventory with prevention. An SBOM can support traceability, impact analysis, and audit evidence, but it does not stop package ingestion, enforce source trust, or evaluate provenance. NHI Management Group’s Top 10 NHI Issues repeatedly shows how governance gaps emerge when identities and automated workflows are allowed to accumulate trust without strong lifecycle control. In practice, many security teams discover the weakness only after a poisoned dependency has already been promoted into a production build.

That is why the question matters: dependency governance has to sit at the point of admission, not just in post-build reporting. If the control is only analytical, it is too late to be preventive.

How It Works in Practice

Effective dependency governance separates three functions that are often collapsed into one: detection, policy enforcement, and evidence generation. SCA tools are useful for detecting known vulnerabilities, licensing issues, and dependency sprawl, but the control objective should be to block or quarantine risky components before they reach trusted branches, artifact registries, or deployment pipelines. NIST guidance and supply-chain practices increasingly support policy-as-code, provenance checks, and repository controls rather than passive alerting alone.

Operationally, strong programs combine allowlists, deny-by-default rules, signed artifact verification, and build-time policy checks. That means a package can be rejected because it lacks trusted provenance, comes from an unapproved namespace, has a high-risk maintainer history, or violates internal policy even if no CVE exists yet. This is where SCA must connect to admission control and release governance. The Ultimate Guide to NHIs — Lifecycle Processes for Managing NHIs is relevant because dependency governance follows the same lifecycle logic as other machine identities: trust must be established, constrained, monitored, and retired.

  • Use SCA to inventory packages and identify risk signals.
  • Use repository and pipeline policy to block unapproved packages at ingestion.
  • Use SBOMs for traceability, audit support, and downstream impact analysis.
  • Track prevented events, not just vulnerable assets, so governance has measurable force.

For implementation detail, the NIST Cybersecurity Framework 2.0 is useful because it maps naturally to protect, detect, and govern activities across the software supply chain. These controls tend to break down in highly decentralized developer environments where teams can bypass shared registries or pull dependencies directly from public sources because enforcement is inconsistent across build paths.

Common Variations and Edge Cases

Tighter dependency control often increases build friction, requiring organisations to balance developer velocity against risk reduction. That tradeoff is real, and current guidance suggests the answer is not universal blocking everywhere, but risk-based enforcement that differentiates production builds, internal tooling, test-only packages, and emergency hotfixes.

One common edge case is transitive dependencies. Teams may approve a top-level package and still inherit dozens of lower-level components that were never reviewed. Another is private package mirrors, where internal caching can improve control but also create blind spots if the mirror is not itself governed. A third is the difference between open-source risk and internal artifact risk: SBOMs help with both, but they do not prove that the artifact is trustworthy at the moment of use.

This is also where audit expectations can be misunderstood. The Ultimate Guide to NHIs — Regulatory and Audit Perspectives is helpful because auditors usually want evidence of control operation, not just a list of components. In the same way, a dependency program should show blocked packages, override approvals, provenance checks, and exception handling. For package compromise scenarios, the LiteLLM PyPI package breach is a practical reminder that “known inventory” is not enough when the supply chain itself is part of the attack surface.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10, OWASP Agentic AI Top 10 and CSA MAESTRO address the attack and risk surface, while NIST CSF 2.0 and NIST AI RMF set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-03 Covers lifecycle control for machine credentials tied to dependency and build access.
OWASP Agentic AI Top 10 A2 Agentic pipelines can auto-fetch dependencies and need runtime policy enforcement.
CSA MAESTRO G5 MAESTRO addresses governance for automated AI and software supply-chain actions.
NIST CSF 2.0 GV.SC Supply-chain governance directly covers dependency trust and control enforcement.
NIST AI RMF GOVERN AI governance is relevant where automated code generation or agents manage dependencies.

Inventory and rotate non-human access used by build systems, then revoke any unused package-publishing credentials.