EM ANDAMENTO
Resumo técnico
Plugin DevSecOps do NEXUS que executa scans de segurança no pre-commit e pre-push, antes de o código chegar ao GitHub. A CLI instala hooks, roda scanners e envia resultados autenticados ao painel, que aplica políticas de bloqueio, cria tarefas e mantém inventário, métricas e automação para repositórios locais ou registrados.
Escopo executado
plugin.json— v1.0.0, categoria DevSecOps,protected: false(não core), ícone lucideshield-checkcomicon_bg #ecfdf5,icon.svgpróprio (escudo + check) estyle: design.css.- Registros:
registerTab("nexus-security-gate", "Security Gate", "shield-check", tab.php, "DevSecOps")eregisterDoc(...). - 23 actions de API (
plugin.php, viaPluginManager::registerApiAction) —gate_status(modo/tools/last_scan/metrics),gate_requirements(check de tools),gate_settings/gate_settings_save(config + rotate_token),gate_install_hooks(scripts pre-commit/pre-push + env_example + passos),gate_bootstrap(one-liner + script + notas),gate_bootstrap_sh(script raw p/curl | bash, público com token),gate_cli_raw(CLI raw, público com token),gate_repos_browse/discover/save/scan/auto_tick(repos locais do host),gate_install_tools(scanners no host,profile/tools),gate_upload(upload do CLI, público comX-Gate-Token),gate_register(registro de repo pelo CLI, público com token),gate_registered/save/scan(inventário),gate_metrics,gate_scans(paginado),gate_fastr/gate_fastr_suggest(slash/gate). - Banco:
gate_install()no load — CREATE TABLE IF NOT EXISTSgate_scan_results(id PK, repo_name, branch, commit_sha, scanner, findings_json, counts por severidade, blocked, upload_source, project, created_at; índices repo/created/blocked/scanner). - Config:
security_gate_settingsem config do DB — enabled, upload_token, block_on_critical, block_on_high, auto_create_tasks, default_project, min_severity_for_task, repos_root, watched_repos, auto_scan, repos_max_depth, registered_repos, tool_profile. - Upload:
gate_upload— token próprio (X-Gate-Token/body), resolve projeto (associação → upload → default NEXUS), deriva counts dos findings, bloqueio porblock_on_critical/block_on_high,block_reasons(até 12), auto-tarefas (CRITICAL/HIGH), registra repo no inventário. - Tarefas:
gate_create_tasks—[Gate][SEV] scanner — rule, min_severity_for_task, máx. 5/scan, prioridade 4 critical / 3 high, fallback de scan bloqueado sem findings detalhados. - CLI:
cli/nexus-gate(bash) —--status/--install/--commit/--push; envNEXUS_GATE_URL/TOKEN/PROJECT/BLOCK_CRITICAL/BLOCK_HIGH/BIN_DIR; progress bar TTY; PATH comuploads/security-gate/bin+~/.local/share/nexus-gate/bin;cli/install.sh(symlink em~/.local/bin). - Hooks:
hooks/pre-commit+hooks/pre-push(templates) e geração dinâmica emgate_install_hooks()(path absoluto, env de exemplo). - Bootstrap:
gate_bootstrap_sh(one-liner com token,curl | bash) — CLI +~/.config/nexus-gate/env+ hooks no repo;--with-toolsinstala jq+gitleaks;gate_cli_rawserve o CLI; notas de hospedagem compartilhada. - Ferramentas no host:
gate_install_tools— perfis essential/normal/complete (espelho donexus-security.yml), binários estáticos emuploads/security-gate/bin(persistente,.gitignore),gate_tool_catalog()(15 tools com bin/role/phase/tier/workflow),gate_install_via_uv()para Python (CPython embutido), download de tarballs + latest tag do GitHub. - Repos locais:
gate_repos_discover(.gitsob raiz, profundidade 1-6, paths permitidos árvore NEXUS//var/www//home//opt//srv),gate_repos_scan(rodanexus-gate --push),gate_repos_auto_tick(auto-scan). - Inventário CLI:
gate_register_repo(cap 200,mark_scan),gate_registered_list/save/scan— associação a projeto no painel. - Métricas:
gate_metrics_data— scans last hour/day/7d, blocked 7d, block_rate_7d, findings 7d (C/H/M/L). - Auth:
gate_upload/gate_bootstrap_sh/gate_cli_raw/gate_registerna whitelist de bypass doapi.php(linhas 58-60) — públicos com token próprio; demais actions exigem sessão/Bearer. - UI Alpine.js (
tab.php~42 KB): 5 abas — Visão geral, Repos, Scans, Instalar, Config; botão instalar ausentes; tabela de scans com chips blocked/C/H/M/L; one-liner com token para copiar.
Stack e ferramentas
- PHP 8 (sem framework) + MySQL 8 (
gate_scan_results— DDL no load) - Alpine.js + Tailwind CSS
- Bash (CLI
nexus-gate, hooks, install.sh, bootstrap) - Git Hooks (pre-commit / pre-push)
- Scanners: gitleaks, semgrep, trivy, trufflehog, grype, syft, osv-scanner, shellcheck, hadolint, checkov, bandit, nuclei (instaláveis no host por perfil)
- Sistema de plugins do NEXUS (
PluginManager::registerTab/registerDoc/registerApiAction) + Fast Responses (fastr.json)
Tags operacionais
- Security Gate
- Shift Left
- Secrets
- SAST
- SCA
- Pre-commit
- Pre-push
- Plugin NEXUS
- DevSecOps
Resultado operacional
- Shift Security Left real: o código é escaneado antes do GitHub —
pre-commitfreia secrets (gitleaks) epre-pushfreia secrets + SAST (semgrep) + SCA (trivy), bloqueando commit/push com CRITICAL (e HIGH se configurado). - Instalação em 1 comando: one-liner
curl | bashcom token instala o CLI, grava env e coloca os hooks no repo — o developer não precisa de VPS; o upload vai por HTTPS para o NEXUS. - Upload autenticado por token próprio (
X-Gate-Token) com projeto resolvido automaticamente (associação → upload → default) e auto-criação de tarefas[Gate][SEV] scanner — rulecom dedupe por severidade mínima. - Dashboard com 5 abas: visão geral (modo/tools/último scan), repos locais do host (discover
.git, watched, auto-scan), scans (histórico paginado com blocked e contagens C/H/M/L), instalação de scanners por perfil (essential/normal/complete) e config (block rules, token com rotate). - Métricas operacionais: scans/hora/dia/7d, block rate 7d e findings 7d por severidade — visíveis no
/gatee no dashboard. - Não conflita com o Security Scanner: Gate é a camada pré-push (hooks locais,
gate_*); Scanner é a camada pós-push (CI/import,security_*).
Andamento no GitHub (issues)
Painel em tempo real com as issues mais recentes do repositório.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
Resultados reais
Ferramenta de segurança Shift-Left que implementa gates automatizados em ganchos pré-commit e pré-push. Bloqueia o envio de credenciais expostas (Gitleaks/TruffleHog), vulnerabilidades de código (Semgrep) e falhas em dependências (Trivy) antes que o código alcance os repositórios remotos, reportando métricas diretamente ao painel NEXUS.
Arquitetura e organização
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- Bash
- Plugin NEXUS
- Git Hooks
Execução e operação
O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.
Screenshots
Falar sobre este projeto
Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.