Integrar SAFETAGGY no CI/CD com GitHub Actions
Automatize varreduras de segurança a cada Pull Request. Se o score cair abaixo do aceitável, o build falha e o time é notificado antes do merge.
Pré-requisitos
- Conta no SAFETAGGY com plano Pro ou Business
- API key gerada em Configurações → API Keys (veja a documentação da API)
- Repositório no GitHub com Actions habilitado
1. Configurar a API key como secret
No seu repositório, vá em Settings → Secrets and variables → Actions e crie um secret chamado SAFETAGGY_API_KEY com o valor da sua chave (começa com stk_).
2. Criar o workflow
Crie o arquivo .github/workflows/safetaggy.yml no seu repositório:
name: SAFETAGGY Security Scan
on:
pull_request:
branches: [main, master]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- name: Iniciar varredura SAFETAGGY
id: scan
run: |
RESPONSE=$(curl -s -X POST \
https://www.safetaggy.com.br/api/v1/scans \
-H "Authorization: Bearer ${{ secrets.SAFETAGGY_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{
"url": "https://staging.seusite.com.br",
"appType": "saas",
"consent": true
}')
SCAN_ID=$(echo $RESPONSE | jq -r '.id')
echo "scan_id=$SCAN_ID" >> $GITHUB_OUTPUT
- name: Aguardar resultado
id: result
run: |
SCAN_ID=${{ steps.scan.outputs.scan_id }}
for i in $(seq 1 30); do
RESULT=$(curl -s \
https://www.safetaggy.com.br/api/v1/scans/$SCAN_ID \
-H "Authorization: Bearer ${{ secrets.SAFETAGGY_API_KEY }}")
STATUS=$(echo $RESULT | jq -r '.status')
if [ "$STATUS" = "completed" ]; then
SCORE=$(echo $RESULT | jq -r '.overallScore')
echo "score=$SCORE" >> $GITHUB_OUTPUT
echo "Score: $SCORE/100"
break
fi
echo "Status: $STATUS — aguardando 10s..."
sleep 10
done
- name: Verificar score minimo
run: |
SCORE=${{ steps.result.outputs.score }}
echo "Score obtido: $SCORE"
if [ "$SCORE" -lt 70 ]; then
echo "::error::Score de seguranca abaixo do minimo (70). Score: $SCORE"
exit 1
fi
echo "Score aprovado!"
3. Personalizar o score mínimo
No exemplo acima, o build falha se o score for menor que 70. Ajuste o valor conforme a maturidade de segurança do seu projeto:
| Score mínimo | Recomendado para |
|---|---|
| 90+ | Apps que processam dados financeiros ou de saúde |
| 70+ | SaaS B2B e e-commerce |
| 50+ | Landing pages e MVPs em fase inicial |
4. Interpretar os resultados
A resposta da API inclui os achados individuais com severidade. Use essas informações para criar annotations no PR:
# Adicione ao step de resultado:
CRITICAL=$(echo $RESULT | jq '.findings.critical')
HIGH=$(echo $RESULT | jq '.findings.high')
if [ "$CRITICAL" -gt 0 ]; then
echo "::error::$CRITICAL vulnerabilidade(s) critica(s) encontrada(s)"
fi
if [ "$HIGH" -gt 0 ]; then
echo "::warning::$HIGH vulnerabilidade(s) alta(s) encontrada(s)"
fiPara detalhes completos sobre os campos retornados, consulte a documentação da API.
Dicas de uso
- Use um ambiente de staging para evitar rate limits no domínio de produção
- Combine com varreduras agendadas via webhooks para monitoramento contínuo
- O cooldown entre scans é de 30-60 segundos por domínio — evite disparar múltiplos workflows simultâneos
- O limite de varreduras por dia segue o seu plano (5 / 30 / ilimitado)
Pronto para automatizar?
Comece agora com uma varredura gratuita e veja o que o SAFETAGGY encontra no seu site.
Iniciar varredura