Tagging degli oggetti (Pro)
I Tag sono ideali per raggruppare gli oggetti in un modo che consenta di filtrarli in blocchi più piccoli e gestibili. Possono essere utilizzati per indicare uno stato, oppure per creare insiemi personalizzati di Tipi di Prodotto, Prodotti, Engagement o Riscontri in tutto il modello dati.
In DefectDojo, i Tag sono cittadini di prima classe e sono riconosciuti come i facilitatori dell’organizzazione a ogni livello del modello dati.
Ecco un esempio con un Prodotto con due tag e quattro riscontri, ciascuno con un singolo tag:

Formati dei Tag
I tag possono essere formattati in uno dei seguenti modi:
- StringWithNoSpaces
- string-with-hyphens
- string_with_underscores
- colons:acceptable
Gestione dei Tag (UI Pro)
Aggiunta e rimozione
I tag possono essere gestiti nei seguenti modi:
Creazione o modifica di nuovi oggetti
Quando un nuovo oggetto viene creato o modificato tramite l’interfaccia utente o l’API, è presente un campo per specificare i tag da impostare su un determinato oggetto.

Durante l’importazione/reimportazione dei Riscontri
I tag sono disponibili nel modulo di importazione/reimportazione, sia nell’interfaccia utente che tramite l’API. Quando questo modulo viene inviato, al Test verranno assegnati i tag [tag] e [daily-import]. Se viene selezionata l’opzione “Apply Tags to Findings” o “Apply Tags to Endpoints”, anche quegli oggetti verranno taggati. I tag offrono l’opportunità di aggiungere dettagli sull’esecuzione dell’automazione e informazioni sullo strumento che potrebbero non essere acquisite direttamente nell’oggetto Test o Riscontro.

- Tramite la modifica collettiva
Quando vengono selezionati più Riscontri da una tabella, è possibile utilizzare il menu di modifica collettiva per modificare contemporaneamente i Tag associati a più Riscontri. Tieni presente che questa operazione sostituirà tutti i Tag a livello di Riscontro con quelli specificati; i Tag esistenti sui Riscontri verranno sovrascritti.

Gestione dei Tag (UI classica / Open Source)
Aggiunta e rimozione
I tag possono essere gestiti nei seguenti modi:
Creazione o modifica di nuovi oggetti
Quando un nuovo oggetto viene creato o modificato tramite l’interfaccia utente o l’API, è presente un campo per specificare i tag da impostare su un determinato oggetto. Questo campo è un campo a selezione multipla che dispone anche del completamento automatico, per rendere semplicissima la ricerca e l’aggiunta di tag esistenti. Ecco come si presenta il campo sul Prodotto, nella schermata della sezione precedente:

Importazione e reimportazione
I tag possono anche essere applicati a un determinato test al momento dell’importazione o della reimportazione. Questo è un caso d’uso molto utile quando si importa tramite API con l’automazione, poiché offre l’opportunità di aggiungere dettagli sull’esecuzione dell’automazione e informazioni sullo strumento che potrebbero non essere acquisite direttamente nell’oggetto test o riscontro.
Il campo ha lo stesso aspetto e lo stesso comportamento di quello presente su un determinato oggetto
Menu di modifica collettiva (solo Riscontri)
Quando è necessario aggiornare molti Riscontri con lo stesso insieme di tag, il menu di modifica collettiva può essere utilizzato per semplificare l’operazione.
Nell’esempio seguente, supponiamo di voler aggiornare i tag dei due riscontri con il tag “tag-group-alpha” in un nuovo elenco di tag come questo [“tag-group-charlie”, “tag-group-delta”]. Per prima cosa selezionerei i tag da aggiornare:

Una volta selezionato un riscontro, appare un nuovo pulsante denominato “Modifica collettiva”. Facendo clic su questo pulsante viene visualizzato un menu a tendina con molte opzioni, ma per ora ci concentriamo solo sui tag. Aggiorna il campo con l’elenco di tag desiderato come segue, quindi fai clic su invia

I tag sui Riscontri selezionati verranno aggiornati con quanto specificato nel campo dei tag all’interno del menu di modifica collettiva

