
Como parte de nuestro objetivo de proporcionar 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 eso es trivado.
Durante el año pasado, TFSEC ha establecido las bases para las capacidades de escaneo IAC y malhiguraciones de Trivy, incluido Terraform Scanning, que ha sido respaldado de forma nativa en trivado durante mucho tiempo.
En el futuro queremos alentar a la comunidad TFSEC a la transición a Trivy. Mudarse a Trivy le brinda el mismo excelente motor de escaneo Terraform, con algunos beneficios adicionales:
Para obtener más información sobre cómo Trivy se compara con TFSEC y pasar de TFSEC a Trivy, eche un vistazo a la Guía de migración.
TFSEC utiliza el análisis estático de su código Terraform para detectar posibles configuraciones erróneas.
concat()Clasificado Adopt por The ThoughtWorks Tech Radar:
Para nuestros proyectos que utilizan Terraform, TFSEC se ha convertido rápidamente en una herramienta de análisis estático predeterminado para detectar posibles riesgos de seguridad. Es fácil integrarse en una tubería de CI y tiene una creciente biblioteca de cheques contra todos los principales proveedores y plataformas de la nube como Kubernetes. Dada su facilidad de uso, creemos que TFSEC podría ser una buena adición a cualquier proyecto de Terraform.

Instalar con Brew/LinuxBrew
brew install tfsecInstalar con chocolate
choco install tfsecInstalar con SCOOP
scoop install tfsecScript bash (Linux):
curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bashTambién puede obtener el binario para su sistema desde la página de versiones.
Alternativamente, instale con GO:
go install github.com/aquasecurity/tfsec/cmd/tfsec@latest Tenga en cuenta que el uso de go install se instalará directamente desde la rama master y los números de versión no se informarán a través de tfsec --version .
Los binarios en la página de versiones se firman con la clave de firma TFSEC D66B222A3EA4C25D5D1A097FC34ACEFB46EC39CE
Formulario Más información Consulte la página de firma para obtener instrucciones sobre la verificación.
TFSEC escaneará el directorio especificado. Si no se especifica ningún directorio, se utilizará el directorio de trabajo actual.
El estado de salida no será cero si TFSEC encuentra problemas, de lo contrario, el estado de salida será cero.
tfsec . Como alternativa a la instalación y ejecución de TFSEC en su sistema, puede ejecutar TFSEC en un contenedor Docker.
Hay una serie de opciones de Docker disponibles
| Nombre de imagen | Base | Comentario |
|---|---|---|
| Aquasec/TFSEC | alpino | Imagen TFSEC normal |
| Aquasec/TFSEC-Alpine | alpino | Exactamente lo mismo que Aquasec/TFSEC, pero para aquellos a aquellos que les gusta ser explícitos |
| Aquasec/TFSEC-CI | alpino | TFSEC sin EntryPoint - útil para compilaciones de CI donde desea anular el comando |
| Aquasec/TFSEC-Scratch | rascar | Una imagen construida en cero, nada con volante, solo ejecuta TFSEC |
Para correr:
docker run --rm -it -v " $( pwd ) :/src " aquasec/tfsec /srcSe está desarrollando una extensión de código de Visual Studio para integrarse con los resultados de TFSEC. Se puede encontrar más información en la página del mercado TFSEC
Si desea ejecutar TFSEC en su repositorio como una acción de GitHub, puede usar https://github.com/aquasecurity/tfsec-prcommenter-action.
Ahora puede instalar la tarea oficial de TFSEC. Recaude cualquier problema/solicitud de función en el repositorio de tareas.
Es posible que desee ignorar algunas advertencias. Si desea hacerlo, simplemente puede agregar un comentario que contiene tfsec:ignore:<rule> a la línea ofensiva en sus plantillas. Alternativamente, puede agregar el comentario a la línea por encima del bloque que contiene el problema, o al bloque del módulo para ignorar todos los acontecimientos 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á seguro de qué línea agregar el comentario, simplemente verifique la salida TFSEC para el número de línea del problema descubierto.
Puede ignorar múltiples reglas concatenando las reglas 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 "
} Puede establecer la fecha de vencimiento para ignore con el formato yyyy-mm-dd . Esta es una característica útil cuando desea asegurarse de que el problema ignorado no se olvide y debe revisarse en el futuro.
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
Ignorar como este estará activo solo hasta 2025-01-02 , después de esta fecha, se desactivará.
Es posible que desee excluir algunos cheques de ejecución. Si desea hacerlo, simplemente puede agregar un nuevo argumento -e check1,check2,etc a su comando CMD
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys Puede incluir valores de un archivo TFVARS en el escaneo, utilizando, por ejemplo: --tfvars-file terraform.tfvars .
TFSEC admite muchos proveedores populares de nubes y plataformas
| Cheques |
|---|
| Cheques de AWS |
| Cheques azules |
| Cheques de GCP |
| Comprobaciones de CloudStack |
| Cheques digitalocean |
| Cheques de github |
| Cheques de Kubernetes |
| Checks OpenStack |
| Comprobaciones de Oracle |
TFSEC está diseñado para ejecutar en una tubería CI. Es posible que desee ejecutar TFSEC como parte de su compilación sin salida de color. Puedes hacer esto usando --no-colour (o --no-color para nuestros amigos estadounidenses).
Puede generar resultados TFSEC como JSON, CSV, CheckStyle, Sarif, Junit o simplemente un antiguo formato legible para humanos. Use el indicador --format para especificar su formato deseado.
Si desea integrarse con alertas de seguridad GitHub e incluir la salida de sus comprobaciones TFSEC, puede usar la acción TFSEC-Sarif-Action GitHub para ejecutar el análisis estático y luego cargar los resultados en la pestaña Alertas de seguridad.
Las alertas generadas para el proyecto TFSEC-EXample se ven así.

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

Para obtener más información sobre cómo agregar alertas de seguridad, consulte la documentación de GitHub
Si necesita apoyar versiones de Terraform que usan HCL V1 (Terraform <0.12), puede usar v0.1.3 de TFSEC, aunque el soporte es muy limitado y tiene menos verificaciones.
Siempre damos la bienvenida a las contribuciones; Grande o pequeño, pueden ser actualizaciones de documentación, agregando nuevos cheques o algo más grande. Consulte la guía de contribución para obtener detalles sobre cómo ayudar.
Hecho con contribuyentes-IMG.
tfsec es un proyecto de código abierto AQUA Security. Aprenda sobre nuestro trabajo de código abierto y cartera aquí. Únase a la comunidad y hable con cualquier asunto en la discusión o holgura de GitHub.