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.
Laisser un commentaire