
Tfsec ahora forma parte de Trivy
Como parte de nuestro objetivo de ofrecer una solución integral de seguridad de código abierto para todos, hemos estado consolidando todos nuestros esfuerzos relacionados con el escaneo en un solo lugar, y ese lugar es Trivy.
Durante el último año, tfsec ha sentado las bases de las capacidades de escaneo de IaC y malas configuraciones de Trivy, incluido el escaneo de Terraform, que ya es compatible de forma nativa con Trivy desde hace mucho tiempo.
De ahora en adelante, queremos animar a la comunidad de tfsec a migrar a Trivy. Migrar a Trivy te ofrece el mismo excelente motor de escaneo de Terraform, con algunos beneficios adicionales:
Para obtener más información sobre cómo se compara Trivy con tfsec y cómo migrar de tfsec a Trivy, echa un vistazo a la guía de migración.
tfsec utiliza el análisis estático de tu código terraform para detectar posibles errores de configuración.
concat()Calificado como Adopt por el Thoughtworks Tech Radar:
Para nuestros proyectos que usan Terraform, tfsec se ha convertido rápidamente en una herramienta de análisis estático predeterminada para detectar posibles riesgos de seguridad. Es fácil de integrar en un pipeline de CI y cuenta con una biblioteca creciente de comprobaciones para todos los principales proveedores de nube y plataformas como Kubernetes. Dada su facilidad de uso, creemos que tfsec puede ser una buena incorporación a cualquier proyecto de Terraform.

Instalar con brew/linuxbrew
brew install tfsec
Instalar con Chocolatey
choco install tfsec
Instalar con Scoop
scoop install tfsec
Script Bash (Linux):
curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bash
También puedes obtener el binario para tu sistema desde la página de lanzamientos.
Alternativamente, instala con Go:
go install github.com/aquasecurity/tfsec/cmd/tfsec@latest
Ten en cuenta que usar go install instalará directamente desde la rama master y los números de versión no se reportarán mediante tfsec --version.
Los binarios de la página de lanzamientos están firmados con la clave de firma de tfsec D66B222A3EA4C25D5D1A097FC34ACEFB46EC39CE
Para obtener más información, consulta la página de firma para ver las instrucciones de verificación.
tfsec escaneará el directorio especificado. Si no se especifica un directorio, se utilizará el directorio de trabajo actual.
El código de salida será distinto de cero si tfsec encuentra problemas; de lo contrario, el código de salida será cero.
tfsec .
Como alternativa a instalar y ejecutar tfsec en tu sistema, puedes ejecutar tfsec en un contenedor Docker.
Hay varias opciones de Docker disponibles
Para ejecutar:
docker run --rm -it -v "$(pwd):/src" aquasec/tfsec /src
Se está desarrollando una extensión de Visual Studio Code para integrarse con los resultados de tfsec. Puedes encontrar más información en la página de tfsec en Marketplace
Si quieres ejecutar tfsec en tu repositorio como GitHub Action, puedes usar https://github.com/aquasecurity/tfsec-pr-commenter-action.
Ahora puedes instalar la tarea oficial de tfsec. Por favor, notifica cualquier problema o solicitud de funcionalidad en el repositorio de la tarea.
Puede que quieras ignorar algunas advertencias. Si deseas hacerlo, simplemente añade un comentario que contenga tfsec:ignore:<rule> en la línea problemática de tus plantillas. Alternativamente, puedes añadir el comentario en la línea superior al bloque que contiene el problema, o en el bloque del módulo para ignorar todas las apariciones de un problema dentro del módulo.
Por ejemplo, para ignorar una regla de grupo de seguridad abierta:
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
cidr_blocks = ["0.0.0.0/0"] #tfsec:ignore:aws-vpc-no-public-ingress-sgr
}
...o...
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
#tfsec:ignore:aws-vpc-no-public-ingress-sgr
cidr_blocks = ["0.0.0.0/0"]
}
Si no estás seguro de en qué línea añadir el comentario, revisa la salida de tfsec para ver el número de línea del problema detectado.
Puedes ignorar varias reglas concatenándolas en una sola línea:
#tfsec:ignore:aws-s3-enable-bucket-encryption tfsec:ignore:aws-s3-enable-bucket-logging
resource "aws_s3_bucket" "my-bucket" {
bucket = "foobar"
acl = "private"
}
Puedes establecer una fecha de expiración para ignore con el formato yyyy-mm-dd. Esta es una funcionalidad útil cuando quieres asegurarte de que un problema ignorado no se olvide y deba revisarse en el futuro.
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
Un ignore como este estará activo solo hasta 2025-01-02; después de esta fecha se desactivará.
Puede que quieras excluir algunas comprobaciones de la ejecución. Si deseas hacerlo, simplemente añade el argumento -e check1,check2,etc a tu comando de terminal
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys
Puedes incluir valores de un archivo tfvars en el escaneo usando, por ejemplo: --tfvars-file terraform.tfvars.
tfsec es compatible con muchos proveedores populares de nube y plataforma
tfsec está diseñado para ejecutarse en un pipeline de CI. Puede que quieras ejecutar tfsec como parte de tu compilación sin salida de color. Puedes hacerlo usando --no-colour (o --no-color para nuestros amigos estadounidenses).
Puedes mostrar los resultados de tfsec como JSON, CSV, Checkstyle, Sarif, JUnit o simplemente en el clásico formato legible para humanos. Usa la bandera --format para especificar el formato deseado.
Si quieres integrarte con las alertas de seguridad de GitHub e incluir la salida de tus comprobaciones de tfsec, puedes usar la acción de GitHub tfsec-sarif-action para ejecutar el análisis estático y luego subir los resultados a la pestaña de alertas de seguridad.
Las alertas generadas para tfsec-example-project tienen este aspecto.

Cuando haces clic en las alertas de la rama, obtienes más información sobre el problema real.

Para obtener más información sobre cómo añadir alertas de seguridad, consulta la documentación de GitHub
Si necesitas dar soporte a versiones de terraform que usan HCL v1 (terraform <0.12), puedes usar v0.1.3 de tfsec, aunque el soporte es muy limitado y tiene menos comprobaciones.
Siempre damos la bienvenida a las contribuciones, grandes o pequeñas; pueden ser actualizaciones de documentación, nuevas comprobaciones o algo más grande. Consulta la Guía de contribución para conocer los detalles sobre cómo ayudar.
Hecho con contributors-img.
tfsec es un proyecto de código abierto de Aqua Security.
Conoce nuestro trabajo y portafolio de código abierto aquí.
Únete a la comunidad y habla con nosotros sobre cualquier tema en GitHub Discussion o Slack.
| Nombre de la imagen | Base | Comentario |
|---|
| aquasec/tfsec | alpine | Imagen normal de tfsec |
| aquasec/tfsec-alpine | alpine | Exactamente igual que aquasec/tfsec, pero para aquellos a los que les gusta ser explícitos |
| aquasec/tfsec-ci | alpine | tfsec sin entrypoint: útil para compilaciones de CI donde quieras sobrescribir el comando |
| aquasec/tfsec-scratch | scratch | Una imagen construida sobre scratch: sin adornos, solo ejecuta tfsec |
| Comprobaciones |
|---|