Skip to content

Output Format #9

@davidkopp

Description

@davidkopp

Ich würde hiermit gerne klären, ob noch Anpassungen am Output-Format vorgenommen werden sollten und wenn ja, welche. Aktuell bin ich ja an der Integration in GMT dran, so dass sich gewisse Inhalte darauf auswirken können.

Das aktuelle Output-Format vom dependency_resolver sieht so aus:

{
  "_container-info": {
    "name": "nginx-container",
    "image": "nginx:latest",
    "hash": "sha256:2cd1d97f893f..."
  },
  "dpkg": {
    "scope": "system",
    "dependencies": {
      "package-name": {
        "version": "1.2.3 amd64",
        "hash": "abc123..."
      }
    }
  },
  "pip": {
    "scope": "project",
    "location": "/path/to/venv/lib/python3.12/site-packages",
    "hash": "def456...",
    "dependencies": {
      "package-name": {
        "version": "1.2.3"
      }
    }
  }
}

Unzufrieden bin ich insbesondere mit dem Key _container-info. Hier als reinen Output vom dependency_resolver finde ich das noch passend, aber innerhalb von GMT sieht das seltsam aus.

Ich habe mir mal das JSON-Format von Syft etwas angeschaut und mich etwas inspirieren lassen.

Der folgende Output entspricht nicht exakt dem Syft-Schema, hat aber einiges davon übernommen:

{
  "source": {
    "type": "docker",
    "name": "nginx-container",
    "image": "nginx:latest",
    "hash": "sha256:2cd1d97f893f...",
    "metadata": {
      "imageSize": 505664711,
      "architecture": "amd64",
      "os": "linux"
    }
  },
  "distro": {
      "name": "Ubuntu 24.04.3 LTS",
      "id": "Ubuntu",
      "versionID": "24.04",
      "versionCodename": "noble"
  },
  "packages": [ // artifacts
    {
      "name": "package-name-1",
      "type": "deb",
      "version": "1.2.3",
      "architecture": "amd64",
      "hash": "abc123...",
      "found-by": "dpkg_detector",
      "location": "/usr/bin/apt"
    },
    {
      "name": "package-name-2",
      "type": "python",
      "version": "0.7.0",
      "hash": "def456...",
      "found-by": "pip_detector",
      "location": "/var/www/startup/venv/lib/python3.12/site-packages/annotated_types-0.7.0.dist-info"
    }
  ],
  "descriptor": {
    "name": "dependency_resolver",
    "version": "0.0.1",
    "configuration": {
      "skip-system-scope": false,
      "only-container-info": false,
      "pretty-print": true,
      "detectors": {
        "used": [
          "dpkg_detector",
          "pip_detector"
        ]
      }
    }
  }
}

Die größte Veränderung ist, dass alle Pakete in einer Liste sind und mit dem Key type dann spezifiziert wird, was es für ein Paket ist.
Außerdem wurde _container-info mit source ersetzt und die Keys distro und descriptor hinzugefügt.

Das soll vor allem als Diskussionsgrundlage dienen. Ich erwarte nicht, dass das genau so umgesetzt werden sollte.
Gibt es hier etwas, was euch gefällt und ich übernehmen soll?

@ArneTR @ribalba

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions