
Rileva violazioni di conformità e sicurezza in Infrastructure as Code per mitigare il rischio prima del provisioning di infrastruttura cloud native.
- Questo progetto non è più mantenuto. Il repository è archiviato e non saranno accettati ulteriori aggiornamenti, issue o pull request.
- Sentiti libero di forkarlo se desideri continuare lo sviluppo.

Terrascan è un analizzatore di codice statico per Infrastructure as Code. Terrascan ti consente di:
Per provare Terrascan nel tuo browser, consulta la Terrascan Sandbox https://www.tenable.com/terrascan
Per saperne di più sulle funzionalità e capacità di Terrascan, consulta il portale della documentazione: https://runterrascan.io
Unisciti alla community di Tenable 👇
Terrascan supporta diversi modi per installarlo ed è anche disponibile come immagine Docker. Consulta la pagina delle versioni di Terrascan per l'ultima versione delle build in tutte le piattaforme supportate. Seleziona il binario corretto per la tua piattaforma.
curl -L "$(curl -s https://api.github.com/repos/tenable/terrascan/releases/latest | grep -o -E "https://.+?_Linux_x86_64.tar.gz")" > terrascan.tar.gz
tar -xf terrascan.tar.gz terrascan && rm terrascan.tar.gz
sudo install terrascan /usr/local/bin && rm terrascan
terrascan
AURGli utenti ArchLinux e Manjaro possono installare con:
yay -S terrascan
brewGli utenti di Homebrew possono installare con:
$ brew install terrascan
Terrascan è anche disponibile come immagine Docker e può essere utilizzato come segue
$ docker run tenable/terrascan
Fai riferimento alla documentazione per informazioni.
Per scansionare il tuo codice per problemi di sicurezza, puoi eseguire il seguente comando (per impostazione predefinita, esegue la scansione di Terraform).
$ terrascan scan
Nota: Terrascan uscirà con un codice di errore se vengono rilevati errori o violazioni durante una scansione.
| Scenario | Codice di uscita |
|---|---|
| il riepilogo della scansione ha errori e violazioni |
Terrascan può essere integrato in pipeline CI/CD per applicare le migliori pratiche di sicurezza. Fare riferimento alla nostra documentazione per l'integrazione con la tua pipeline.
Puoi usare il comando terrascan con le seguenti opzioni:
$ terrascan
Terrascan
Usage:
terrascan [command]
Available Commands:
help Help about any command
init Initialize Terrascan
scan Detect compliance and security violations across Infrastructure as Code.
server Run Terrascan as an API server
version Terrascan version
Flags:
-c, --config-path string config file path
-h, --help help for terrascan
-l, --log-level string log level (debug, info, warn, error, panic, fatal) (default "info")
-x, --log-type string log output type (console, json) (default "console")
-o, --output string output type (human, json, yaml, xml) (default "human")
Use "terrascan [command] --help" for more information about a command.
Le policy di Terrascan sono scritte utilizzando il linguaggio di policy Rego. Ogni rego include un file JSON "rule" che definisce i metadati per la policy. Per impostazione predefinita, Terrascan scarica le policy dai repository di Terrascan durante la prima scansione. Tuttavia, se desideri scaricare le ultime policy, devi eseguire il processo di inizializzazione. Consulta Utilizzo per informazioni sul processo di inizializzazione.
Nota: Il comando di scansione eseguirà implicitamente il processo di inizializzazione se non vengono trovate policy.
Puoi usare il flag --find-vuln per raccogliere le vulnerabilità come riportate nel suo registro come parte dell'output di Terrascan. Attualmente Terrascan supporta Elastic Container Registry (ECR), Azure Container Registry, Google Container Registry e Google Artifact Registry.
Il flag --find-vuln può essere utilizzato quando si scansionano file IaC come segue:
$ terrascan scan -i <IaC provider> --find-vuln
Per ulteriori informazioni e spiegazioni su come configurare il tuo ambiente per autenticarti con le API del registro, consulta la documentazione sull'utilizzo.
Per impostazione predefinita, Terrascan esegue la scansione dell'intera configurazione rispetto a tutte le policy. Tuttavia, Terrascan supporta la configurazione granulare di policy e risorse.
Leggi di più sull'instrumentazione in-file e il file di configurazione sul nostro sito di documentazione.
Per ora, alcuni consigli rapidi:
Puoi configurare Terrascan per saltare una policy specifica (regola) durante la scansione di una risorsa. Segui questi passaggi a seconda della tua piattaforma:
Utilizza script Terraform per configurare Terrascan per saltare le regole inserendo un commento con la frase "ts:skip=<RULENAME><SKIP_REASON>". Il commento deve essere incluso all'interno della risorsa come mostrato nell'esempio seguente.

Nei file yaml di Kubernetes, puoi configurare Terrascan per saltare le policy aggiungendo un'annotazione come visto nel frammento qui sotto.

Utilizza il file di configurazione di Terrascan per selezionare manualmente le policy da includere o escludere dall'intera scansione. Questo è adatto per casi d'uso particolari. Utilizza l'opzione di soppressione "in-file" per specificare le risorse che devono essere escluse dal test contro le policy selezionate. Questo garantisce che le policy vengano saltate solo per risorse specifiche, non per tutte le risorse.

L'output predefinito di Terrascan è un elenco di violazioni presenti nell'IaC scansionato. Un esempio di output:

Terrascan può essere compilato localmente. Questo è utile se vuoi essere sull'ultima versione o durante lo sviluppo di Terrascan. Sono richiesti gcc e Go 1.19 o superiore.
$ git clone [email protected]:tenable/terrascan.git
$ cd terrascan
$ make build
$ ./bin/terrascan
FROM golang:alpine AS build-env
RUN apk add --update git
RUN git clone https://github.com/tenable/terrascan && cd terrascan \
&& CGO_ENABLED=0 GO111MODULE=on go build -o /go/bin/terrascan cmd/terrascan/main.go
Per saperne di più sullo sviluppo e sui contributi a Terrascan, consulta la guida ai contributi.
Crediamo che una comunità aperta e inclusiva avvantaggi tutti noi. Si prega di notare che questo progetto è rilasciato con un Codice di condotta per i contributori. Partecipando a questo progetto accetti di rispettare i suoi termini.
Terrascan è concesso in licenza sotto la Licenza Apache 2.0.
| 5 |
| il riepilogo della scansione ha errori ma nessuna violazione | 4 |
| il riepilogo della scansione ha violazioni ma nessun errore | 3 |
| il riepilogo della scansione non ha violazioni né errori | 0 |
| il comando di scansione genera un errore a causa di input non validi | 1 |