Integração com GitLab CI

O Security Gate roda 86 checks de segurança contra a URL do seu site e reprova o job se algo grave ficou exposto. Scan 100% passivo — nenhum payload de ataque.

Pré-requisitos

1. Adicione a variável de CI/CD

Em Settings → CI/CD → Variables → Add variable:

2. Adicione o job ao .gitlab-ci.yml

stages:
  - deploy
  - post-deploy

security_gate:
  stage: post-deploy
  image: python:3.12-slim
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'
  script:
    - pip install httpx
    - |
      python -c "
      import httpx, sys, json
      r = httpx.post('https://klarim.net/api/gate/scan',
          headers={'X-API-Key': '$KLARIM_KEY'},
          json={'url': 'https://meusite.com.br', 'fail_on': 'critical'},
          timeout=120)
      data = r.json()
      print(json.dumps(data, indent=2))
      sys.exit(0 if data['passed'] else 1)"

A referência à variável no GitLab é $KLARIM_KEY (sem ${{ }}).

3. Configuração avançada

Nível de reprovação (fail_on)

Timeout

Sites lentos: timeout=180 (default 120s).

Metadata (rastreabilidade)

"metadata": {
    "commit": "$CI_COMMIT_SHA",
    "branch": "$CI_COMMIT_REF_NAME",
    "ci": "gitlab-ci"
}

4. Exemplo de output

PASS

Score: 90/100 🟢
Critical: 0 | High: 1 | Medium: 0
✅ PASSED

FAIL

Score: 45/100 🔴
Critical: 2 | High: 3 | Medium: 1
❌ FAILED

FAQ

Rodar só em merge requests? Use rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'.

Como vejo o histórico? Dashboard → Security Gate → Histórico de runs.