Ingest metadata.tools
and make it available in CEL policies
#588
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Ingests
metadata.tools
from uploaded BOMs and makes it available in CEL policies.Addressed Issue
Closes DependencyTrack/hyades#1058
Additional Details
The internal model is aligned with CycloneDX v1.5, in that it differentiates between tools that are components, and tools that are services: https://cyclonedx.org/docs/1.5/json/#tab-pane_metadata_tools_oneOf_i0
When ingesting BOMs following v1.4 or older of the CycloneDX specification,
metadata.tools
array items will be converted tometadata.tools.components
.For the time being, tools are persisted as JSON column in the
PROJECT_METADATA
table. As such, tools will not be analyzed for vulnerabilities or other kinds of risk.Tool components and services are treated as subsets of the internal
Component
andServiceComponent
models. This subset property is enforced via Jackson's@JsonView
s, such that only specific fields are considered when serializing and deserializing to and from JSON.Tools are made available in CEL policy expressions under
project.metadata.tools.components
. Tool components use the existingv1.Component
type, which means that functions likematches_version
can be used on them.Example:
Checklist
This PR fixes a defect, and I have provided tests to verify that the fix is effectiveThis PR introduces changes to the database model, and I have added corresponding update logicThis PR introduces new or alters existing behavior, and I have updated the documentation accordingly