Ereditarietà dei Tag
Nota sull’UI Pro: sebbene l’ereditarietà dei Tag possa essere configurata tramite l’UI Pro, i Tag ereditati possono attualmente essere consultati e filtrati solo tramite l’UI classica o l’API.
Quando l’Ereditarietà dei Tag è abilitata, i tag applicati a un determinato Prodotto verranno applicati automaticamente a tutti gli oggetti sottostanti ai Prodotti nella Gerarchia dei Prodotti.
Configurazione
L’Ereditarietà dei Tag può essere abilitata ai seguenti livelli di ambito:
- Ambito globale
- Ogni Prodotto a livello di sistema inizierà ad applicare i tag a tutti gli oggetti figli (Engagement, Test e Riscontri)
- Questa impostazione si configura all’interno delle Impostazioni di sistema
- Ambito Prodotto
- Solo il Prodotto selezionato inizierà ad applicare i tag a tutti gli oggetti figli (Engagement, Test e Riscontri)
- Questa impostazione si configura nella pagina di creazione/modifica del Prodotto
Comportamenti
Quando l’Ereditarietà dei Tag è abilitata, i Tag standard possono essere aggiunti e rimossi dagli oggetti nel modo consueto. Tuttavia i tag ereditati non possono essere rimossi da un oggetto figlio senza rimuoverli dall’oggetto padre Vedi il seguente esempio di aggiunta di un tag “test_only_tag” all’oggetto Test e di un tag “engagement_only_tag” all’Engagement.

Quando vengono apportati aggiornamenti all’elenco dei tag di un Prodotto, le stesse modifiche vengono applicate in modo asincrono a tutti gli oggetti all’interno del Prodotto. La durata di questa operazione è direttamente correlata al numero di oggetti contenuti in un riscontro.
Open Source: se le modifiche ai Tag non vengono osservate entro un periodo di tempo ragionevole, consulta i log del worker celery per individuare l’origine di eventuali problemi.
Filtro per Tag (UI classica)
I tag possono essere filtrati in molti modi, sia tramite l’interfaccia utente che tramite l’API. Ad esempio, ecco un estratto dei filtri dei Riscontri:

Sono presenti dieci campi relativi ai tag:
- Tag: filtra in base a qualsiasi tag associato a un determinato Riscontro
- Esempi:
- Il Riscontro verrà restituito
- Tag del Riscontro: [“A”, “B”, “C”]
- Query di filtro: “B”
- Il Riscontro non verrà restituito
- Tag del Riscontro: [“A”, “B”, “C”]
- Query di filtro: “F”
- Il Riscontro verrà restituito
- Esempi:
- Non Tag: filtra in base a qualsiasi tag non associato a un determinato Riscontro
- Esempi:
- Il Riscontro verrà restituito
- Tag del Riscontro: [“A”, “B”, “C”]
- Query di filtro: “F”
- Il Riscontro non verrà restituito
- Tag del Riscontro: [“A”, “B”, “C”]
- Query di filtro: “B”
- Il Riscontro verrà restituito
- Esempi:
- Il nome del Tag contiene: filtra in base a qualsiasi tag che contenga in parte o interamente la query nel Riscontro indicato
- Esempi:
- Il Riscontro verrà restituito
- Tag del Riscontro: [“Alpha”, “Beta”, “Charlie”]
- Query di filtro: “et” (parte di “Beta”)
- Il Riscontro non verrà restituito
- Tag del Riscontro: [“Alpha”, “Beta”, “Charlie”]
- Query di filtro: “meg” (parte di “Omega”)
- Il Riscontro verrà restituito
- Esempi:
- Non Tag: filtra in base a qualsiasi tag che non contenga in parte o interamente la query nel Riscontro indicato
- Esempi:
- Il Riscontro verrà restituito
- Tag del Riscontro: [“Alpha”, “Beta”, “Charlie”]
- Query di filtro: “meg” (parte di “Omega”)
- Il Riscontro non verrà restituito
- Tag del Riscontro: [“Alpha”, “Beta”, “Charlie”]
- Query di filtro: “et” (parte di “Beta”)
- Il Riscontro verrà restituito
- Esempi:
Per gli altri sei filtri di tag, valgono le stesse regole di “Tag” e “Non Tag” descritte sopra, ma a livelli diversi del modello dati:
- Tag (Test): filtra in base a qualsiasi tag associato al Test di un determinato Riscontro
- Non Tag (Test): filtra in base a qualsiasi tag non associato al Test di un determinato Riscontro
- Tag (Engagement): filtra in base a qualsiasi tag associato all’Engagement di un determinato Riscontro
- Non Tag (Engagement): filtra in base a qualsiasi tag non associato all’Engagement di un determinato Riscontro
- Tag (Prodotto): filtra in base a qualsiasi tag associato al Prodotto di un determinato Riscontro
- Non Tag (Prodotto): filtra in base a qualsiasi tag non associato al Prodotto di un determinato Riscontro