Aller au contenu principal

Scanner d'autres sources de données à la recherche de secrets

Prélude

ggshield prend en charge un format d'entrée générique via sa commande secret scan docset. Les fichiers d'entrée de cette commande doivent être au format JSONL, chaque ligne contenant un objet JSON "docset".

Un docset représente un ensemble de documents pour un type donné. Chaque document a des auteurs et un contenu. Les auteurs peuvent avoir un nom, un e-mail et un rôle. Il s'agit d'un modèle simple et flexible pour faciliter la préparation des données à destination de ggshield. Voir ci-dessous pour plus de détails.

Le format Docset

Structure du docset

Pour une vue plus détaillée du format, voici la structure d'un docset :

{
// Required. Defines the type of data stored in the docset.
"type": "",

// Required. A string to uniquely identify this docset.
// Content depends on the type and is considered opaque but will be displayed in the output.
"id": "",

// Optional. Authors of the doc set.
// Only set if the whole docset has the same authors.
"authors": [$author],

// Required. The documents of the docset.
"documents": [$document]
}

Structure de l'auteur

{
// Required. Content depends on the format and is considered opaque.
// Could be an email, a username or a system specific ID.
"id": "",
// Optional. The author name, if available.
"name": "",
// Optional. The author email, if available.
// This field should be set even if email is used as the ID, since the ID is
// considered opaque.
"email": "",
// Optional. Meaning depends on the format.
// For example in a commit it would be "author" or "committer".
"role": ""
}

Structure du document

{
// Required. A string to uniquely identify the document inside the docset.
// Content depends on the type and is considered opaque but will be displayed in the output.
"id": "",

// Optional. If defined, it replaces (not extend) the global docset authors.
"authors": [$author],

// Required. The content of the document in UTF-8.
"content": ""
}

Créer des incidents à partir d'une source personnalisée

Passez l'option --source-uuid pour lier un scan à une source personnalisée. Les incidents sont alors créés côté serveur et deviennent visibles sur le dashboard, sous cette source. Cela nécessite un token avec le scope scan:create-incidents.

ggshield secret scan docset --source-uuid <SOURCE_UUID> file1.jsonl

Une source personnalisée peut également être configurée pour ne conserver que les secrets dont le détecteur prend en charge les vérifications de validité, en filtrant les correspondances non vérifiables avant la création des incidents. Ceci se configure par source personnalisée. Voir Scanner uniquement avec les détecteurs validés.