JFrog Xray (Pro)
Auf dieser Seite
Der JFrog-Xray-Connector verwendet die JFrog-Xray-REST-API, um Schwachstellendaten aus Ihren Artifactory-Repositories abzurufen. DefectDojo ermittelt alle Repositories in Ihrer JFrog-Instanz und erzeugt über Xray Schwachstellenberichte, wobei Befunde geplant importiert werden.
Voraussetzungen
Sie benötigen ein API-Token mit Zugriff auf sowohl die Artifactory- als auch die Xray-API. Wir empfehlen, für DefectDojo ein dediziertes Service-Konto anzulegen. Das Konto benötigt:
- Lesezugriff auf Artifactory-Repositories
- Berechtigung, Xray-Schwachstellenberichte zu erzeugen und anzuzeigen (Berechtigung
Apply on Watchesin Xray oder gleichwertig)
Connector-Zuordnungen
- Geben Sie die Basis-URL Ihrer JFrog-Instanz in das Feld Location ein. Dies sollte die Root-URL Ihrer JFrog-Instanz sein, zum Beispiel
https://your-instance.jfrog.io. Geben Sie keinen abschließenden Pfad an — DefectDojo erstellt die passenden API-Pfade automatisch. - Geben Sie ein gültiges Reference Token in das Feld Secret ein. Tokens können unter User Management > Access Tokens in der JFrog-Platform-Oberfläche generiert werden. Sie müssen ein Reference Token generieren und diesen Wert verwenden.
Erforderliche Token-Scopes für JFrog Xray:
- All Services, da DefectDojo Zugriff sowohl auf den XRay- als auch auf den Artifactory-Dienst benötigt
- Mindestens Manage Reports + Manage Resources.
Standardmäßig ordnet DefectDojo jedes Artifactory-Repository als separaten Eintrag zu. Jeder Sync erzeugt über Xray einen vollständigen Schwachstellenbericht pro Repository, sodass die Befundstatus in DefectDojo stets den aktuellen Zustand des Repositorys widerspiegeln.
Repository-Filter (optional)
Standardmäßig ermittelt der Connector jedes Repository in Ihrer JFrog-Instanz. Bei Instanzen mit einer großen Anzahl von Repositories — von denen viele für die Sicherheitsprüfung möglicherweise nicht relevant sind — kann die Ermittlung mit dem optionalen Feld Repository Filter unter Import Filters im Connector-Formular eingegrenzt werden.
Der Filter wird während der Ermittlung angewendet, bevor irgendeine Arbeit pro Repository erfolgt. Ein Repository außerhalb des Filters verursacht keine Kosten: Für dieses wird kein Xray-Bericht erzeugt, und im Artefakt-Modus werden keine seiner Artefakte der ersten Ebene aufgelistet. Dies macht ihn zur effektivsten Methode, um sowohl die Sync-Zeit als auch die Last zu reduzieren, die DefectDojo auf Ihre JFrog-Instanz legt — mehr als jede später im Sync angewendete Einstellung. Er wird insbesondere in Kombination mit Artifact-Level Records bei großen Instanzen empfohlen.
Syntax: eine kommagetrennte Liste von Repository-Schlüsseln. Jeder Eintrag kann *-Platzhalter verwenden:
- Ein Eintrag, der
*enthält, wird als Muster abgeglichen —releases-*erfasst jeden Repository-Schlüssel, der mitreleases-beginnt, und*docker-pr-local*erfasst jeden Schlüssel, derdocker-pr-localenthält. Ein*erfasst eine beliebige Zeichenfolge, auch/. - Ein Eintrag ohne
*muss einem Repository-Schlüssel exakt entsprechen. - Ein Repository wird ermittelt, wenn es auf einen beliebigen Eintrag der Liste passt. Leerzeichen um Kommas werden ignoriert.
releases-*, snapshotsDas obige Beispiel ermittelt jedes Repository, dessen Schlüssel mit releases- beginnt, sowie das einzelne Repository mit dem exakten Namen snapshots.
Hinweise:
- Der Filter ist eine Allow-Liste — eine Übereinstimmung wählt ein Repository aus. Es gibt keine Ausschluss- oder Negationssyntax, sodass sich „alles außer X" nicht direkt ausdrücken lässt.
- Der Abgleich erfolgt groß-/kleinschreibungssensitiv, sowohl bei exakten Einträgen als auch bei Platzhaltern.
*ist das einzige Platzhalterzeichen;?und Zeichenbereiche werden nicht unterstützt. - Leer lassen, um jedes Repository zu ermitteln. Ein Wert, der nur aus Leerzeichen oder Kommas besteht, wird als leer behandelt.
- Ein Filter, der auf nichts passt, ermittelt einfach nichts — es gibt keine Fehlermeldung. Findet ein Sync unerwartet keine Repositories, prüfen Sie im Connector-Log den Eintrag
repository filter scoped discovery, der meldet, wie viele der insgesamt vorhandenen Repositories getroffen wurden. - Das Feld kann nach dem Erstellen der Verbindung geändert werden.
Den Filter später ändern: Repositories, die ein neu eingeengter Filter jetzt ausschließt, werden nicht mehr ermittelt, und ihre bestehenden Einträge durchlaufen den normalen Lebenszyklus für Produkte, die das Tool nicht mehr meldet — zugeordnete Einträge werden beim nächsten Sync als MISSING markiert, und nicht zugeordnete NEW-Einträge werden entfernt. Bereits in DefectDojo importierte Befunde werden nicht gelöscht; der Filter steuert nur die Ermittlung.
Artifact-Level Records
Der Schalter Artifact-Level Records ändert die Ermittlung auf eine Ebene unterhalb des Repositorys: Jeder Eintrag der ersten Ebene unter einer Repository-Root (bei Docker-Repositories jedes Image; bei generischen Repositories jede Datei oder jeder Ordner der obersten Ebene) wird zu einem eigenen Eintrag. Jeder Sync erzeugt weiterhin einen einzigen Xray-Bericht pro Repository — DefectDojo ordnet jede Schwachstelle den Artefakten zu, die sie betrifft, sodass sich die Last auf Ihre JFrog-Instanz nicht erhöht.
Prüfen Sie vor Ihrem ersten Sync, in welchem Modus Sie sich befinden. Artifact-Level Records ist bei Neuinstallationen standardmäßig aktiviert. Installationen von vor Einführung dieser Funktion behalten ihr bestehendes Repository-Level-Layout bei, sodass der Schalter dort deaktiviert bleibt, bis ihn jemand einschaltet. In beiden Fällen kann der Schalter jederzeit geändert werden — siehe Eine bestehende Verbindung umstellen unten.
Bei aktiviertem Artifact-Level Records:
- Repositories bleiben als Einträge bestehen und werden zu übergeordneten Assets: Sie tragen selbst keine Befunde, aber wenn die Asset-Hierarchie-Funktion aktiviert ist, verknüpft DefectDojo jedes Artefakt-Asset automatisch mit einer
parent-Beziehung mit seinem Repository-Asset. Assets können dann nach Parent/Child gefiltert werden, und Befunde werden in der Hierarchie nach oben aggregiert. - Eine Schwachstelle, die mehrere Artefakte betrifft, wird in das Asset jedes betroffenen Artefakts importiert, sodass jedes Asset die vollständige Menge der es betreffenden Befunde zeigt.
- Befunde beziehen sich auf den neuesten Build jedes Artefakts, sodass die Befunde eines Artefakts dessen aktuellen Build beschreiben, statt Ergebnisse aus jedem von Xray je gescannten Build anzusammeln.
- Von diesem Connector erzeugte Hierarchiebeziehungen überschreiben nie von Ihnen manuell erstellte Beziehungen. Hat ein Asset bereits einen von Ihnen zugewiesenen Parent, lässt der Connector ihn unangetastet.
- Das Token benötigt zusätzlich Lesezugriff auf die Artifactory-Storage-API (in den obigen Scopes enthalten).
Eine bestehende Verbindung auf Artifact-Level Records umstellen: Der Schalter kann jederzeit geändert werden. Beim ersten Sync danach erscheinen neue Artefakt-Einträge zur Zuordnung — aktivieren Sie Auto Map für die Verbindung beim Umschalten, damit Befunde ohne Lücke übertragen werden. Die Repository-Level-Assets erhalten keine Befunde mehr, und ihre zuvor importierten Befunde werden beim nächsten Sync geschlossen (dieselben Befunde werden mit neuem Status unter den neuen Artefakt-Assets erneut importiert); Notizen und Historie zu den alten Repository-Level-Befunden bleiben am Repository-Asset erhalten. Ein Zurückschalten kehrt dies um: Repository-Einträge tragen wieder Befunde (zuvor geschlossene Befunde werden bei erneuter Übereinstimmung wieder geöffnet), und Artefakt-Einträge werden als MISSING markiert — ihre Assets und Befunde bleiben erhalten, erhalten aber keine Updates mehr, sodass Sie sie nach Belieben archivieren können.
Weitere Informationen finden Sie in der JFrog-Xray-REST-API-Dokumentation.