Imagem de capa do projeto: Nexus Security Gate 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 lucide shield-check com icon_bg #ecfdf5, icon.svg próprio (escudo + check) e style: design.css.
  • Registros: registerTab("nexus-security-gate", "Security Gate", "shield-check", tab.php, "DevSecOps") e registerDoc(...).
  • 23 actions de API (plugin.php, via PluginManager::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 com X-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 EXISTS gate_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_settings em 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 por block_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; env NEXUS_GATE_URL/TOKEN/PROJECT/BLOCK_CRITICAL/BLOCK_HIGH/BIN_DIR; progress bar TTY; PATH com uploads/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 em gate_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-tools instala jq+gitleaks; gate_cli_raw serve o CLI; notas de hospedagem compartilhada.
  • Ferramentas no host: gate_install_tools — perfis essential/normal/complete (espelho do nexus-security.yml), binários estáticos em uploads/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 (.git sob raiz, profundidade 1-6, paths permitidos árvore NEXUS//var/www//home//opt//srv), gate_repos_scan (roda nexus-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_register na whitelist de bypass do api.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-commit freia secrets (gitleaks) e pre-push freia secrets + SAST (semgrep) + SCA (trivy), bloqueando commit/push com CRITICAL (e HIGH se configurado).
  • Instalação em 1 comando: one-liner curl | bash com 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 — rule com 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 /gate e 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.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

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

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.