Skip to content

🛡️ Segurança & DevSecOps

Mentalidade: A segurança é uma responsabilidade partilhada. O objetivo é “Shift Left” — detetar vulnerabilidades o mais cedo possível no ciclo de desenvolvimento, onde o custo de correção é menor.

🚀 Ciclo de Segurança na Pipeline (Shift Left)

Section titled “🚀 Ciclo de Segurança na Pipeline (Shift Left)”

Para um sistema ser considerado seguro a nível sénior, a pipeline de CI/CD deve incluir:

  1. SAST (Static Application Security Testing): Analisa o código fonte em busca de padrões inseguros (ex: SQL Injection, Hardcoded secrets).
    • Ferramentas: SonarQube, Snyk, Semgrep.
  2. SCA (Software Composition Analysis): Verifica se as bibliotecas (npm, pip, nuget) têm vulnerabilidades conhecidas (CVEs).
    • Ferramentas: Dependabot, OWASP Dependency-Check.
  3. DAST (Dynamic Testing): Testa a aplicação em runtime, simulando ataques externos (ex: XSS).
  4. Secret Scanning: Garante que chaves de API ou passwords não são commitadas no Git.

Nunca, sob circunstância alguma, os segredos devem estar em ficheiros .env no servidor ou em variáveis de ambiente planas na Cloud.

  • Vaults: Utilização de serviços como HashiCorp Vault, AWS Secrets Manager ou Azure Key Vault.
  • Rotação Automática: Segredos devem ter validade curta e ser rodados automaticamente para limitar o raio de impacto em caso de fuga.
  • Princípio do Menor Privilégio: Cada serviço (ou pod no K8s) deve ter apenas as permissões estritamente necessárias para a sua função.

🌐 Hardening de APIs e Proteção de Rede

Section titled “🌐 Hardening de APIs e Proteção de Rede”

Um sénior desenha APIs assumindo que o cliente pode ser malicioso.

  • Rate Limiting & Throttling: Proteção contra ataques de negação de serviço (DoS) e brute-force.
  • WAF (Web Application Firewall): Filtragem de tráfego malicioso antes de chegar à aplicação.
  • Security Headers: Configuração rigorosa de Content-Security-Policy (CSP), HSTS e X-Frame-Options.

Conhecimento obrigatório das vulnerabilidades mais comuns, como:

  • Broken Access Control: Garante que o Utilizador A não consegue ver os dados do Utilizador B mudando apenas um ID no URL.
  • Insecure Deserialization: Cuidado ao aceitar objetos complexos de fontes não confiáveis.

⚖️ Estratégia de Defesa (O olhar do Sénior)

Section titled “⚖️ Estratégia de Defesa (O olhar do Sénior)”

Não confies apenas numa firewall. Se o atacante passar pela rede, ele deve encontrar uma base de dados encriptada. Se aceder à base de dados, os dados sensíveis devem estar com hashing (bcrypt/argon2).

Em ambientes de alta conformidade, é necessário gerar uma “lista de ingredientes” (SBOM) de todo o software e sub-dependências para garantir a rastreabilidade em caso de uma vulnerabilidade global (como foi o caso do Log4j).

💡 Nota de Senioridade: Segurança não é sobre dizer “não” a novas funcionalidades, mas sobre criar paved roads (caminhos seguros por defeito). Se a empresa fornece uma biblioteca de autenticação pré-aprovada, os developers vão usá-la em vez de tentarem criar a sua própria (quase sempre insegura).


  • [[DevOps-Cloud-Kubernetes]]
  • [[Backend-Autenticacao-JWT]]
  • [[Qualidade-Code-Review]]