Part 1 - Visibility: The Operating Model Starts Here

Vibhav Dudeja, Principal Engineer, Engineering Product Security

August 05, 2026

Part 1 - Visibility: The Operating Model Starts Here

Content

    Most engineering organizations can tell you their p99 latency, their on-call rotation, and the number of microservices in production. Ask them how many unique open-source packages are running in production right now, and the room goes quiet.

    That silence is not a tooling gap. It is an ownership gap. Security points to engineering because engineering chose the dependencies. Engineering points to security because this is clearly a risk problem. Legal knows some licenses may be problematic but cannot say where those packages live. The result is an ownership vacuum at the center of most organizations' open-source risk posture. Until someone claims the problem, the problem claims you.

    This is Part 1 of A Practical OSS Management Framework - a four-part series on building a complete OSS security operating model. Part 2 covers Control.

    Why This Is a Product Security Problem

    The quiet misclassification that causes this vacuum: open-source management gets filed under developer productivity instead of product security.

    That classification feels natural. Developers choose packages. Package managers resolve dependencies. Build systems compile them into artifacts. The entire workflow lives inside engineering,/VI so it gets governed by engineering norms - move fast, solve the immediate problem, ship.

    Product security meets open-source components only when a CVE surfaces. By then, a package is already in production, a vulnerability has already been found, and the security team still does not know why the package exists, who approved it, or what will break if it is removed. The result is a discipline that treats OSS risk as a subset of vulnerability management: scan for CVEs, patch what is critical, move on. That is not OSS management. That is triage theater.

    Real OSS management starts earlier. It asks whether a package should be in the environment at all - who approved it, what its license allows, who maintains it, and what happens if the project is abandoned tomorrow. Those are product security questions. They are architectural, forward-looking, and risk-aware. They belong in a program, not a ticket queue.

    What the Program Actually Covers

    A complete OSS security operating model has four layers. Most organizations have pieces. Very few have the loop closed.

    diagram

    Detect: You cannot protect what you cannot see. Component inventory and SBOM generation are the foundation. Without a reliable, continuously updated inventory, everything downstream is guesswork.

    Enforce: Knowing what you have is not enough if the pipeline continues accepting unreviewed packages without friction. Enforcement is where policy meets the developer workflow. Done well, security acts as a compass - orienting teams toward safe choices before a bad dependency enters the environment. Done poorly, it acts only as a gate, and gates breed workarounds.

    Analyze: An inventory without intelligence is just a list. Vulnerability analysis, license classification, and component health scoring turn raw inventory data into actionable risk signals.

    Govern: Analysis without a governance loop produces reports nobody acts on. A mature OSS program has defined response workflows, escalation paths, exception handling, and metrics that communicate risk posture to leadership in language they can act on.

    Building Visibility: The Inventory

    Visibility starts with agreement on the unit of inventory. For many security teams, "component" defaults to "repository" or "application". In a cloud-native SaaS organization with varied build patterns, that definition breaks quickly.

    A complete component taxonomy spans:

    • Containerized backend services - the primary runtime surface for most platforms

    • Agent installables - deb, rpm, exe/msi, dmg/pkg packages shipped to customer environments

    • Virtual machine images - OVAs and VHDs, where the OS layer is part of the component

    • Lambda functions - Go binaries, Python eggs, Node bundles, each with different dependency extraction paths

    • UI bundles - governed by lock files, not manifests; package-lock.json, yarn.lock, and pnpm-lock.yaml are the authoritative sources

    • Cloud compute images - AWS AMIs, Azure machine templates; the package manager inside the image is the source of truth

    • Internal libraries and SDKs - dependencies of other components, not just standalone artifacts

    Platform-owned components (hardened base images, hardened base operating systems) need their own inventory records. They are still shipped, still depended on, and still need clear ownership. When a vulnerability surfaces in the base layer, someone must be accountable for the fix. That someone needs to be in the inventory.

    The raw signal often already exists. Build systems emit structured artifact metadata. Release handover documents record component names and artifact references. The program's first job is usually not building new instrumentation - it is consuming existing signals systematically for the first time.

    One design decision matters more than any tooling choice: the build-time boundary. If it does not ship, it does not count. Build-time and test-time    dependencies carry their own risk profile and remediation path. Mixing them    into the production inventory bloats it and degrades trust precisely when it matters most - during incident response.

    Inventory as a Response Tool

    An inventory without ownership data is an asset register. An inventory with ownership data is a response tool.

    When a supply chain attack surfaces, the first question is never "what is the patch?" It is "are we affected?" The speed of that answer depends entirely on how well the organization knows what is running in production. Without a reliable inventory, teams spend the first hours of an incident rebuilding the map they should have already had. In a multi-tenant SaaS environment, where a vulnerable component in a shared service can affect many customers simultaneously, those hours translate directly into support escalations and customer trust erosion.

    Every component record should carry enough routing context to action a finding without a conversation - the engineering group, the owning team, and enough metadata to know where a fix needs to land.

    With an OSS intelligence store built on top of that inventory, identifying whether a newly surfaced supply chain attack affects the organization takes seconds, not days.

    The store is covered fully in Part 3. The point here is that the inventory is its prerequisite.

    The inventory is never 100% complete because the organization is alive. Components are created, services are deprecated, teams change. Three practices keep it trustworthy:

    • Automate the discovery signal, not the update - a periodic scan of the version control system flags new components without waiting for manual registration

    • Anchor ownership in the build pipeline - when the pipeline itself emits component and ownership metadata, the inventory has a machine-readable signal to reconcile against

    • Run periodic drift audits - compare what the inventory claims against what the build system actually produced; the gap is an operational metric, not a failure metric

    The Compliance Signal

    Regulatory pressure now reinforces what strong engineering practice already demanded.

    For organizations selling into regulated markets or responding to enterprise procurement reviews, an OSS management program is no longer internal hygiene. It becomes part of how the organization demonstrates software transparency and governance maturity.

    The compliance pressure is real. It is still the weakest reason to build this program. Organizations that build OSS management to satisfy audits produce paperwork. Organizations that build it for engineering integrity produce security outcomes.

    Key Takeaways

    • If the organization cannot answer "how many unique open-source packages are running in production right now," there is no OSS management program - there is OSS exposure.

    • Open-source risk is a product security problem, not just a developer productivity problem. That distinction determines who owns it, how it is funded, and whether it is handled systematically or reactively.

    • Define the component taxonomy before defining the scanning approach. A containerized service, a lambda, an OVA, and an internal SDK do not expose the same inventory signals.

    • Draw the build-time boundary explicitly and early. Dependencies that do not ship should not be in the production inventory.

    • Ownership metadata is not administrative overhead. It is what turns an inventory into a response tool.

    What's Coming Next

    Visibility gives the program its foundation. In Part 2, the question shifts from knowing what is in the environment to controlling what enters it - how SBOM generation, CI/CD automation, and pipeline gating work together to make the secure path the default path.

    Further Reading