O hook infra sinaliza erros de configuração em infraestrutura como código que dá para decidir só pelo arquivo: uma rede aberta para o mundo, uma permissão curinga, um segredo em um manifesto, um contêiner rodando como root, um valor não confiável em um shell de CI. Ele lê apenas arquivos de IaC (.tf/.tf.json/.hcl, Dockerfile*, .github/workflows/**). É o engine determinístico por trás da especialização infra, no modo scan ou check.
Como executar
- Varrer o código
- Verificar um trecho
npx lagune read infra # scans every IaC file
npx lagune read infra --dir infra # scans a directory
npx lagune read infra --file Dockerfile # scans a single file
Passe o trecho com --pattern e o tipo dele com --kind (terraform, dockerfile ou github-actions).
npx lagune read infra --kind terraform --pattern 'actions = ["*"]' # => iam-wildcard
npx lagune read infra --kind dockerfile --pattern 'FROM node:20' # => mutable-tag
A varredura imprime até duas seções. Infrastructure risks found termina com código de saída diferente de zero e reúne os defeitos decidíveis (um ingress 0.0.0.0/0 em uma porta sensível, uma declaração IAM curinga, um segredo em manifesto, encrypted = false, um módulo git sem versão fixada, uma imagem que roda explicitamente como root, um curl | sh, uma injeção de script em CI, permissions: write-all). Infrastructure hardening advisories não altera o código de saída (uma tag de imagem base mutável, uma action fixada por tag). Uma execução sem achados imprime no infrastructure risks found.
Como ler o veredito
O modo check imprime a tag de maior severidade que encontrou (por exemplo, public-ingress, iam-wildcard, root-user, curl-pipe, script-injection, write-all), uma tag de alerta (mutable-tag, unpinned-action) ou safe. Só uma tag com severidade de achado termina com código de saída diferente de zero.
Opções da CLI
| Opção | Valor | Descrição |
|---|---|---|
--pattern | um trecho | Verifica um trecho. Exige --kind. Repita para verificar vários. |
--kind | terraform | dockerfile | github-actions | O tipo pelo qual o trecho é julgado. |
--dir | um diretório | Limita a varredura a um diretório. Pode ser repetida e combinada com --file. |
--file | um arquivo | Limita a varredura a um único arquivo. Pode ser repetida e combinada com --dir. |
Sem nenhuma opção, ele varre todos os arquivos de IaC do projeto. --pattern não pode ser combinado com --dir nem com --file.
O hook pega os casos evidentes e decidíveis: a ausência de criptografia, a exposição de pull_request_target e o escopo certo de IAM são julgamentos que a especialização infra continua cobrindo.
Perguntas frequentes
Terraform/HCL (.tf, .tf.json, .hcl), Dockerfiles e os YAML de workflows e actions do GitHub Actions dentro de .github/. Ele alcança esses arquivos mesmo que os scanners de código-fonte os ignorem.
