
Tfsec ora fa parte di Trivy
Come parte del nostro obiettivo di fornire una soluzione di sicurezza open source completa per tutti, abbiamo consolidato tutti i nostri sforzi relativi alla scansione in un unico posto, ovvero Trivy.
Nell'ultimo anno, tfsec ha gettato le basi per le capacità di scansione IaC e di configurazioni errate di Trivy, inclusa la scansione Terraform, che è supportata nativamente in Trivy da molto tempo.
In futuro vogliamo incoraggiare la comunità di tfsec a passare a Trivy. Passare a Trivy ti offre lo stesso eccellente motore di scansione Terraform, con alcuni vantaggi extra:
tfsec continuerà a rimanere disponibile per il momento, anche se la nostra attenzione ingegneristica sarà rivolta a Trivy in futuro.
Per ulteriori informazioni su come Trivy si confronta con tfsec e sul passaggio da tfsec a Trivy, dai un'occhiata alla guida alla migrazione.
tfsec utilizza l'analisi statica del tuo codice Terraform per individuare potenziali configurazioni errate.
concat()Valutato Adopt dal Thoughtworks Tech Radar:
Per i nostri progetti che utilizzano Terraform, tfsec è rapidamente diventato uno strumento predefinito di analisi statica per rilevare potenziali rischi di sicurezza. È facile da integrare in una pipeline CI e ha una libreria crescente di controlli per tutti i principali provider cloud e piattaforme come Kubernetes. Data la sua facilità d'uso, riteniamo che tfsec possa essere una buona aggiunta a qualsiasi progetto Terraform.

Installa con brew/linuxbrew
brew install tfsec
Installa con Chocolatey
choco install tfsec
Installa con Scoop
scoop install tfsec
Script Bash (Linux):
curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bash
Puoi anche scaricare il binario per il tuo sistema dalla pagina delle release.
In alternativa, installa con Go:
go install github.com/aquasecurity/tfsec/cmd/tfsec@latest
Nota bene: utilizzando go install si installerà direttamente dal branch master e i numeri di versione non verranno riportati tramite tfsec --version.
I binari nella pagina delle release sono firmati con la chiave di firma tfsec D66B222A3EA4C25D5D1A097FC34ACEFB46EC39CE
Per maggiori informazioni consulta la pagina di firma per le istruzioni sulla verifica.
tfsec eseguirà la scansione della directory specificata. Se non viene specificata alcuna directory, verrà utilizzata la directory di lavoro corrente.
Lo stato di uscita sarà diverso da zero se tfsec trova problemi, altrimenti lo stato di uscita sarà zero.
tfsec .
In alternativa all'installazione e all'esecuzione di tfsec sul tuo sistema, puoi eseguire tfsec in un container Docker.
Sono disponibili diverse opzioni Docker
Per eseguire:
docker run --rm -it -v "$(pwd):/src" aquasec/tfsec /src
È in fase di sviluppo un'estensione per Visual Studio Code per integrarsi con i risultati di tfsec. Maggiori informazioni sono disponibili sulla pagina del Marketplace di tfsec
Se vuoi eseguire tfsec sul tuo repository come GitHub Action, puoi usare https://github.com/aquasecurity/tfsec-pr-commenter-action.
Ora puoi installare l'attività tfsec ufficiale. Segnala eventuali problemi/richieste di funzionalità nel repository dell'attività.
Potresti voler ignorare alcuni avvisi. Se desideri farlo, puoi semplicemente aggiungere un commento contenente tfsec:ignore:<rule> alla riga incriminata nei tuoi template. In alternativa, puoi aggiungere il commento alla riga sopra il blocco che contiene il problema, o al blocco del modulo per ignorare tutte le occorrenze di un problema all'interno del modulo.
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
cidr_blocks = ["0.0.0.0/0"] #tfsec:ignore:aws-vpc-no-public-ingress-sgr
}
...oppure...
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
#tfsec:ignore:aws-vpc-no-public-ingress-sgr
cidr_blocks = ["0.0.0.0/0"]
}
Se non sei sicuro su quale riga aggiungere il commento, controlla l'output di tfsec per il numero di riga del problema scoperto.
Puoi ignorare più regole concatenandole su una singola riga:
#tfsec:ignore:aws-s3-enable-bucket-encryption tfsec:ignore:aws-s3-enable-bucket-logging
resource "aws_s3_bucket" "my-bucket" {
bucket = "foobar"
acl = "private"
}
Puoi impostare una data di scadenza per ignore con il formato yyyy-mm-dd. Questa è una funzionalità utile quando vuoi assicurarti che un problema ignorato non venga dimenticato e debba essere rivisitato in futuro.
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
Un ignore come questo sarà attivo solo fino al 2025-01-02, dopo tale data sarà disattivato.
Potresti voler escludere alcuni controlli dall'esecuzione. Se desideri farlo, puoi semplicemente aggiungere un nuovo argomento -e check1,check2,ecc al tuo comando
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys
Puoi includere valori da un file tfvars nella scansione, usando, ad esempio: --tfvars-file terraform.tfvars.
tfsec supporta molti provider cloud e piattaforme popolari
tfsec è progettato per essere eseguito in una pipeline CI. Potresti voler eseguire tfsec come parte del tuo build senza output colorato. Puoi farlo usando --no-colour (o --no-color per i nostri amici americani).
Puoi esportare i risultati di tfsec come JSON, CSV, Checkstyle, Sarif, JUnit o semplicemente nel vecchio formato leggibile dall'uomo. Usa il flag --format per specificare il formato desiderato.
Se vuoi integrarti con gli avvisi di sicurezza GitHub e includere l'output dei tuoi controlli tfsec, puoi utilizzare l'azione GitHub tfsec-sarif-action per eseguire l'analisi statica e poi caricare i risultati nella scheda degli avvisi di sicurezza.
Gli avvisi generati per tfsec-example-project appaiono così.

Quando fai clic sugli avvisi per il branch, ottieni maggiori informazioni sul problema effettivo.

Per maggiori informazioni sull'aggiunta di avvisi di sicurezza, consulta la documentazione di GitHub
Se hai bisogno di supportare versioni di Terraform che utilizzano HCL v1 (Terraform <0.12), puoi usare v0.1.3 di tfsec, anche se il supporto è molto limitato e ha meno controlli.
Accogliamo sempre contributi; grandi o piccoli, possono essere aggiornamenti alla documentazione, aggiunta di nuovi controlli o qualcosa di più grande. Consulta la Guida ai contributi per i dettagli su come aiutare.
Realizzato con contributors-img.
tfsec è un progetto open source di Aqua Security. Scopri il nostro lavoro open source e il portfolio qui. Unisciti alla comunità e parlaci di qualsiasi argomento in GitHub Discussion o Slack.
| Nome Immagine | Base | Commento |
|---|
| aquasec/tfsec | alpine | Immagine tfsec normale |
| aquasec/tfsec-alpine | alpine | Esattamente lo stesso di aquasec/tfsec, ma per chi preferisce essere esplicito |
| aquasec/tfsec-ci | alpine | tfsec senza entrypoint - utile per build CI dove si vuole sovrascrivere il comando |
| aquasec/tfsec-scratch | scratch | Un'immagine basata su scratch - niente di appariscente, esegue solo tfsec |
| Controlli |
|---|
| Controlli AWS |
| Controlli Azure |
| Controlli GCP |
| Controlli CloudStack |
| Controlli DigitalOcean |
| Controlli GitHub |
| Controlli Kubernetes |
| Controlli OpenStack |
| Controlli Oracle |