Inquiry Regarding Preferred Approach for Using Dependency Track on Multi-Versioned Applications #3403
Replies: 2 comments 2 replies
-
Update: Regarding point number 5 above - it seems the bulk of the SBOM processing time is tied up in policy analysis. At the moment I have 12 policies, with all but one having 1 policy condition. |
Beta Was this translation helpful? Give feedback.
-
I'm going to answer in two parts, apologies for the wall of text.
Notifications are entirely asynchronous, and processing does not wait for notifications to be acknowledged. Doing that would cripple the system quite fast, given:
That is true, unfortunately. Ideally, there'd be a special "hook" in DT that would invoke OPA directly, even before a notification is sent.
There is currently no retry logic for notifications. Delivery semantics are "at most once", if you will.
That is indeed intended. Notifications are supposed to be sent when a policy violation or vulnerability has been newly identified. If they would be re-sent for every analysis, it would become an unmanageable amount of noise.
In its current state, it is not.
I'd be very interested to see where the bottleneck is exactly. As in, is it the CPU being maxed-out, do you experience frequent GC pauses, or is it rather a database-related problem (high latency in communication, slow queries, too many queries, etc.). Are you monitoring the system, and would you be willing to share some insights? I wanted to address your questions from where Dependency-Track v4.x is today. With that out of the way, let me do some advertising for something that's in the making. We've been aware of the limitations you raised, and more. So we started building Hyades to address them. Small warning: The documentation is not where it should be yet. The original motivation for Hyades is documented here: https://github.com/DependencyTrack/hyades/blob/main/WTF.md There are too many goodies in Hyades already to list them here. So I'll limit myself to what addresses your concerns:
Hyades is not quite ready for GA yet. But it will eventually become Dependency-Track 5.x, and is already used in production by at least one large company. |
Beta Was this translation helpful? Give feedback.
-
Hello,
I came across Dependency Track when I sought to replace a proprietary Software Component Analysis tool. However, I'm not sure if I am using the tool properly for my given use case, which I will outline below.
I maintain a CI system that creates a software binary for every commit developers push to our remote. Before a software binary can be created, our business requires us to perform license validation and vulnerability assessments to comply with corporate policies. I generate a CycloneDX SBOM for each commit that I then send to Dependency Track for analysis against the policies I've written in Dependency Track. Based on my experience using Dependency Track and since I require an analysis per commit, I cannot create a project per software repository, as I cannot get a policy violation report for a given SBOM upload; I can only get a policy violation report for a project. Therefore, I need to create a project/version for each commit, which leads to a large number of projects in the system (which is to be expected).
Often, during builds, SBOMs will not contain license information, which cause a policy violation per my user defined policies, or builds contain known 3rd party vulnerabilities that the organization has accepted and can be suppressed. As noted in other discussions (#2995), suppressing violations across multiple projects is not tenable manually. Fortunately, @nscuro provided a tool to address this problem, https://github.com/nscuro/dtapac, which I've integrated with Dependency Track.
I've experienced issues with the dtapac suppression workflow (depenendency track notification (event) -> dtapac -> opa -> dtapac -> dependency track), but before I reported an issue on either project, I wanted to understand if my use of Dependency Track aligns with how the tool was designed.
Is there an alternate or preferred approach for performing policy analysis on multi-versioned applications, where a policy violation report is required per application version?
Some open issues/questions I have with this workflow are:
dtapac
system is down or rejected the original notification.Beta Was this translation helpful? Give feedback.
All reactions