I “segreti” sono qualsiasi tipo di dati sensibili o privati che concede agli utenti autorizzati il permesso di accedere a infrastrutture IT critiche (come account, dispositivi, rete, servizi basati su cloud), applicazioni, archiviazione, database e altri tipi di dati critici per un’organizzazione. Ad esempio, password, ID di accesso AWS, chiavi di accesso segrete AWS, chiave OAuth di Google ecc. Sono segreti.
I segreti dovrebbero essere tenuti rigorosamente privati. Tuttavia, a volte gli aggressori possono accedervi facilmente a causa di criteri di sicurezza imperfetti o errori involontari degli sviluppatori. A volte gli sviluppatori utilizzano segreti predefiniti o lasciano segreti hardcoded come password, chiavi API, chiavi di crittografia, chiavi SSH, token ecc. nelle immagini del contenitore, specialmente durante i cicli di sviluppo e distribuzione rapidi nella pipeline CI / CD. Inoltre, a volte gli utenti memorizzano le password in testo normale.
Deepfence SecretScanner aiuta gli utenti a scansionare le immagini del contenitore o le directory locali sugli host e genera un file JSON con i dettagli di tutti i segreti trovati.
Opzioni della riga di comando
$ ./SecretScanner --help
Usage of ./SecretScanner:
-config-path string
Searches for config.yaml from given directory. If not set, tries to find it from SecretScanner binary's and current directory
-debug-level string
Debug levels are one of FATAL, ERROR, IMPORTANT, WARN, INFO, DEBUG. Only levels higher than the debug-level are displayed (default "ERROR")
-image-name string
Name of the image along with tag to scan for secrets
-json-filename string
Output json file name. If not set, it will automatically create a filename based on image or dir name
-local string
Specify local directory (absolute path) which to scan. Scans only given directory recursively.
-max-multi-match uint
Maximum number of matches of same pattern in one file. This is used only when multi-match option is enabled. (default 3)
-max-secrets uint
Maximum number of secrets to find in one container image or file system. (default 1000)
-maximum-file-size uint
Maximum file size to process in KB (default 256)
-multi-match
Output multiple matches of same pattern in one file. By default, only one match of a pattern is output for a file for better performance
-output-path string
Output directory where json file will be stored. If not set, it will output to current directory
-temp-directory string
Directory to process and store repositories/matches (default "/tmp")
-threads int
Number of concurrent threads (default number of logical CPUs)
Prova rapidamente a utilizzare Docker
Installa Docker ed esegui SecretScanner su un’immagine contenitore utilizzando le seguenti istruzioni:
- Costruisci SecretScanner:
docker build --rm=true --tag=deepfenceio/secretscanning:latest -f Dockerfile .
- In alternativa, estrai l’ultima build dall’hub Docker eseguendo:
docker pull deepfenceio/secretscanning
- Estrarre un’immagine del contenitore per la scansione:
docker pull node:8.11
- Esegui SecretScanner:
- Scansiona un’immagine contenitore:
docker run -it --rm --name=deepfence-secretscanner -v $(pwd):/home/deepfence/output -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker deepfenceio/secretscanning -image-name node:8.11
- Scansiona una directory locale:
docker run -it --rm --name=deepfence-secretscanner -v $(pwd):/home/deepfence/output -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker deepfenceio/secretscanning -local /home/deepfence/src/SecretScanner/test
- Scansiona un’immagine contenitore:
Per impostazione predefinita, SecretScanner creerà anche file json con i dettagli di tutti i segreti trovati nella directory di lavoro corrente. È possibile specificare esplicitamente la directory di output e il nome del file json utilizzando le opzioni appropriate.
Istruzioni per la costruzione
- Installa Docker
- Installa Hyperscan
- Installa go per la tua piattaforma (versione 1.14)
- Installare i moduli go, se necessario:
gohs
,yaml.v3
ecolor
go get github.com/deepfence/SecretScanner
scaricherà e creerà SecretScanner automaticamente nella directory$GOPATH/bin
o$HOME/go/bin
. Oppure clonare questo repository ed eseguirego build -v -i
per creare l’eseguibile nella directory corrente.- Modificare il file config.yaml secondo necessità ed eseguire lo scanner segreto con la directory del file di configurazione appropriata.
Per riferimento, il file di installazione ha i comandi per costruire su un sistema Ubuntu.
Istruzioni per l’esecuzione su host locale
./SecretScanner --help
./SecretScanner -config-path /path/to/config.yaml/dir -local test
./SecretScanner -config-path /path/to/config.yaml/dir -image-name node:8.11
Output di SecretScanner di esempio