Référence de configuration
Exclure des chemins des scans
Vous pouvez exclure des fichiers ou répertoires spécifiques du scan par ggshield en utilisant un fichier de configuration global. Ceci est utile pour ignorer les fixtures de tests, les fichiers générés, ou d'autres chemins connus comme étant sûrs.
ggshield recherche un fichier de configuration .gitguardian.yaml à deux emplacements, évalués dans cet ordre :
- Configuration globale dans le répertoire personnel de l'utilisateur :
~/.gitguardian.yamlsur Linux ou macOS%USERPROFILE%\.gitguardian.yamlsur Windows
- Configuration locale à
./.gitguardian.yamldans le répertoire scanné.
Les deux fichiers suivent le même format que le fichier de configuration ggshield. Les paramètres de la configuration locale prévalent sur ceux de la configuration globale. Utilisez la clé ignored_paths sous secret pour spécifier des patterns glob pour les chemins à exclure :
secret:
ignored_paths:
- 'LICENSE' # exact file at the root
- '*.log' # all .log files in the root directory
- 'doc/*' # all files directly inside doc/
- 'tests/**/*' # all files anywhere inside tests/
- '**/*.generated.ts' # all .generated.ts files in any directory
- '**/README.md' # all README.md files in any directory
Planifier les scans à travers les fuseaux horaires
La planification des scans est configurée au moment du déploiement. Il existe deux approches :
- Planification native MDM : configurez la fréquence d'exécution directement dans votre MDM pour le script personnalisé (par exemple, la fréquence d'exécution des policies de Jamf).
- Planification au niveau de l'OS : déployez une tâche planifiée via le MDM et laissez le planificateur de l'OS gérer la récurrence : un agent
launchdsur macOS, une tâche Task Scheduler sur Windows, ou un timersystemdou une entréecronsur Linux. Un déclencheur à l'heure murale tel que « 18:00 quotidiennement » se déclenche à 18h dans le fuseau horaire local de chaque appareil automatiquement.
Identifiant machine
GitGuardian utilise un identifiant de source pour représenter chaque machine de votre inventaire. Il a le format <hostname>/<system_id> et est utilisé pour dédupliquer les résultats à travers les scans successifs de la même machine. La CLI ggshield et le plugin machine_scan le dérivent de manière identique, de sorte que toute l'activité d'une machine correspond à une seule entrée d'inventaire.
Hostname est obtenu via :
- L'appel système
gethostname()sur Linux et macOS - La variable d'environnement
COMPUTERNAMEsur Windows
System ID est un identifiant unique spécifique à la plateforme, redérivé à chaque scan :
- macOS : le
IOPlatformUUIDdeioreg -rd1 -c IOPlatformExpertDevice - Linux : la première valeur non vide parmi
/etc/machine-id,/sys/class/dmi/id/product_uuid, ou/var/lib/dbus/machine-id - Windows : l'UUID SMBIOS, normalisé sous sa forme canonique en minuscules. Il est lu avec
wmic csproduct get uuid, ou via PowerShell sur les systèmes oùwmicn'est pas disponible.
Les UUIDs firmware fictifs (uniquement des zéros, uniquement des F, ou les placeholders connus des fournisseurs de BIOS) ne sont pas acceptés comme identité. Les machines dont le firmware en signale un, typiquement des images de VM clonées ou des cartes avec un BIOS non configuré, utilisent le mécanisme de secours ci-dessous au lieu de rentrer en collision sur une seule entrée d'inventaire.
Mécanisme de secours : si aucun ID spécifique à la plateforme ne peut être déterminé, un UUID v4 aléatoire est généré et mis en cache dans ~/.ggshield/machine_id afin qu'il persiste à travers les scans. Un avertissement est journalisé dans ce cas : si ce fichier est supprimé, un nouvel ID est généré et la machine peut apparaître comme un doublon dans votre inventaire. Le fichier est accessible en écriture uniquement par son propriétaire. Un fichier de cache accessible en écriture par d'autres utilisateurs, appartenant à un compte non lié, ou étant un lien symbolique, est ignoré et remplacé par un nouveau.