
Tfsec agora faz parte do Trivy
Como parte do nosso objetivo de fornecer uma solução abrangente de segurança open source para todos, temos consolidado todos os nossos esforços relacionados a scanning em um só lugar, e esse lugar é o Trivy.
Ao longo do último ano, o tfsec estabeleceu as bases para as capacidades de IaC e detecção de má configuração do Trivy, incluindo o scanning de Terraform, que já é suportado nativamente no Trivy há bastante tempo.
Daqui para frente, queremos incentivar a comunidade do tfsec a fazer a transição para o Trivy. Migrar para o Trivy dá a você o mesmo excelente motor de scanning de Terraform, com alguns benefícios adicionais:
Para mais informações sobre como o Trivy se compara ao tfsec e sobre a migração do tfsec para o Trivy, dê uma olhada no guia de migração.
O tfsec usa análise estática do seu código terraform para identificar possíveis má configurações.
concat()Avaliado como Adopt pelo Thoughtworks Tech Radar:
Para nossos projetos que usam Terraform, o tfsec rapidamente se tornou uma ferramenta padrão de análise estática para detectar riscos potenciais de segurança. É fácil integrá-lo a um pipeline de CI e possui uma biblioteca crescente de verificações para todos os principais provedores de nuvem e plataformas como Kubernetes. Dada a sua facilidade de uso, acreditamos que o tfsec pode ser uma boa adição a qualquer projeto Terraform.

Instale com brew/linuxbrew
brew install tfsec
Instale com Chocolatey
choco install tfsec
Instale com Scoop
scoop install tfsec
Script Bash (Linux):
curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bash
Você também pode baixar o binário para o seu sistema na página de releases.
Alternativamente, instale com Go:
go install github.com/aquasecurity/tfsec/cmd/tfsec@latest
Observe que usar go install instalará diretamente a partir do branch master e os números de versão não serão reportados via tfsec --version.
Os binários da página de releases são assinados com a chave de assinatura do tfsec D66B222A3EA4C25D5D1A097FC34ACEFB46EC39CE
Para mais informações, consulte a página de assinatura para instruções de verificação.
O tfsec irá escanear o diretório especificado. Se nenhum diretório for especificado, o diretório de trabalho atual será usado.
O status de saída será diferente de zero se o tfsec encontrar problemas; caso contrário, o status de saída será zero.
tfsec .
Como alternativa para instalar e executar o tfsec no seu sistema, você pode executá-lo em um contêiner Docker.
Há várias opções de Docker disponíveis
Para executar:
docker run --rm -it -v "$(pwd):/src" aquasec/tfsec /src
Uma extensão para Visual Studio Code está sendo desenvolvida para integrar os resultados do tfsec. Mais informações podem ser encontradas na página do tfsec no Marketplace
Se você quiser executar o tfsec no seu repositório como uma GitHub Action, você pode usar https://github.com/aquasecurity/tfsec-pr-commenter-action.
Agora você pode instalar a tarefa oficial do tfsec. Por favor, reporte quaisquer problemas/solicitações de funcionalidades no repositório da tarefa.
Você pode querer ignorar alguns avisos. Se desejar fazer isso, basta adicionar um comentário contendo tfsec:ignore:<rule> na linha do problema em seus modelos. Alternativamente, você pode adicionar o comentário na linha acima do bloco que contém o problema, ou no bloco do módulo para ignorar todas as ocorrências de um problema dentro do módulo.
Por exemplo, para ignorar uma regra de grupo de segurança aberta:
resource "aws_security_group_rule" "my-rule" {
type = "ingress"
cidr_blocks = ["0.0.0.0/0"] #tfsec:ignore:aws-vpc-no-public-ingress-sgr
}
...ou...
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 você não tiver certeza em qual linha adicionar o comentário, basta verificar a saída do tfsec para obter o número da linha do problema descoberto.
Você pode ignorar várias regras concatenando-as em uma única linha:
#tfsec:ignore:aws-s3-enable-bucket-encryption tfsec:ignore:aws-s3-enable-bucket-logging
resource "aws_s3_bucket" "my-bucket" {
bucket = "foobar"
acl = "private"
}
Você pode definir uma data de expiração para ignore com o formato yyyy-mm-dd. Este é um recurso útil quando você quer garantir que um problema ignorado não seja esquecido e seja revisado no futuro.
#tfsec:ignore:aws-s3-enable-bucket-encryption:exp:2025-01-02
Uma ignorância como esta ficará ativa apenas até 2025-01-02; após esta data, ela será desativada.
Você pode querer excluir algumas verificações da execução. Se desejar fazer isso, basta adicionar o novo argumento -e check1,check2,etc ao seu comando
tfsec . -e general-secrets-sensitive-in-variable,google-compute-disk-encryption-customer-keys
Você pode incluir valores de um arquivo tfvars na verificação, usando, por exemplo: --tfvars-file terraform.tfvars.
O tfsec suporta muitos provedores populares de nuvem e plataformas
O tfsec foi projetado para ser executado em um pipeline de CI. Você pode querer executar o tfsec como parte do seu build sem saída colorida. Você pode fazer isso usando --no-colour (ou --no-color para nossos amigos americanos).
Você pode gerar os resultados do tfsec como JSON, CSV, Checkstyle, Sarif, JUnit ou apenas no formato legível por humanos. Use a flag --format para especificar o formato desejado.
Se você quiser integrar com os alertas de segurança do Github e incluir a saída das suas verificações do tfsec, você pode usar a action do Github tfsec-sarif-action para executar a análise estática e depois enviar os resultados para a aba de alertas de segurança.
Os alertas gerados para o tfsec-example-project têm esta aparência.

Quando você clica nos alertas do branch, obtém mais informações sobre o problema real.

Para mais informações sobre como adicionar alertas de segurança, consulte a documentação do GitHub
Se você precisar suportar versões do terraform que usam HCL v1 (terraform <0.12), você pode usar a versão v0.1.3 do tfsec, embora o suporte seja muito limitado e tenha menos verificações.
Sempre recebemos contribuições; grandes ou pequenas, podem ser atualizações de documentação, adição de novas verificações ou algo maior. Consulte o Guia de Contribuição para detalhes sobre como ajudar.
Feito com contributors-img.
tfsec é um projeto open source da Aqua Security.
Saiba mais sobre nosso trabalho open source e portfólio aqui.
Junte-se à comunidade e fale conosco sobre qualquer assunto na Discussão do GitHub ou no Slack.
| Nome da Imagem | Base | Comentário |
|---|
| aquasec/tfsec | alpine | Imagem tfsec normal |
| aquasec/tfsec-alpine | alpine | Exatamente igual ao aquasec/tfsec, mas para quem gosta de ser explícito |
| aquasec/tfsec-ci | alpine | tfsec sem entrypoint — útil para builds de CI onde você deseja substituir o comando |
| aquasec/tfsec-scratch | scratch | Uma imagem construída sobre scratch — sem firulas, apenas executa o tfsec |
| Verificações |
|---|
| Verificações AWS |
| Verificações Azure |
| Verificações GCP |
| Verificações CloudStack |
| Verificações DigitalOcean |
| Verificações GitHub |
| Verificações Kubernetes |
| Verificações OpenStack |
| Verificações Oracle |