GitLab CI/CD
Use GitLab CI/CD para executar scans SAST, SCA ou Flex (SAST + SCA) diretamente no repositório GitLab. O executor é a imagem pública e versionada ghcr.io/xmartsolutions/xguardian-ci:v1.0.0; nenhuma credencial de Registry é necessária para o cliente.
Os arquivos oficiais estão disponíveis no repositório público xguardian-gitlab-pipeline-example.
1. Criar a variável secreta
- no projeto GitLab, acesse Settings > CI/CD > Variables;
- clique em Add variable;
- informe
XGUARDIAN_API_TOKENem Key; - cole o PAT do XGuardian em Value;
- selecione Masked;
- selecione Protected somente se a pipeline rodará exclusivamente em branches ou tags protegidas;
- salve a variável.
2. Escolher a modalidade
| Objetivo | Job | Arquivo oficial |
|---|---|---|
| Analisar código-fonte | xguardian_sast |
SAST |
| Analisar dependências | xguardian_sca |
SCA |
| Analisar código e dependências | xguardian_flex |
Flex |
Copie apenas um dos arquivos para .gitlab-ci.yml na raiz do projeto na primeira homologação.
3. Configurar a aplicação
Em qualquer exemplo, substitua os valores abaixo antes de fazer commit:
| Variável | Como preencher |
|---|---|
XGUARDIAN_APP_ID |
ID numérico da aplicação no XGuardian. |
XGUARDIAN_APP_NAME |
Nome da aplicação no XGuardian. |
XGUARDIAN_SCAN_DIRECTORY |
Diretório a analisar; . representa a raiz do repositório. |
XGUARDIAN_EXCLUDE |
Opcional. Arquivos ou diretórios a ignorar, por exemplo node_modules/**,dist/**. |
XGUARDIAN_TRANSLATE |
true para relatório em português. |
XGUARDIAN_EXCLUDE não limita o scan ao que o cliente deseja analisar. Ele remove caminhos específicos do pacote enviado, sendo útil para dependências instaladas, artefatos gerados, caches e conteúdo fora do escopo.
Exemplo SAST
workflow:
rules:
- when: always
stages:
- security
variables:
XGUARDIAN_APP_ID: "1234"
XGUARDIAN_APP_NAME: minha-aplicacao
XGUARDIAN_SCAN_DIRECTORY: "."
XGUARDIAN_TRANSLATE: "true"
# XGUARDIAN_EXCLUDE: "node_modules/**,dist/**"
xguardian_sast:
stage: security
timeout: 75m
image:
name: ghcr.io/xmartsolutions/xguardian-ci:v1.0.0
entrypoint: [""]
variables:
XGUARDIAN_ENV: production
XGUARDIAN_SCAN_LOOKUP_ATTEMPTS: "30"
XGUARDIAN_SCAN_INITIAL_DELAY_SECONDS: "30"
XGUARDIAN_SCAN_LOOKUP_INTERVAL_SECONDS: "10"
XGUARDIAN_SCAN_POLL_ATTEMPTS: "30"
XGUARDIAN_SCAN_POLL_INTERVAL_SECONDS: "120"
script:
- xguardian-scan sast
rules:
- when: manual
Para SCA, mantenha a estrutura e altere o nome do job para xguardian_sca e o comando para xguardian-scan sca. Para Flex, use xguardian_flex e xguardian-scan flex. Os YAMLs completos e prontos para cópia estão no repositório público indicado acima.
4. Executar o scan
- faça commit do arquivo
.gitlab-ci.yml; - no GitLab, acesse Build > Pipelines;
- clique em New pipeline, escolha a branch e execute;
- quando a pipeline aparecer, clique no botão de execução manual do job escolhido;
- aguarde o job finalizar. O executor aguarda o processamento do scan antes de concluir a pipeline;
- consulte o resultado no XGuardian.
Checklist
XGUARDIAN_API_TOKENestá mascarado e não aparece no YAML;- o Application ID e o nome identificam a aplicação correta;
- a imagem usa a tag fixa
v1.0.0, nuncalatest; - a modalidade escolhida corresponde ao objetivo do scan;
- o primeiro teste foi realizado em branch controlada;
- os achados, commit e responsável pela execução foram conferidos na Central de Riscos.