
Vous empêche de valider des secrets et des identifiants dans les dépôts git
.. contents:: :depth: 2
::
git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<files>...]
git secrets --scan-history
git secrets --install [-f|--force] [<target-directory>]
git secrets --list [--global]
git secrets --add [-a|--allowed] [-l|--literal] [--global] <pattern>
git secrets --add-provider [--global] <command> [arguments...]
git secrets --register-aws [--global]
git secrets --aws-provider [<credentials-file>]
git-secrets analyse les commits, les messages de commit, et les fusions --no-ff afin d'empêcher l'ajout de secrets dans vos dépôts git. Si un commit, un message de commit, ou tout commit dans un historique de fusion --no-ff correspond à l'un de vos motifs d'expression régulière interdits configurés, alors le commit est rejeté.
git-secrets doit être placé quelque part dans votre PATH pour qu'il soit détecté par git lors de l'exécution de git secrets.
*nix (Linux/macOS)
Vous pouvez utiliser la cible ``install`` du Makefile fourni pour installer ``git secrets`` et la page de manuel.
Vous pouvez personnaliser le chemin d'installation en utilisant les variables PREFIX et MANPREFIX.
::
make install
Windows
~~~~~~~
Exécutez le script powershell ``install.ps1`` fourni. Cela copiera les fichiers nécessaires dans un répertoire d'installation (``%USERPROFILE%/.git-secrets`` par défaut) et ajoutera le répertoire au ``PATH`` de l'utilisateur courant.
::
PS > ./install.ps1
Homebrew (pour les utilisateurs macOS)
::
brew install git-secrets
.. attention::
**Vous n'avez pas encore terminé ! Vous DEVEZ installer les hooks git pour chaque dépôt avec lequel vous souhaitez utiliser** ``git secrets --install``.
Voici un exemple rapide de la façon de garantir qu'un dépôt git est scanné pour les secrets à chaque commit ::
cd /path/to/my/repo
git secrets --install
git secrets --register-aws
Ajoutez un modèle de configuration si vous souhaitez ajouter des hooks à tous les dépôts que vous initialiserez ou clônerez à l'avenir.
::
git secrets --register-aws --global
Ajoutez des hooks à tous vos dépôts locaux.
::
git secrets --install ~/.git-templates/git-secrets
git config --global init.templateDir ~/.git-templates/git-secrets
Ajoutez des fournisseurs personnalisés pour détecter les informations d'identification de sécurité.
::
git secrets --add-provider -- cat /path/to/secret/file/patterns
Avec git-secrets, il est également possible de scanner un dépôt en incluant toutes les révisions :
::
git secrets --scan-history
Modes de fonctionnement
Chacune de ces options doit apparaître en premier sur la ligne de commande.
``--install``
Installe les hooks git pour un dépôt. Une fois les hooks installés pour un dépôt git, les commits et les fusions non fast-forward pour ce dépôt seront empêchés de commiter des secrets.
``--scan``
Scanne un ou plusieurs fichiers à la recherche de secrets. Lorsqu'un fichier contient un secret, le texte correspondant du fichier scanné sera écrit sur stdout et le script se terminera avec un code de sortie non nul. Chaque ligne correspondante sera écrite avec le nom du fichier qui a correspond, deux-points, le numéro de ligne correspondant, deux-points, puis la ligne de texte correspondante. Si aucun fichier n'est fourni, tous les fichiers retournés par ``git ls-files`` sont scannés.
``--scan-history``
Scanne le dépôt en incluant toutes les révisions. Lorsqu'un fichier contient un secret, le texte correspondant du fichier scanné sera écrit sur stdout et le script se terminera avec un code de sortie non nul. Chaque ligne correspondante sera écrite avec le nom du fichier qui a correspond, deux-points, le numéro de ligne correspondant, deux-points, puis la ligne de texte correspondante.
``--list``
Liste la configuration ``git-secrets`` pour le dépôt courant ou dans la config git globale.
``--add``
Ajoute un motif interdit ou autorisé.
``--add-provider``
Enregistre un fournisseur de secrets. Les fournisseurs de secrets sont des exécutables qui, lorsqu'ils sont invoqués, produisent des motifs interdits que ``git-secrets`` doit traiter comme interdits.
``--register-aws``
Ajoute les motifs AWS courants à la config git et s'assure que les clés présentes dans ``~/.aws/credentials`` ne se trouvent dans aucun commit. Les vérifications suivantes sont ajoutées :
- Identifiants de clé d'accès AWS via ``(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}``
- Clés API Amazon Bedrock. Longue durée via ``ABSK[A-Za-z0-9+/]{109,}=*`` et courte durée via ``bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29t``
- Assignations de clé secrète d'accès AWS via ":" ou "=" entourées de guillemets optionnels
- Assignations d'ID de compte AWS via ":" ou "=" entourées de guillemets optionnels
- Motifs autorisés pour les exemples de clés AWS (``AKIAIOSFODNN7EXAMPLE`` et ``wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY``)
- Informations d'identification connues de ``~/.aws/credentials``
.. note::
Bien que les motifs enregistrés par cette commande devraient détecter la plupart des instances d'informations d'identification AWS, ces motifs ne garantissent pas de tous les détecter. ``git-secrets`` doit être utilisé comme un moyen supplémentaire d'assurance — vous devez toujours faire votre diligence raisonnable pour vous assurer de ne pas commiter d'informations d'identification dans un dépôt.
``--aws-provider``
Fournisseur de secrets qui produit les informations d'identification trouvées dans un fichier INI. Vous pouvez éventuellement fournir le chemin vers un fichier INI.
Options pour ``--install``
-f, --force
Écrase les hooks existants s'ils sont présents.
<target-directory>
Lorsqu'il est fourni, installe les hooks git dans le répertoire donné. Le répertoire courant est supposé si <target-directory> n'est pas fourni.
Si le ``<target-directory>`` fourni n'est pas dans un dépôt git, le répertoire sera créé et les hooks seront placés dans ``<target-directory>/hooks``. Cela peut être utile pour créer des répertoires de modèles git à utiliser avec ``git init --template <target-directory>``.
Vous pouvez exécuter ``git init`` sur un dépôt qui a déjà été initialisé. D'après la documentation `git init <https://git-scm.com/docs/git-init>`_ :
D'après la documentation git : Exécuter ``git init`` dans un dépôt existant est sûr. Cela n'écrasera pas ce qui est déjà présent. La principale raison de réexécuter ``git init`` est d'incorporer les modèles nouvellement ajoutés (ou de déplacer le dépôt à un autre endroit si ``--separate-git-dir`` est donné).
Les hooks git suivants sont installés :
1. ``pre-commit`` : Utilisé pour vérifier si l'un des fichiers modifiés dans le commit utilise des motifs interdits.
2. ``commit-msg`` : Utilisé pour déterminer si un message de commit contient un motif interdit.
3. ``prepare-commit-msg`` : Utilisé pour déterminer si un commit de fusion introduira un historique contenant un motif interdit à un moment donné. Veuillez noter que ce hook n'est invoqué que pour les fusions non fast-forward.
.. note::