CSV-Export
Jeder Scan-Lauf lässt sich als CSV exportieren: eine Zeile je Fund, ausschliesslich mit unbedenklichen Metadaten. Es ist das Format, das man einem Prüfer gibt, in ein Ticketsystem einspeist oder über die Aufbewahrungsfrist hinaus als Nachweis behält.
Es gibt heute keine Export-Schaltfläche in der Oberfläche. Der Export ist ein
ausschliesslich Administratoren zugänglicher API-Endpunkt, und jeder Export wird
im Audit-Log als FINDINGS_CSV_EXPORTED mit der
Scan-Lauf-ID und der Anzahl exportierter Zeilen festgehalten.
Einen Export abrufen
curl -H "Authorization: Bearer <admin-access-token>" \
-o findings-scan-42.csv \
https://riskscanner.example.com/api/scans/42/export/csv
Die Antwort ist text/csv und heisst findings-scan-<id>.csv.
Spalten
| Spalte | Bedeutung |
|---|---|
scan_run_id | Der Scan-Lauf, zu dem dieser Fund gehört. |
finding_id | Stabile Kennung des Fundes. |
jira_base_url_hash | Hash der Jira-Basis-URL, gegen die der Scan lief, damit Exporte verschiedener Instanzen unterscheidbar bleiben, ohne die URL preiszugeben. |
project_key | Jira-Projektschlüssel. |
issue_key | Jira-Issue-Schlüssel. |
content_type | Wo der Treffer lag: Issue-Feld, Kommentar oder Anhang. |
field_id | Feld, aus dem der Treffer stammt, sofern zutreffend. |
comment_id | Kommentar, aus dem der Treffer stammt, sofern zutreffend. |
text_variant | Ob der Treffer im gerenderten Text oder im Rohfeldwert gefunden wurde. |
offset_start | Zeichen-Offset, an dem der Treffer beginnt. |
offset_end | Zeichen-Offset, an dem der Treffer endet. |
rule_id | Die Erkennungsregel, die getroffen hat. |
rule_version_id | Die exakte Regelversion, die den Fund erzeugt hat. |
severity | INFO, LOW, MEDIUM, HIGH oder CRITICAL. |
review_status | OPEN, FALSE_POSITIVE, ACCEPTED_RISK oder FIXED. |
detection_state | ACTIVE, NOT_FOUND_IN_LATEST_FULL_SCAN (der Fund existierte zuvor, der jüngste vollständige Scan sieht ihn nicht mehr) oder SOURCE_UNAVAILABLE. |
Was bewusst nicht im Export steht
Der Trefferwert und jeder Ausschnitt des Textes darum herum. Der Export enthält keinerlei Ausschnitts-Spalte, und es gibt auch keine andere Stelle, an der einer stünde: Der Scanner speichert überhaupt keinen Ausschnitt, nur einen geschlüsselten Fingerabdruck und eine Fundstelle. Die Datei sagt einem Leser genau, wo er nachsehen muss - Issue, Feld und Zeichen-Offsets - und lässt den Wert selbst in Jira.
Genau das macht die Datei sicher weitergebbar: Ein CSV mit Funden kann an ein
Ticket angehängt oder einem Prüfer geschickt werden, ohne zu einer zweiten Kopie
genau der Daten zu werden, die man eindämmen will. Um einen Wert zu lesen, öffnen
Sie das Issue in Jira über den issue_key.