Optimiser les performances de scan sous Windows
La protection en temps réel de Microsoft Defender, ou un EDR tiers, inspecte chaque fichier ouvert par le scanner. Sur un poste de travail comportant des centaines de milliers de fichiers, un premier scan peut prendre des heures, avec Antimalware Service Executable consommant plus de CPU que le scan lui-même. La solution consiste en une seule exclusion de processus pour ggshield-py.exe, le processus qui exécute le scan (ggshield.exe n'est qu'un lanceur).
Exclure le processus du scanner de Microsoft Defender
Ajoutez une exclusion de processus pour ggshield-py.exe avec le chemin correspondant à votre méthode d'installation. Les caractères génériques couvrent le nom d'utilisateur et le répertoire versionné créé par le script d'installation.
| Méthode d'installation | Exclusion de processus |
|---|---|
| Script d'installation ou ZIP (par utilisateur) | C:\Users\*\AppData\Local\Programs\ggshield\*\ggshield-py.exe |
| MSI (par machine) | C:\Program Files\GitGuardian\ggshield\ggshield-py.exe |
Écrivez les chemins par utilisateur avec C:\Users\* : Microsoft Defender résout %LOCALAPPDATA% et %USERPROFILE% vers le profil du compte système, et non celui de l'utilisateur.
Microsoft Defender ne scanne plus les fichiers ouverts par ce processus, alors limitez l'exclusion à ggshield-py.exe et n'ajoutez pas d'exclusions de chemin pour le profil utilisateur. Les détections comportementales de Microsoft Defender for Endpoint s'appliquent toujours.
Déployer l'exclusion
- PowerShell
- Intune
- Group Policy
# Run as administrator. Keep the line for your install method.
Add-MpPreference -ExclusionProcess 'C:\Users\*\AppData\Local\Programs\ggshield\*\ggshield-py.exe'
Add-MpPreference -ExclusionProcess 'C:\Program Files\GitGuardian\ggshield\ggshield-py.exe'
Si Intune ou Configuration Manager gère aussi les exclusions Defender, leur stratégie écrase les modifications locales au prochain démarrage.
Ouvrez Endpoint security > Antivirus > Create policy, sélectionnez la plateforme Windows et le profil Microsoft Defender Antivirus exclusions, ajoutez le chemin sous Excluded processes, puis assignez le profil au groupe d'appareils qui reçoit ggshield.
Pour un autre MDM, définissez le Policy CSP ./Device/Vendor/MSFT/Policy/Config/Defender/ExcludedProcesses sur le même chemin.
Ouvrez Computer Configuration > Administrative Templates > Windows Components > Microsoft Defender Antivirus > Exclusions > Process Exclusions, activez le paramètre et ajoutez une entrée avec le chemin comme nom de valeur et 0 comme valeur.
Vérifiez le résultat avec Get-MpPreference | Select-Object -ExpandProperty ExclusionProcess, puis chronométrez un scan avec Measure-Command { ggshield machine report }.
Exempter le scanner d'Arbitrary code guard
Si une stratégie Exploit Protection applique Arbitrary code guard (ACG) à ggshield-py.exe, le scanner ne peut pas utiliser son compilateur JIT regex et les scans prennent plusieurs fois plus de temps, sans aucun avertissement. ACG est désactivé par défaut. Vérifiez, puis exemptez le processus :
Get-ProcessMitigation -Name ggshield-py.exe # DynamicCode Enable: ON means ACG applies
Set-ProcessMitigation -Name ggshield-py.exe -Disable DynamicCode
Pour déployer l'exemption sur l'ensemble du parc, exportez-la avec Get-ProcessMitigation -RegistryConfigFilePath ggshield-exploit-protection.xml et chargez le fichier dans Intune sous Endpoint security > Attack surface reduction > Exploit Protection, ou distribuez-le via Group Policy. Consultez Personnaliser la protection contre les exploits.
Autres antivirus et contrôle des applications
- EDR tiers (CrowdStrike Falcon, SentinelOne, Cortex XDR, Carbon Black) : appliquez la même exclusion de processus pour
ggshield-py.exeavec la fonctionnalité équivalente de l'éditeur. Lorsque l'un d'eux est l'antivirus principal, Microsoft Defender s'exécute en mode passif, donc configurez plutôt l'EDR. - AppLocker, App Control for Business, code integrity guard :
ggshield.exe,ggshield-py.exeet le MSI sont signés par GitGuardian, mais les fichiers de support dans le dossier_internalet le plugin du scanner ne le sont pas. Autorisez le répertoire d'installation etC:\Users\*\AppData\Local\GitGuardian\ggshieldpar chemin, et n'activez pas code integrity guard pourggshield-py.exe.ggshield machine doctoréchoue lorsque le scanner ne peut pas se charger.
Si les scans sont toujours lents
Enregistrez ce que Microsoft Defender scanne pendant une exécution avec son analyseur de performances, en tant qu'administrateur :
New-MpPerformanceRecording -RecordTo "$env:TEMP\ggshield-defender.etl"
# Run ggshield machine report as the scan user, then press Enter here.
Get-MpPerformanceReport -Path "$env:TEMP\ggshield-defender.etl" -TopProcesses 10 -TopFiles 10
Si ggshield-py.exe figure toujours en tête de la liste des processus, l'exclusion n'est pas appliquée. Examinez les chemins de fichiers dans le rapport avant de le partager avec le support GitGuardian. Consultez Analyseur de performances pour Microsoft Defender Antivirus.