
Detecte violações de conformidade e segurança em Infraestrutura como Código para mitigar riscos antes de provisionar infraestrutura nativa em nuvem.
- Este projeto não é mais mantido. O repositório está arquivado e não serão aceitas novas atualizações, issues ou pull requests.
- Sinta-se à vontade para fazer um fork se quiser continuar o desenvolvimento.

Terrascan é um analisador estático de código para Infrastructure as Code (IaC). O Terrascan permite que você:
Para testar o Terrascan no seu navegador, veja o Sandbox do Terrascan https://www.tenable.com/terrascan
Para saber mais sobre as funcionalidades e capacidades do Terrascan, consulte o portal de documentação: https://runterrascan.io
Junte-se à comunidade Tenable 👇
O Terrascan oferece várias formas de instalação e também está disponível como imagem Docker. Consulte a página de releases do Terrascan para obter a versão mais recente das builds em todas as plataformas suportadas. Selecione o binário correto para sua plataforma.
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
AURUsuários do ArchLinux e Manjaro podem instalar com:
yay -S terrascan
brewUsuários do Homebrew podem instalar com:
$ brew install terrascan
O Terrascan também está disponível como imagem Docker e pode ser usado da seguinte forma
$ docker run tenable/terrascan
Consulte a documentação para mais informações.
Para examinar seu código em busca de problemas de segurança, execute o seguinte (por padrão, examina Terraform).
$ terrascan scan
Nota: O Terrascan será encerrado com um código de erro se forem encontrados erros ou violações durante a varredura.
| Cenário | Código de Saída |
|---|---|
| Resumo da varredura tem erros e violações | 5 |
| Resumo da varredura tem erros mas sem violações |
O Terrascan pode ser integrado em pipelines de CI/CD para aplicar melhores práticas de segurança. Consulte nossa documentação para integrar com seu pipeline.
Você pode usar o comando terrascan com as seguintes opções:
$ 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.
As políticas do Terrascan são escritas usando a linguagem de política Rego. Cada arquivo rego inclui um arquivo JSON de "regra" que define metadados para a política. Por padrão, o Terrascan baixa as políticas dos repositórios do Terrascan durante a primeira varredura. No entanto, se você quiser baixar as políticas mais recentes, é necessário executar o processo de inicialização. Consulte Uso para obter informações sobre o processo de inicialização.
Nota: O comando de varredura executará implicitamente o processo de inicialização se nenhuma política for encontrada.
Você pode usar a flag --find-vuln para coletar vulnerabilidades conforme relatadas em seu registro como parte da saída do Terrascan. Atualmente, o Terrascan suporta Elastic Container Registry (ECR), Azure Container Registry, Google Container Registry e Google Artifact Registry.
A flag --find-vuln pode ser usada ao examinar arquivos IaC da seguinte forma:
$ terrascan scan -i <provedor IaC> --find-vuln
Para mais informações e explicação de como configurar seu ambiente para autenticar com as APIs do registro, consulte a documentação de uso.
Por padrão, o Terrascan examina toda a sua configuração em relação a todas as políticas. No entanto, o Terrascan suporta configuração granular de políticas e recursos.
Leia mais sobre instrumentação em arquivo e o arquivo de configuração em nosso site de documentação.
Por enquanto, algumas dicas rápidas:
Você pode configurar o Terrascan para ignorar uma política (regra) específica ao examinar um recurso. Siga estas etapas dependendo da sua plataforma:
Use scripts Terraform para configurar o Terrascan a ignorar regras inserindo um comentário com a frase "ts:skip=<NOMEDAREGRA><MOTIVODOSKIP>". O comentário deve ser incluído dentro do recurso, conforme mostrado no exemplo abaixo.

Em yamls do Kubernetes, você pode configurar o Terrascan para ignorar políticas adicionando uma anotação conforme visto no trecho abaixo.

Use o arquivo de configuração do Terrascan para selecionar manualmente as políticas que devem ser incluídas ou excluídas de toda a varredura. Isso é adequado para casos de uso específicos. Use a opção de supressão "no arquivo" para especificar recursos que devem ser excluídos de serem testados contra políticas selecionadas. Isso garante que as políticas sejam ignoradas apenas para recursos específicos, e não para todos os recursos.

A saída padrão do Terrascan é uma lista de violações presentes no IaC examinado. Um exemplo de saída:

O Terrascan pode ser compilado localmente. Isso é útil se você quiser estar na versão mais recente ou ao desenvolver o Terrascan. gcc e Go 1.19 ou superior são necessários.
$ 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
Para saber mais sobre como desenvolver e contribuir com o Terrascan, consulte o guia de contribuição.
Acreditamos que ter uma comunidade aberta e inclusiva beneficia a todos. Observe que este projeto é lançado com um Código de Conduta do Contribuidor. Ao participar deste projeto, você concorda em cumprir seus termos.
O Terrascan é licenciado sob a Licença Apache 2.0.
| 4 |
| Resumo da varredura tem violações mas sem erros | 3 |
| Resumo da varredura não tem violações nem erros | 0 |
| Comando de varredura falha devido a entradas inválidas | 1 |