https://github.com/jpradoar/devsecops
DevSecOps demo
https://github.com/jpradoar/devsecops
devops devsecops nerdearla
Last synced: 4 months ago
JSON representation
DevSecOps demo
- Host: GitHub
- URL: https://github.com/jpradoar/devsecops
- Owner: jpradoar
- License: gpl-3.0
- Created: 2025-07-15T17:19:18.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-09-21T14:12:35.000Z (9 months ago)
- Last Synced: 2025-09-21T16:09:29.792Z (9 months ago)
- Topics: devops, devsecops, nerdearla
- Language: HTML
- Homepage: https://jpradoar.github.io/devsecops/vuln_scans/insecure_image_vuln_scan.html
- Size: 103 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DevSecOps sin humo [](https://nerdear.la/speakers/jonathan-prado/)
[](https://github.com/jpradoar/devsecops/actions)
[](https://github.com/pre-commit/pre-commit)
Este repositorio acompaña mi charla en Nerdear.la 2025 sobre cómo aplique DevSecOps en la vida real, con todo lo bueno, lo malo y los incidentes que aprendí a contener.
Mi objetivo es dejar ejemplos prácticos y documentación abierta para que cualquier persona pueda usar, forkar y reutilizar lo que a mí me funcionó. Y que esto quede reflejado en el README como un primer "camino paso a paso" del pipeline completo (con jobs y stages). Obviamente cada empresa/proyecto es un mundo asi que acá sentite libre de modificar lo que necesites o usar lo que te convenga.
### Estructura del repo
├── app/ # Ejemplo de aplicación vulnerable + Dockerfile
├── terraform/ # Infraestructura como código (IaC)
├── vuln_scans/ # Ejemplo de reporte HTML de escaneo
├── img/ # Diagramas e imágenes de apoyo
├── internal-checks.sh # Script de validaciones internas
├── data.json # Datos de ejemplo (para triggers/demos)
├── README.md # Este archivo :)
### Principios
1. **Cambio de mindset**: No es checklist, es entender qué puede salir mal.
2. **Shift Left**: Seguridad desde el inicio del ciclo de vida. (...o lo antes posible)
3. **Seguridad proactiva**: Evaluar lo que se va a publicar, evitar manejar secretos,tokens etc
4. **Automatización con propósito**: IaC, pipelines auditables, rollback seguro.
5. **Monitoreo y observabilidad**: Logs, métricas, trazas y validaciones post-deploy.
6. **Cultura colaborativa**: Dev + Sec + Ops trabajando con feedback continuo.
# Cómo usar este repo
### 1. Pre-commit hooks
Ejemplo: **pre-commit-config.yaml**
- Validación de secrets.
- Linters y formateo.
- Scanners básicos antes de subir el código.
Acordate de instalar pre-commit en tu local, o si sos muy mañoso usalo en un docker.
pip install pre-commit (al momento de la charla use pre-commit v4.3.0)
pre-commit install
pre-commit run --all-files
Ejemplo:
echo "superdupersecret" > hola.txt
git add hola.txt
git commit -m "nuevo archivo"
# Ojo, hacer el pre-commit antes del push...
pre-commit run -a
git push origin
Resumen
Archivos nuevos necesitas git add antes de que pre-commit los vea.
Archivos en staging se analizan automáticamente en cada git commit.
Revisión global usa pre-commit run --all-files.
### 2. Pipelines CI/CD
Ejemplo: .github/workflows/DevSecOps.yaml
1. 🟢 Pre-checks linters, pre-commit, secretos.
2. 🛠 Build & Test compilación reproducible, tests unitarios.
3. 🔍 Análisis de seguridad SAST + IaC scanning (tfsec, trivy).
4. 🚀 Deploy controlado Terraform (terraform/).
5. 🧪 Validaciones post-deploy DAST / Nuclei.
6. 📊 Monitoreo y observabilidad logs, métricas y trazas.
7. 🔁 Feedback loop métricas visibles + vulnerabilidades evitadas.
Pre-checks
- Validar formato y calidad de código (linters).
- Pre-commit hooks para evitar secrets, claves o tokens en commits.
Build & Test
- Compilación o build reproducible.
- Tests unitarios y de integración.
Análisis de seguridad
- SAST: análisis estático de código.
- IaC scanning: tfsec para Terraform, trivy para imágenes de contenedor.
Deploy controlado
- Despliegue con IaC.
- Deploy auditado (commit = deploy).
- Feedback inmediato si algo falla.
Validaciones post-deploy
- DAST con Nuclei u otras herramientas.
- Validación de endpoints y URLs públicas.
Monitoreo y observabilidad
- Logs, métricas y trazas.
- Alertas tempranas de incidentes.
Feedback loop
- Métricas visibles en el pipeline.
- Reporte de Vulns evitadas antes de llegar a Prod (esto alimenta los pre-commits)
y ayuda a otros miembros del Team
### 3. Ciclo de vida DevSecOps
| Objetivo | Descripción | Ejemplo en repo |
|--- |--- |--- |
| Planificación | Casos de uso y abuso, definición de riesgos | docs/ (próximamente) |
| Desarrollo | Linters, pre-commit, code reviews | app/, .pre-commit-config.yaml |
| Integración continua | SAST, control de secretos, builds reproducibles | .github/workflows/DevSecOps.yaml |
| Deploy | IaC validado, escaneo de imágenes, pipelines auditables | terraform/ |
| Post-deploy | Validaciones automáticas (Nuclei, scanners), monitoreo y observabilidad |vuln_scans/ |
| Feedback | Incidentes evitados, métricas de seguridad y mejoras continuas |internal-checks.sh |
### 4. Recursos útiles
| Tool | descripción | uso generico |
|--- |--- |--- |
| tfsec | análisis de seguridad en Terraform. | mitigar lo más posible antes de deployar |
| trivy | escaneo de vulnerabilidades. | validar que tan criticos son nuestros CVEs |
| Nuclei | validación de endpoints y URLs públicas | simular lo que veria un atacante |
| pre-commit| filtro de hooks locales | evitar que datos sensibles o vulerables lleguen al repo |
### 5. Contribuciones
Este repo está pensado para crecer con ejemplos reales de la comunidad.
Si tenés una receta, script o pipeline que te funcionó, por mas minimo o simple que sea, hacé una PR!!!

Recordá que todo lo que sube al repo, queda en el log, asi que si ya subiste un secreto o similar, cambialo y para la prox podes implementar pre-commits para evitar subir cualquier tipo de password, secreto o dato potencialmente peligroso :D
## Ejemplos para la demo
#### Triggering (errores intencionales)
sed -i 's/xxxxx/60f41f67-b43b-4552-bb80-f2f29b861ef99/g' data.json && \
sed -i 's/zzzzz/SuperSecretPassword1234!/g' app/app.py && \
sed -i 's/99.99.99.99\/32/0.0.0.0\/0/g' terraform/sg.tf
git pull; git status ; git add --all ; git commit -m "fix: fake workflow" ; git push origin main
#### Restorear
sed -i 's/60f41f67-b43b-4552-bb80-f2f29b861ef99/xxxxx/g' data.json && \
sed -i 's/SuperSecretPassword1234!/zzzzz/g' app/app.py && \
sed -i 's/0.0.0.0\/0/99.99.99.99\/32/g' terraform/sg.tf
git pull; git status ; git add --all ; git commit -m "fix: rollback workflow" ; git push origin main
#### Reset to first commit
git reset --hard 8f19d216282d1516ad3fedf7b28e2bebb23b36c6
git push -f origin main