Ingeniería de Datos - 2026
Apuntes del curso de Ingeniería de Datos
Bienvenido/a al repositorio de ID_2026.
Este proyecto está completamente preconfigurado con un Dev Container en Visual Studio Code que incluye todas las herramientas necesarias para análisis de seguridad (SBOM, CodeQL y Grype).
📋 Requisitos Previos
Antes de comenzar, asegúrate de tener instalados:
| Herramienta | Enlace | Nota |
|---|---|---|
| Docker | https://www.docker.com/get-started | Debe estar corriendo en tu sistema |
| Visual Studio Code | https://code.visualstudio.com/ | Editor recomendado |
| Dev Containers Extension | Extensión | Necesaria para abrir el Dev Container |
✅ Verificar Docker
Abre una terminal y verifica que Docker está correctamente instalado:
docker --version
docker run hello-worldDeberías ver la versión de Docker y un mensaje de éxito.
🚀 Inicio Rápido (5-10 minutos)
Paso 1: Clonar el repositorio
git clone https://github.com/dci-courses/id_2026.git
cd id_2026Paso 2: Abrir en VS Code
code .Paso 3: Reconstruir y Abrir el Dev Container
Una vez que VS Code esté abierto:
- Presiona
Ctrl + Shift + P(Windows/Linux) oCmd + Shift + P(Mac) - Escribe:
Dev Containers: Rebuild and Reopen in Container - Selecciona la opción y presiona Enter
Esto iniciará el proceso de construcción del contenedor.
Paso 4: Esperar a la Construcción ⏳
Durante la construcción, se realizarán:
- ✅ Instalación de dependencias Python
- ✅ Configuración de Jupyter Kernel
- ✅ Descarga de CodeQL query packs
- ✅ Actualización de BD de Grype
- ✅ Verificación de herramientas
Esto puede tomar 3-10 minutos la primera vez. Ten paciencia y no cierres VS Code.
Verás mensajes en la terminal indicando el progreso:
Building image...
[... logs del proceso ...]
Successfully built container
Paso 5: Archivo de Bienvenida
Después de la construcción, se abrirá automáticamente WELCOME.md con:
- 📚 Guía completa del proyecto
- 🚀 Instrucciones de uso
- 📊 Descripción de scripts disponibles
- ❓ Solución de problemas comunes
Si no se abre automáticamente, puedes abrirlo manualmente: - Presiona Ctrl + O - Busca WELCOME.md
Paso 6: Configura el kernel de Jupyter
- Abre cualquier notebook
.ipynb - Al ejecutar una celda por primera vez, selecciona el kernel: Python (ingenieria-datos)
⚙️ Qué Se Instala Automáticamente
El Dev Container preinstala automáticamente:
🐍 Python y Herramientas
| Herramienta | Versión | Uso |
|---|---|---|
| Python | 3.11 | Lenguaje base |
| uv | Latest | Gestor de dependencias (más rápido que pip) |
| Jupyter | Latest | Notebooks interactivos |
| Pandas | Latest | Análisis de datos |
🔐 Herramientas de Seguridad
| Herramienta | Versión | Uso |
|---|---|---|
| CodeQL CLI | 2.25.1 | Análisis estático de seguridad (vulnerabilidades en código) |
| Grype | Latest | Escaneo de vulnerabilidades en dependencias |
| Syft | Latest | Generación de SBOMs (inventario de componentes) |
| Node.js | 20 | Necesario para análisis JavaScript con CodeQL |
📦 Query Packs de CodeQL
Se descargan automáticamente: - codeql/python-queries - Análisis de Python - codeql/javascript-queries - Análisis de JavaScript/TypeScript - codeql/java-queries - Análisis de Java
✨ Después de Abrir el Contenedor
1. Verificar que Todo Funciona
Abre una terminal en VS Code (Ctrl + ``) y ejecuta:
uv run scripts/generate_codeql.py --diagnose
uv run scripts/generate_grype.py --diagnoseDeberías ver:
✓ CodeQL CLI: CodeQL version 2.25.1
✓ Grype CLI: Grype version X.X.X
✓ Node.js: v20.x.x
✓ npm: x.x.x
✓ Query pack codeql/python-queries disponible
✓ Query pack codeql/javascript-queries disponible
✓ Grype DB status: Database ready
2. Explorar el Proyecto
Lee el contenido de: - WELCOME.md: Guía general del proyecto - nbs/sbom/generacion_sbom.ipynb: Notebook para generar SBOMs - nbs/vuln/generacion_codeql.ipynb: Notebook para ejecutar análisis estático (CodeQL) - nbs/vuln/generacion_grype.ipynb: Notebook para escanear vulnerabilidades en dependencias (Grype)
3. Ejecutar tu Primer Análisis
Idealmente puedes realizar el proceso a través de los notebooks para la mejor experiencia, sin embargo, también puedes ejecutar los archivos de forma individual.
Desde la terminal:
# Generar SBOMs para los repositorios
uv run scripts/generate_sboms.py
# Ejecutar análisis de seguridad estático con CodeQL
uv run scripts/generate_codeql.py
# Escanear vulnerabilidades en dependencias con Grype
uv run scripts/generate_grype.pyLos resultados se guardarán en data/results/
🧭 Estructura del Proyecto
id_2026/
├── data/
│ ├── repos/ # Repositorios a analizar
│ ├── results/ # Resultados de análisis (JSON)
│ └── repos.json # Configuración de repositorios
├── nbs/ # Notebooks Jupyter
│ ├── sbom/ # Análisis de SBOMs
│ └── vuln/ # Análisis de vulnerabilidades
│ ├── generacion_codeql.ipynb # Análisis estático
│ ├── explicacion_script_codeql.ipynb
│ ├── generacion_grype.ipynb # Escaneo de dependencias
│ └── explicacion_script_grype.ipynb
├── scripts/ # Automatización
│ ├── generate_sboms.py
│ ├── generate_codeql.py
│ ├── generate_grype.py
│ └── add_submodules.py
├── .devcontainer/ # Configuración del Dev Container
├── README.md # Será generado automáticamente
└── WELCOME.md # Guía general (se abre automáticamente)
🐛 Solución de Problemas
❌ “Dev Containers extension not found”
Solución: Instala la extensión desde el Marketplace de VS Code - Presiona Ctrl + Shift + X - Busca “Dev Containers” - Instala la extensión oficial de Microsoft
❌ “Docker daemon is not running”
Solución: Asegúrate de que Docker Desktop esté abierto - Windows: Abre Docker Desktop desde el menú Inicio - Mac: Abre Docker Desktop desde Applications - Linux: Ejecuta sudo systemctl start docker
❌ “La construcción del contenedor es muy lenta”
Normal para la primera vez (puede tomar 5-10 minutos) - Se descargan imágenes base - Se compilan herramientas como CodeQL - Se descarga la BD de Grype - Próximas aperturas serán mucho más rápidas
❌ “Python kernel no aparece en Jupyter”
Solución: Reinicia el kernel manualmente 1. Abre un notebook .ipynb 2. Presiona Ctrl + Shift + P 3. Selecciona Jupyter: Select Kernel 4. Elige Python (ingenieria-datos)
❌ “CodeQL análisis falla”
Ejecuta el diagnóstico:
uv run scripts/generate_codeql.py --diagnoseVerifica que todos los componentes tengan ✓
❌ “Grype análisis falla”
Ejecuta el diagnóstico:
uv run scripts/generate_grype.py --diagnoseVerifica que Grype CLI y su BD estén disponibles
💡 Tips Útiles
Primeros comandos después de abrir el contenedor:
# Ver qué repositorios están listos para analizar ls data/repos/ # Ver resultados previos ls data/results/Agregar nuevos repositorios:
- Edita
data/repos.json - Ejecuta:
uv run scripts/add_submodules.py && git submodule update --init --recursive - Corre los análisis nuevamente
- Edita
Reconstruir el contenedor si necesitas actualizar dependencias:
Ctrl + Shift + P→Dev Containers: Rebuild Container
Acceder a la terminal dentro del contenedor:
- `Ctrl + `` para abrir la terminal integrada
📚 Próximos Pasos
- Lee
WELCOME.mdpara entender la estructura completa - Explora los notebooks en
nbs/para ver ejemplos de uso - Ejecuta
--diagnosepara verificar herramientas - Corre tu primer análisis con los repositorios incluidos
❓ ¿Necesitas Ayuda?
- Consulta
WELCOME.mdpara instrucciones detalladas - Revisa los notebooks para ejemplos paso a paso
- Verifica el diagnóstico:
uv run scripts/generate_codeql.py --diagnoseyuv run scripts/generate_grype.py --diagnose