Disciplina: Secure Programming and Coding | Professor: Fernando Leonid | Faculdade: UniFECAF
Esta página tem objetivo educacional, servindo como material de apoio para a disciplina de Secure Programming and Coding.
A segurança no desenvolvimento de software é uma abordagem integrada que busca identificar e mitigar vulnerabilidades desde as fases iniciais do ciclo de vida de desenvolvimento. Existem três metodologias principais que complementam essa visão:
SDL é uma metodologia estruturada criada pela Microsoft que integra práticas de segurança em cada fase do desenvolvimento. É como um "checklist de segurança" que acompanha todo o projeto.
Objetivo: Reduzir vulnerabilidades e riscos de segurança desde o design até a manutenção.
| Característica | Descrição |
|---|---|
| Estruturado | Processo bem definido e documentado |
| Abrangente | Cobre todas as fases do SDLC |
| Proativo | Identifica riscos antes da codificação |
| Metodologia | Processo formal com papéis definidos |
| Documentação | Requer documentação detalhada |
SSDLC é um termo genérico que descreve qualquer ciclo de vida de desenvolvimento que integra segurança. É mais uma abordagem conceitual do que uma metodologia específica como SDL.
Objetivo: Incorporar segurança como parte integral do processo de desenvolvimento, independentemente de qual metodologia (Waterfall, Agile, etc.) seja utilizada.
O SSDLC é flexível e pode ser adaptado a diferentes abordagens:
DevSecOps é a evolução do DevOps que coloca segurança como responsabilidade compartilhada de todos. Combina Development (desenvolvimento), Security (segurança) e Operations (operações).
Objetivo: Automatizar verificações de segurança no pipeline CI/CD para detectar e corrigir problemas rapidamente, sem sacrificar a velocidade.
| Categoria | Tipo | Exemplos de Ferramentas |
|---|---|---|
| SAST (Análise Estática) | Encontra vulnerabilidades no código | SonarQube, Checkmarx, Fortify |
| DAST (Análise Dinâmica) | Testa a aplicação em execução | OWASP ZAP, Burp Suite, Acunetix |
| SCA (Composição) | Verifica dependências e bibliotecas | Snyk, WhiteSource, Blackduck |
| Container Scanning | Analisa imagens Docker | Trivy, Clair, Harbor |
| IaC (Infraestrutura) | Verifica configurações de infra | Terraform Scan, CloudFormation Guard |
| Secrets Management | Gerencia credenciais seguramente | HashiCorp Vault, AWS Secrets Manager |
Developer faz commit
↓
Pre-commit hooks (SAST local)
↓
Push para repositório
↓
CI/CD Pipeline inicia
├─ Build: Compilação
├─ SAST: Análise estática (SonarQube)
├─ SCA: Verificação de dependências (Snyk)
├─ Container: Scan de imagem Docker
├─ DAST: Análise dinâmica (ZAP)
└─ Compliance: Checklist automático
↓
Tudo OK? → Deploy para staging
↓
Testes de integração com segurança
↓
Aprovação manual (se necessário)
↓
Deploy para produção
↓
Monitoramento contínuo (SIEM, alertas)
| Aspecto | SDL | SSDLC | DevSecOps |
|---|---|---|---|
| Tipo | Metodologia específica | Conceito genérico | Cultura + Prática |
| Origem | Microsoft (2004) | Conceito de indústria | Evolução do DevOps |
| Abordagem | Estruturada e formal | Principios adaptativos | Automatizada e contínua |
| Fases Principais | 7 fases bem definidas | Integrado ao SDLC | Pipeline CI/CD |
| Velocidade | Mais lenta (formal) | Variável | Rápida (automatizada) |
| Automação | Parcial | Variável | Alta ✓ |
| Documentação | Extensa ✓ | Moderada ~ | Mínima ~ |
| Custo Inicial | Alto | Médio | Médio-Alto |
| Curva de Aprendizado | Steep | Média | Média |
| Melhor para... | Projetos críticos e formais | Qualquer projeto | Equipes ágeis e DevOps |
| Feedback | Periódico | Contínuo | Imediato ✓ |
| Responsabilidade | Centralizada | Compartilhada | Totalmente Distribuída ✓ |
Muitas organizações modernas combinam os três:
• Use SSDLC como princípio guia (conceitual)
• Implemente SDL practices nas fases críticas (design, verificação)
• Automatize com DevSecOps no pipeline CI/CD
Responda as perguntas abaixo para verificar sua compreensão dos conceitos. Clique em cada resposta para ver se está correta!