-
Notifications
You must be signed in to change notification settings - Fork 20
Description
As a vendor who would want to publish VEX documents for a certain artifact and enable consumers (end users, security scanners, etc) to know where to find a document for that artifact, there is currently no standard discovery mechanism. This is similar to #9, but distinct in that I'm imagining a pull model rather than a push.
There are several other similar standards we can look to for this:
- RPM ecosystem has a repos file on disk, the mirror contains a
repodata/repomd.xml, which points to arepodata/updateinfo.xmlfile containing CVE/errata information for all packages for all time. Its easy to imagine a file like/etc/vex/vex-provider.jsoncontaining a URL (or base URL) which appends a/.well-known/openvexpath or similar. - OpenID Connect (OIDC) embeds an
"iss"issuer URL in JWT token claims, that relying parties append a/.well-known/openid-configurationpath to discover metadata. Artifact types like OCI images that support key/value string metadata could include a well-known key (say,openvex.dev/discovery) that could have a value of a VEX discovery URI.
In addition to having a discovery mechanism, we'll need some format for the associating a discovery document with a particular artifact. To my knowledge, RPM's repodata/updateinfo.xml never is never rotated and grows over time. Rather than having to devise additional metadata formats (such as a big list of VEX URLs) for discovery under a well-known URI and forcing clients to make subsequent requests, for OpenVEX, I could see the need to also embed alongside discovery information some unique identifier for the artifact, maybe just a UUID4.
For argument's sake, imagine the following keys either in a config file or key/value annotations.
{
"openvex.dev/discovery": "https://alas.aws.amazon.com/alas2023/",
"openvex.dev/identifier": "931e5e35-2351-4278-9dc4-d45621d4f3c1",
"openvex.dev/version": "v0.2.0"
}Such that tooling could infer the vex document for an artifact is available at
https://alas.aws.amazon.com/alas2023/.well-known/openvex/931e5e35-2351-4278-9dc4-d45621d4f3c1 and is built with the v0.2.0 version of the spec.