Eviter de partager des secrets dans votre GIT grâce à Gitleaks

Gitleaks pour éviter de partager les secrets

Gitleaks est un outil SAST (Static Application Security Testing) conçu pour détecter et prévenir la présence de secrets codés en dur, tels que les mots de passe, les clés API et les jetons, dans les dépôts Git. Gitleaks est une solution tout-en-un, facile à utiliser, pour détecter les secrets, qu’ils soient passés ou présents, dans votre code.

Afin d’en tirer le meilleur avantage il est nécessaire de l’ajouter a votre CI/CD. Il est compatible avec les Github-actions et Gitlab. Il peut être également intégré via Pre-commit.

Il se base, entre autre, sur la command git log pour détecter les secrets partagés.

Installer Gitleaks

Gitleads peut être installé via Homebrew, Docker, Go ou en utilisant un binaire disponible sur cette page.

# MacOS
brew install gitleaks

# Docker (DockerHub)
docker pull zricethezav/gitleaks:latest
docker run -v ${path_to_host_folder_to_scan}:/path zricethezav/gitleaks:latest [COMMAND] --source="/path" [OPTIONS]

# Docker (ghcr.io)
docker pull ghcr.io/gitleaks/gitleaks:latest
docker run -v ${path_to_host_folder_to_scan}:/path ghcr.io/gitleaks/gitleaks:latest [COMMAND] --source="/path" [OPTIONS]

# From Source (make sure `go` is installed)
git clone https://github.com/gitleaks/gitleaks.git
cd gitleaks
make build
Installer gitleaks en fonction de votre système

Je vous invite à lire la documentation sur la page du projet github pour en savoir plus.

Utiliser Gitleaks avec la CI de Gitlab

Dans la grande bibliothèque des templates Gitlab, on trouve également Gitleaks. Ainsi il est plus facile de l’intégrer dans vos process via un composant CI/CD ou via la syntaxe include:project.

A savoir que si Gitleaks run sur la master alors il fera un audit de toutes les branches en cours. Sinon il restera spécifique à la branche courante.

include:
# 1: include the component
- component: gitlab.com/to-be-continuous/gitleaks/gitlab-ci-gitleaks@2.5.2
# 2: set/override component inputs
inputs:
args: "--no-banner" # ⚠ Ajouter vos arguments
CI/CD component
include:
# 1: include the template
- project: 'to-be-continuous/gitleaks'
ref: '2.5.2'
file: '/templates/gitlab-ci-gitleaks.yml'

variables:
# 2: set/override template variables
GITLEAKS_ARGS: "--no-banner" # ⚠ Ajouter vos arguments
CI/CD template

Ci-dessous retrouvez la liste des arguments disponibles au moment ou j’écris ces lignes

Usage:
gitleaks [command]

Available Commands:
completion generate the autocompletion script for the specified shell
detect detect secrets in code
help Help about any command
protect protect secrets in code
version display gitleaks version

Flags:
-b, --baseline-path string path to baseline with issues that can be ignored
-c, --config string config file path
order of precedence:
1. --config/-c
2. env var GITLEAKS_CONFIG
3. (--source/-s)/.gitleaks.toml
If none of the three options are used, then gitleaks will use the default config
--exit-code int exit code when leaks have been encountered (default 1)
-h, --help help for gitleaks
-l, --log-level string log level (trace, debug, info, warn, error, fatal) (default "info")
--max-target-megabytes int files larger than this will be skipped
--no-color turn off color for verbose output
--no-banner suppress banner
--redact redact secrets from logs and stdout
-f, --report-format string output format (json, csv, junit, sarif) (default "json")
-r, --report-path string report file
-s, --source string path to source (default ".")
-v, --verbose show verbose output from scan

Use "gitleaks [command] --help" for more information about a command.

Il y a 2 commandes primordiales: detect et protect. La première permet de scanner votre code, des commits, repo, fichier, dossier, … et peut être aussi utilisé sur votre machine de dev ou en action gitlab / github etc… dans votre processus CI/CD.

Protect permet de scanner des sur la machine locale du développer les changements non commités. Moi je l’ai intégré en pre-commit.

3 réponses à “Eviter de partager des secrets dans votre GIT grâce à Gitleaks”

  1. […] facilement dans les pipelines de CI/CD (Intégration Continue et Déploiement Continu). Tout comme Gitleaks avec la sécurité de vos secrets, cela permet aux équipes de surveiller en permanence les […]

  2. […] Gitleaks, dans un prochain article je vous présenterais comment forcer cela dans votre pipeline de CI pour […]

  3. […] privées private.pem et évitez de les inclure dans votre système de contrôle de version. (Sinon Gitleaks va pas être […]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *