
Une solution adaptée aux entreprises pour détecter et prévenir les secrets dans le code.
detect-secrets est un module bien nommé pour (surprise, surprise) la détection de secrets au sein d'une base de code.
Cependant, contrairement à d'autres paquets similaires qui se concentrent uniquement sur la recherche de secrets, ce paquet est conçu pour le client en entreprise : fournissant un moyen rétrocompatible et systématique de :
De cette façon, vous créez une séparation des préoccupations : en acceptant qu'il puisse y avoir actuellement des secrets cachés dans votre vaste dépôt (c'est ce que nous appelons une baseline), mais en empêchant que ce problème ne s'aggrave, sans avoir à gérer l'effort potentiellement gargantuesque de déplacer les secrets existants.
Il le fait en exécutant des sorties de diff périodiques sur des expressions régulières conçues de manière heuristique, pour identifier si un nouveau secret a été commité. Ainsi, il évite la surcharge de fouiller tout l'historique git, ainsi que la nécessité de scanner l'ensemble du dépôt à chaque fois.
Pour un aperçu des changements récents, veuillez consulter CHANGELOG.md.
Si vous souhaitez contribuer, veuillez consulter CONTRIBUTING.md.
Pour une documentation plus détaillée, consultez notre autre documentation.
Créez une baseline des secrets potentiels actuellement trouvés dans votre dépôt git.```bash $ detect-secrets scan > .secrets.baseline
ou, pour l'exécuter depuis un répertoire différent :```bash
$ detect-secrets -C /path/to/directory scan > /path/to/directory/.secrets.baseline
Analyse des fichiers non suivis par git :```bash $ detect-secrets scan test_data/ --all-files > .secrets.baseline
### Ajout de nouveaux secrets à la base de référence :
Cela rescannera votre base de code, et :
1. Mettez à jour/améliorez votre base de référence pour qu'elle soit compatible avec la dernière version,
2. Ajoutez tous les nouveaux secrets qu'il trouve à votre base de référence,
3. Supprimez les secrets qui ne se trouvent plus dans votre base de code
Cela préservera également tous les secrets étiquetés que vous possédez.```bash
$ detect-secrets scan --baseline .secrets.baseline
Pour les bases de référence antérieures à la version 0.9, recréez-les simplement.
Analyse des fichiers en staging uniquement :```bash $ git diff --staged --name-only -z | xargs -0 detect-secrets-hook --baseline .secrets.baseline
**Analyse de tous les fichiers suivis :**```bash
$ git ls-files -z | xargs -0 detect-secrets-hook --baseline .secrets.baseline
$ detect-secrets scan --list-all-plugins ArtifactoryDetector AWSKeyDetector AzureStorageKeyDetector BasicAuthDetector CloudantDetector DiscordBotTokenDetector GitHubTokenDetector GitLabTokenDetector Base64HighEntropyString HexHighEntropyString IbmCloudIamDetector IbmCosHmacDetector IPPublicDetector JwtTokenDetector KeywordDetector MailchimpDetector NpmDetector OpenAIDetector PrivateKeyDetector PypiTokenDetector SendGridDetector SlackDetector SoftlayerDetector SquareOAuthDetector StripeDetector TelegramBotTokenDetector TwilioKeyDetector
### Désactiver les plugins :```bash
$ detect-secrets scan --disable-plugin KeywordDetector --disable-plugin AWSKeyDetector
Si vous voulez uniquement exécuter un plugin spécifique, vous pouvez :```bash
$ detect-secrets scan --list-all-plugins |
grep -v 'BasicAuthDetector' |
sed "s#^#--disable-plugin #g" |
xargs detect-secrets scan test_data
### Auditer une ligne de base :
Il s'agit d'une étape facultative pour étiqueter les résultats dans votre ligne de base. Cela peut être utilisé pour affiner votre liste de contrôle des secrets à migrer, ou pour mieux configurer vos plugins afin d'améliorer leur rapport signal/bruit.```bash
$ detect-secrets audit .secrets.baseline
Utilisation de base :```python from detect_secrets import SecretsCollection from detect_secrets.settings import default_settings
secrets = SecretsCollection() with default_settings(): secrets.scan_file('test_data/config.ini')
import json print(json.dumps(secrets.json(), indent=2))
**Configuration plus avancée :**```python
from detect_secrets import SecretsCollection
from detect_secrets.settings import transient_settings
secrets = SecretsCollection()
with transient_settings({
# Only run scans with only these plugins.
# This format is the same as the one that is saved in the generated baseline.
'plugins_used': [
# Example of configuring a built-in plugin
{
'name': 'Base64HighEntropyString',
'limit': 5.0,
},
# Example of using a custom plugin
{
'name': 'HippoDetector',
'path': 'file:///Users/aaronloo/Documents/github/detect-secrets/testing/plugins.py',
},
],
# We can also specify whichever additional filters we want.
# This is an example of using the function `is_identified_by_ML_model` within the
# local file `./private-filters/example.py`.
'filters_used': [
{
'path': 'file://private-filters/example.py::is_identified_by_ML_model',
},
]
}) as settings:
# If we want to make any further adjustments to the created settings object (e.g.
# disabling default filters), we can do so as such.
settings.disable_filters(
'detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign',
'detect_secrets.filters.heuristic.is_likely_id_string',
)
secrets.scan_file('test_data/config.ini')
$ pip install detect-secrets ✨🍰✨
Installer via [brew](https://brew.sh/):```bash
$ brew install detect-secrets
detect-secrets est fourni avec trois outils différents, et il y a souvent une confusion quant à celui à utiliser. Utilisez cette liste de contrôle pratique pour vous aider à décider :
detect-secrets scan.detect-secrets-hook.detect-secrets audit.