feat(config): Implementar suporte a arquivo de configuracao .envguard.yaml #15
Copy link
Copy link
Closed
Labels
coreCore engine, scanning, and detectorsCore engine, scanning, and detectorsenhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Milestone
Description
Contexto & Requisitos
Permitir que projetos personalizem as regras de varredura do \�nvguard\ atraves de um arquivo de configuracao .envguard.yaml\ (ou .envguard.yml), possibilitando definir padroes customizados de nomes de arquivos, regras de excecao/allowlist especificas e sobrescrita de niveis de severidade.
Tarefas
- Definir modelos de dados da configuracao (\Config, \RuleConfig, \IgnorePatterns, \SeverityOverrides).
- Implementar carregamento e parsing seguro de .envguard.yaml\ / .envguard.yml\ a partir da raiz do projeto ou caminho customizado (--config).
- Validar schema e campos da configuracao com mensagens de erro claras para sintaxe invalida.
- Integrar as configuracoes carregadas ao motor de varredura (\scanner.Scanner) e aos detectores (\detector.Detector).
- Adicionar testes unitarios com diversos cenarios de arquivo de configuracao (valido, invalido, vazio, sobrescritas).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
coreCore engine, scanning, and detectorsCore engine, scanning, and detectorsenhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Activity
joaooncode commentedon Sep 2, 2026
Declaração do Problema
Atualmente, o
envguarddepende exclusivamente de padrões e regras fixas (hardcoded) para detectar arquivos de ambiente, templates permitidos (allowlist), diretórios ignorados e níveis de severidade. Projetos com estruturas de diretórios específicas (ex: pastas customizadas de build ou vendor), convenções próprias de nomes de arquivos de ambiente (ex:*.env.vault,.env.secret) ou políticas internas de risco não conseguiam personalizar o comportamento doenvguardsem alterar o código-fonte.Solução
Implementação do suporte completo a arquivo de configuração (
.envguard.yaml/.envguard.yml) e à flag de linha de comando--config(-c). A configuração permite declarar:scanner.ignore_dirs: diretórios adicionais a serem ignorados durante a varredura.detector.custom_patterns: padrões adicionais de arquivos a serem identificados como arquivos de ambiente.detector.allowlist: padrões adicionais de arquivos seguros (templates/exemplos).detector.severity_overrides: mapeamentos explícitos para sobrescrever o nível de severidade de arquivos correspondentes a padrões específicos.O parsing é estrito (fail-fast) contra erros de sintaxe ou campos desconhecidos para evitar brechas acidentais de segurança. As listas customizadas do usuário estendem (append) os padrões seguros embutidos por padrão.
Histórias de Usuário (User Stories)
.envguard.yamlou.envguard.ymlna raiz do projeto para que as regras da minha equipe sejam aplicadas automaticamente.--config <path>(ou-c) aos comandos para aplicar um arquivo de configuração centralizado ou específico de ambiente.backend.env.vault), quero especificardetector.custom_patternspara que o envguard identifique esses arquivos como arquivos de ambiente..env.local.sample), quero especificar regras emdetector.allowlistpara que esses arquivos sejam classificados como informativos (info) e não causem falha na verificação..tmp_build), quero especificarscanner.ignore_dirspara que o envguard não varra nem aponte arquivos dentro desses diretórios.detector.severity_overridespara que arquivos críticos específicos (como.env.production) sempre disparem severidadecritical, independentemente do status de rastreamento no Git..envguard.yaml, quero que o envguard falhe rapidamente com uma mensagem de erro clara indicando o problema de sintaxe ou validação, evitando executar varreduras com configuração corrompida..envguard.yaml, quero que o envguard execute silenciosamente usando as configurações padrão embutidas sem emitir erros.Decisões de Implementação
internal/configresponsável por:Config,ScannerConfig,DetectorConfigeSeverityOverridecom tags YAML.--config->.envguard.yamlno diretório alvo ->.envguard.ymlno diretório alvo -> padrões embutidos.gopkg.in/yaml.v3(KnownFields(true)) e validação semântica.internal/detector.Detectorpara suportar padrões customizados de ambiente e allowlist estendida.internal/scanner.Scannerpara aceitarconfig.Config, combinando diretórios ignorados customizados com os padrões, repassando padrões ao detector e aplicandoseverity_overridesna classificação de cada finding.internal/cli(comandosscanecheck) para aceitar as flags--confige-ce carregar a configuração antes de iniciar o scanner.Decisões de Testes
internal/cli): Execução ponta a ponta dos comandosscanecheckcom flag--config, arquivos YAML válidos, inválidos (validando código de saída 2) e ausentes.internal/config): Testes unitários validando defaults, ordem de descoberta, erros estritos de sintaxe YAML e lógica de validação.internal/scannereinternal/detector): Testes de varredura com diretórios ignorados customizados, padrões extras de .env, allowlist customizada e overrides de severidade.Fora de Escopo (Out of Scope)
http://...).ENVGUARD_IGNORE_DIRS).Notas Adicionais
version: "1"na raiz do YAML é opcional, mas recomendado para compatibilidade futura.