Ambiente completo de DevSecOps local com CI/CD integrado, análise de segurança e monitoramento. Ideal para desenvolver habilidades em segurança de aplicações e automação em ambiente controlado.**
- Gerenciador de Tarefas com CRUD completo
- API REST para integração com CI/CD
- Health Check para monitoramento
- Interface web moderna e responsiva
- Repositório Git local
- Gitea Actions (CI/CD nativo)
- Interface web similar ao GitHub
- SSH para acesso remoto
- Bandit (SAST) - Análise estática de código Python
- Trivy (SCA/DAST) - Análise de vulnerabilidades em containers
- Docker Security - Boas práticas de containerização
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Flask App │ │ Gitea │ │ PostgreSQL │
│ (Port 5000) │ │ (Port 3000) │ │ (Database) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐
│ Docker Network │
│ devsecops-net │
└─────────────────┘
- Backend: Flask, SQLAlchemy
- Frontend: HTML5, CSS3, JavaScript
- Containerização: Docker, Docker Compose
- Git: Gitea (self-hosted)
- Database: SQLite (app), PostgreSQL (Gitea)
- Segurança: Bandit, Trivy
- Testes: pytest
- Docker Desktop
- Git
- Navegador web
git clone https://github.com/seu-usuario/pipeline-devsecops-docker-gitea.git
cd pipeline-devsecops-docker-giteadocker-compose up --build -d- Flask App: http://localhost:5001
- Health Check: http://localhost:5001/health
- Gitea: http://localhost:3000
- Acesse http://localhost:3000
- Configure o banco de dados:
- Database Type: PostgreSQL
- Host: gitea-db:5432
- Username: gitea
- Password: gitea
- Database Name: gitea
- Configure o administrador
- Crie seu primeiro repositório
Execute os testes automatizados:
docker-compose exec app python -m pytest tests/docker-compose exec app bandit -r .docker-compose exec app trivy fs .pipeline-devsecops-docker-gitea/
├── app/ # Pacote principal da aplicação Flask
│ ├── __init__.py # App factory (create_app)
│ ├── wsgi.py # Ponto de entrada WSGI
│ ├── api/ # Blueprints da API
│ ├── auth/ # Autenticação
│ ├── health/ # Healthcheck
│ ├── static/ # Arquivos estáticos
│ └── templates/ # Templates Jinja
├── wsgi.py # Wrapper/entry (desenvolvimento)
├── app.py # Script utilitário (se aplicável)
├── docker-compose.yml # Orquestração dos containers
├── Dockerfile # Containerização da aplicação
├── requirements.txt # Dependências Python
├── templates/
│ └── index.html # Interface web
├── tests/
│ └── test_app.py # Testes automatizados
├── .github/
│ └── workflows/
│ └── ci-cd.yml # Pipeline CI/CD
├── .gitignore # Arquivos ignorados pelo Git
└── README.md # Documentação
O projeto inclui um pipeline CI/CD configurado com:
- Build: Construção da imagem Docker
- Test: Execução de testes automatizados
- Security Scan: Análise de vulnerabilidades
- Deploy: Deploy automático (configurável)
- ✅ Usuário não-root no container
- ✅ Health checks configurados
- ✅ Dependências atualizadas
- ✅ Análise estática de código
- ✅ Scan de vulnerabilidades
- ✅ Network isolation
- ✅ SQL Injection (SQLAlchemy ORM)
- ✅ XSS (Template escaping)
- ✅ CSRF (Flask-WTF)
- ✅ Container escape (usuário não-root)
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Se você encontrar algum problema ou tiver dúvidas:
- Verifique os logs:
docker-compose logs app - Reinicie os containers:
docker-compose restart app - Cheque se a aplicação está escutando: acesse
http://localhost:5001/health - Verifique variáveis no
docker-compose.ymlpara o serviçoapp:FLASK_APP=wsgi:appPYTHONPATH=.command: flask run --host=0.0.0.0 --port=5000
- Confirme o volume está montado:
.:/app - Se aparecer erro "Could not import 'wsgi'" ou "No module named wsgi", garanta que o arquivo
wsgi.pyexiste emapp/wsgi.pye que o diretório de trabalho é/appno container. - Abra uma issue no GitHub
- Integração com SonarQube
- Análise de dependências com Safety
- Implementação de secrets management
- Configuração de backup automático
- Monitoramento com Prometheus/Grafana