Skip to content

Migrate Vulnerability models to Advisory models #1796

@TG1999

Description

@TG1999

Validate and deploy advisories dedupe

  • Use same models for staging and production
  • Take backup of production, copy to staging and restore on staging
  • Deploy advisory dedupe, merged with Fast content ID migration #1795
  • Run improver only to dedupe advisories
  • Review that everything is okay and see if advisories are deduped (reduced). We had 119 million advisories earlier now we have 18 million advisories after running the dedupe pipeline
  • And deploy on production

Add advisory ID

  • Add advisory ID field to Advisory model, create schema migration
  • Move url field position just below the advisory_id field.
  • Add improver pipeline to populate advisory ID, each advisory created_by different importers implies a different treatment to determine the advisory ID in one of the aliases, the URL or the references.
  • Update all importers and improvers to account for the new advisory ID field. (import_runner and improve_runner as well)
  • Test improver on staging and deploy on production

Add other fields ...

  • Aliases: Create a new model for AdvisoryAlias, we migrate aliases from advisory models to the new models with improver. Ignoring the alias that are part of advisory ID. VCIO-next: Migrate Advisory aliases from JSON field to M2M relationship #1777
  • Affected Packages: Create a relationship between a package and advisory and migrate
  • References: Create AdvisoryReferences, and migrate
  • Severities: Severities needs to be refactored. Create new advisory severities. So they do not go through references. WIll be like VulnerabilitySeverity but will be directly associated with an advisory
  • Weakness: Create AdvisoryWeakness, and migrate.

Design how to relate to a vulnerability

Update API (v2) and UI.

Remove old models, old fields and old data.

QnA

  • How to decide advisory ID when all importers share exact same aliases. for example 2 importers only have alias: CVE-XXXX-YYYY, then what should be the heuristic?
    Ans: Advisory ID will not be a unique field, but will be part of a unique together: (url, advisory_id, created_by etc...)

  • Complete the migration and API on the basis of data models.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status
Validated

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions