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-world

Deberí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_2026

Paso 2: Abrir en VS Code

code .

Paso 3: Reconstruir y Abrir el Dev Container

Una vez que VS Code esté abierto:

  1. Presiona Ctrl + Shift + P (Windows/Linux) o Cmd + Shift + P (Mac)
  2. Escribe: Dev Containers: Rebuild and Reopen in Container
  3. 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

  1. Abre cualquier notebook .ipynb
  2. 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 --diagnose

Deberí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.py

Los 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 --diagnose

Verifica que todos los componentes tengan ✓

❌ “Grype análisis falla”

Ejecuta el diagnóstico:

uv run scripts/generate_grype.py --diagnose

Verifica que Grype CLI y su BD estén disponibles


💡 Tips Útiles

  1. 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/
  2. Agregar nuevos repositorios:

    • Edita data/repos.json
    • Ejecuta: uv run scripts/add_submodules.py && git submodule update --init --recursive
    • Corre los análisis nuevamente
  3. Reconstruir el contenedor si necesitas actualizar dependencias:

    • Ctrl + Shift + PDev Containers: Rebuild Container
  4. Acceder a la terminal dentro del contenedor:

    • `Ctrl + `` para abrir la terminal integrada

📚 Próximos Pasos

  1. Lee WELCOME.md para entender la estructura completa
  2. Explora los notebooks en nbs/ para ver ejemplos de uso
  3. Ejecuta --diagnose para verificar herramientas
  4. Corre tu primer análisis con los repositorios incluidos

❓ ¿Necesitas Ayuda?

  • Consulta WELCOME.md para instrucciones detalladas
  • Revisa los notebooks para ejemplos paso a paso
  • Verifica el diagnóstico: uv run scripts/generate_codeql.py --diagnose y uv run scripts/generate_grype.py --diagnose