Capítulo 18 — Proyecto técnico supervisado
Mapa de la lección
Lección 18 publicada. Mapa, ejemplo, EX071.
flowchart TD
N0["Resultados de aprendizaje y conexión"]
N1["18.1 Elegir un proyecto"]
N2["18.2 Fases"]
N3["18.3 Sellar la evidencia"]
N4["18.5 Rúbrica de evaluación del proyecto"]
N5["18.6 Práctica continua"]
N6["Síntesis del capítulo"]
N7["Capítulo 1: EX001–EX004"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX071"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje y conexión"]
N1["18.1 Elegir un proyecto"]
N2["18.2 Fases"]
N3["18.3 Sellar la evidencia"]
N4["18.5 Rúbrica de evaluación del proyecto"]
N5["18.6 Práctica continua"]
N6["Síntesis del capítulo"]
N7["Capítulo 1: EX001–EX004"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX071"]
[Resultados de aprendizaje y conexión]
|
v
[18.1 Elegir un proyecto]
|
v
[18.2 Fases]
|
v
[18.3 Sellar la evidencia]
|
v
[18.5 Rúbrica de evaluación del proyecto]
|
v
[18.6 Práctica continua]
|
v
[Síntesis del capítulo]
|
v
[Capítulo 1: EX001–EX004]
|
v
[Ejemplo resuelto] --> [Ejercicio EX071]
Resultados de aprendizaje y conexión
Al terminar este capítulo debería ser capaz de:
- planificar y ejecutar bajo supervisión un proyecto técnico acotado en un entorno crítico: alcance, línea base, cambio, verificación, registro de diagnóstico y traspaso;
- reunir el paquete de evidencias de un proyecto y sellarlo con un manifiesto de resúmenes SHA-256 y un sello registrado por separado;
- detectar cualquier cambio posterior en la evidencia sellada y explicar lo que un sello demuestra y lo que no;
- presentar el proyecto para su evaluación con una rúbrica y declarar con honestidad sus puntos abiertos.
Este capítulo cierra el curso. Aplica todo lo anterior a una única tarea realista, y su resultado es lo que un empleador o un evaluador pediría ver: no una afirmación de competencia, sino la evidencia de ella.
18.1 Elegir un proyecto
Un buen proyecto supervisado es acotado, valioso y comprobable. Ejemplos tomados de este libro: bastionar el conducto entre la red corporativa y el centro de control y verificarlo (capítulos 10–11); cerrar la elusión por los routers de estación en todas las estaciones (capítulo 13); desplegar la detección de derivas en los servidores del centro de control (capítulo 14); construir y probar la cadena de detección con una captura saneada y reproducida (capítulo 17). Todo proyecto necesita un supervisor (aquí L. Ferreira) y un autorizador responsable de los sistemas afectados (aquí A. Mensah, por Kestrel Water).
Acuerde antes del primer día el supervisor, el responsable que firma el alcance y los criterios de éxito. Elija un conducto o una clase de equipos, no el programa entero. Anote los puntos abiertos que espera dejar, de modo que la honestidad sobre los límites se planifique en lugar de improvisarse en la evaluación.
18.2 Fases
- Alcance (capítulo 5): propósito, sistemas, acciones, ventana, personas, condiciones de parada, tratamiento de la evidencia, firmado.
- Línea base: exportaciones de configuración y resúmenes antes de cambiar nada (capítulo 14); resultados actuales de las pruebas (capítulo 11).
- Cambio: bajo un registro de cambio con marcha atrás (capítulo 10).
- Verificación: pruebas positivas y negativas, cada requisito verificado, fallido o sin probar.
- Registro de diagnóstico durante todo el proyecto, con las cuatro etiquetas (capítulo 13).
- Traspaso: registro de la configuración tal como se construyó, instrucciones de trabajo, puntos abiertos con responsables (capítulo 16).
- Paquete de evidencias: todo lo anterior, sellado.
No omita los resúmenes de la línea base aunque el cambio parezca pequeño; sin ellos no puede demostrar qué cambió. Mantenga abierto el registro de diagnóstico durante toda la ventana, incluidas las interrupciones y los intentos fallidos. El paquete de evidencias va al final, cuando ya existen los documentos de traspaso que incluir en él.
18.3 Sellar la evidencia
Un manifiesto enumera cada elemento con su resumen SHA-256 (FIPS 180-4). El sello es el resumen del propio manifiesto. Registre el sello fuera del paquete (en el registro de cambio, en un correo al supervisor, en el formulario de evaluación), porque quien pueda editar el paquete también puede editar un manifiesto guardado dentro de él. Más adelante, recalcular los resúmenes de los elementos muestra si algo ha cambiado; recalcular el resumen del manifiesto y compararlo con el sello registrado externamente muestra si el manifiesto se ha alterado.
Lo que un sello demuestra: que los elementos son, byte a byte, lo que eran cuando se sellaron. Lo que no demuestra: que fueran ciertos, completos o creados cuando afirman. Eso depende de cómo se recogieron (capítulo 5) y de registros independientes (registros del cortafuegos en el recolector, tickets de cambio en su propio sistema). Para garantías más sólidas, las organizaciones usan firmas con claves custodiadas por un tercero o un sellado de tiempo de confianza; el principio es el mismo.
18.4 Ejemplo resuelto: el proyecto del conducto de KW-04 (sintético)
El proyecto de R. Kaur eliminó la regla corporativa amplia R4 de fw-01 (CHG-2215), verificó el resultado e investigó por el camino el evento de KW-09. El paquete de evidencias se sella y, una semana después, se vuelve a verificar. Lab 18 (guárdelo como lab18.py y ejecútelo con python3 lab18.py):
# Lab 18 - seal and re-verify a project evidence package (offline, standard library only)
# Synthetic artefacts from the supervised project; written only inside a temporary directory.
import hashlib, pathlib, tempfile
artefacts = {
"01-scope.md": "Scope: KW-04 conduit hardening; authorized by A. Mensah (Kestrel Water) 2026-10-05.\n",
"02-before-fw.txt": "R4 allow 10.30.0.0/16 10.20.0.0/24 tcp any\n",
"03-after-fw.txt": "R4 removed CHG-2215\n",
"04-tests.csv": "test,result\nT4,pass\nT5,pass\nT9,pass\n",
"05-troubleshooting-log.md": "07:05Z KW-09 missing; H4 consistent; RTU config preserved as E-17.\n",
}
with tempfile.TemporaryDirectory() as tmp:
d = pathlib.Path(tmp)
for n, t in artefacts.items(): (d / n).write_text(t)
lines = [f"{hashlib.sha256((d / n).read_bytes()).hexdigest()} {n}" for n in sorted(artefacts)]
(d / "MANIFEST.sha256").write_text("\n".join(lines) + "\n")
seal = hashlib.sha256((d / "MANIFEST.sha256").read_bytes()).hexdigest()
print("manifest:")
for l in lines: print(" ", l[:16] + "...", l.split(" ")[1])
print("seal (record this outside the package):", seal[:24])
(d / "04-tests.csv").write_text("test,result\nT4,pass\nT5,pass\nT9,pass\nT10,pass\n") # later edit
for l in (d / "MANIFEST.sha256").read_text().splitlines():
h, n = l.split(" ")
ok = hashlib.sha256((d / n).read_bytes()).hexdigest() == h
print(f"verify {n:<26} {'OK' if ok else 'MISMATCH'}")
Salida esperada (Python 3.13.5):
manifest:
72d8be01e70067c7... 01-scope.md
8d52d15a3e02b7f8... 02-before-fw.txt
2cd59665641b4779... 03-after-fw.txt
d6eccc2e2ac61ecb... 04-tests.csv
6d2525605f11521c... 05-troubleshooting-log.md
seal (record this outside the package): 062b9a1fd700dd0eac04b3a8
verify 01-scope.md OK
verify 02-before-fw.txt OK
verify 03-after-fw.txt OK
verify 04-tests.csv MISMATCH
verify 05-troubleshooting-log.md OK
Cuatro elementos se verifican; 04-tests.csv no. Alguien añadió una línea T10 después del sellado. Puede ser una prueba posterior legítima, pero debe añadirse como un elemento nuevo, fechado por separado y con su propia entrada, no editando un archivo sellado. El evaluador pide a R. Kaur que restaure la versión sellada desde el archivo (su resumen debe coincidir con el manifiesto) y que presente T10 como 06-tests-addendum.csv en una versión nueva y resellada del paquete, con ambos sellos registrados.
18.5 Rúbrica de evaluación del proyecto
| Criterio | 3 (cumple el resultado técnico) | 1 |
|---|---|---|
| Alcance y autorización | Alcance firmado con responsable, ventana y condiciones de parada | Aprobación verbal |
| Corrección técnica | El cambio cumple los requisitos; sin daños colaterales | Parcial o perjudicial |
| Verificación | Todos los requisitos verificados o explícitamente abiertos, pruebas positivas y negativas con evidencia | Solo recuentos de aprobados |
| Diagnóstico | Hipótesis, predicciones, descartes, conservación | Narración |
| Documentación | Instrucciones de trabajo ejecutables, registro de la configuración tal como se construyó, sin secretos | Notas de memoria |
| Evidencia | Manifiesto, sello externo, ejecución de verificación | Carpeta de capturas de pantalla |
| Honestidad sobre los límites | Puntos abiertos con responsables; puntos ciegos declarados | «Todo hecho» |
18.6 Práctica continua
Después del curso, mantenga tres hábitos: verificar antes de informar, conservar antes de cambiar y corregir los relojes antes de ordenar los eventos. Mantenga los laboratorios contenidos y no pruebe nunca una infraestructura real sin la autorización escrita de su responsable. Revise las normas y orientaciones cuando cambien; todas las fuentes de este libro están fechadas en octubre de 2026. Convierta el trabajo del curso en un portafolio: planes con alcance, salidas de los laboratorios con sus versiones de Python, registros de diagnóstico y el paquete sellado de este capítulo, con cada sello registrado fuera de su paquete. Cuando pase a una versión nueva de Python, vuelva a ejecutar los laboratorios y compare las salidas; una diferencia es un hallazgo que hay que explicar, no ocultar. Busque trabajo supervisado en el que pueda repetir el ciclo completo (alcance, línea base, cambio, verificación, traspaso) sobre un sistema real con la firma de su responsable, y pida a su supervisor que lo puntúe con la rúbrica de 18.5.
18.7 Errores comunes y límites
- Proyectos demasiado amplios para verificarlos.
- Sellos guardados dentro del paquete.
- Editar elementos sellados en lugar de añadir otros nuevos.
- Informar solo de los éxitos.
- El Lab 18 usa texto en memoria y un directorio temporal; los paquetes reales incluyen exportaciones binarias y capturas grandes, que se resumen igual pero necesitan un almacenamiento con control de acceso.
Comprobaciones que detectan estos errores:
- Antes del primer día, escriba cada requisito como una prueba con un resultado esperado; si un requisito no puede probarse dentro de la ventana, reduzca el alcance.
- Registre el sello al menos en un lugar que los editores del paquete no puedan cambiar, como el registro de cambio (CHG-2215) o un correo al supervisor.
- Antes del traspaso, vuelva a ejecutar la verificación del manifiesto; resuelva cualquier MISMATCH restaurando el archivo sellado y añadiendo un anexo fechado (EX071), nunca resellando encima de la versión 1.
- Enumere en el traspaso los requisitos fallidos y sin probar, con sus responsables, como hace EX072.
Ejercicios — capítulo 18
EX069 — Alcance del proyecto. Objetivo: definir un proyecto supervisado. Entradas: elija un proyecto de 18.1. Pasos: redacte el alcance, los requisitos (comprobables) y la lista de elementos que contendrá el paquete de evidencias. Evidencia esperada: plan de una página. Rúbrica: 3 = todos los elementos del alcance, al menos cuatro requisitos comprobables con pruebas positivas y negativas, elementos asociados a las fases, supervisor y autorizador nombrados; 2 = una laguna; 1 = genérico; 0 = nada.
EX070 — Verifique un sello. Objetivo: usar el sello correctamente. Entradas: el Lab 18. Pasos: modifique el programa para que, al final, recalcule también el resumen del manifiesto y lo compare con el sello registrado; después edite también MANIFEST.sha256 para que coincida con el archivo de pruebas manipulado y muestre lo que informa la comparación del sello. Evidencia esperada: código y salidas de ambos casos. Rúbrica: 3 = primer caso: el sello coincide (manifiesto intacto) mientras un elemento no coincide; segundo caso: todos los elementos «OK» frente al manifiesto editado, pero la comparación del sello falla; explica por qué el sello debe guardarse fuera; 2 = un caso; 1 = intentado; 0 = nada.
EX071 — Gestione la adición tardía. Objetivo: gestionar los cambios en la evidencia. Entradas: la edición de T10. Pasos: redacte paso a paso el procedimiento que describió el evaluador, incluido qué se registra y dónde. Evidencia esperada: procedimiento. Rúbrica: 3 = restaurar el original sellado desde el archivo y comprobar su resumen; añadir el anexo como elemento nuevo con fecha y recolector; generar una nueva versión del manifiesto y un nuevo sello; registrar ambos sellos externamente con el motivo; no sobrescribir nunca la versión 1; 2 = falta el registro externo; 1 = «editar y resellar»; 0 = nada.
EX072 — Autoevaluación. Objetivo: aplicar la rúbrica con honestidad. Entradas: el proyecto de R. Kaur tal como se describe en este capítulo y en los capítulos 10–13. Pasos: puntúe cada criterio de la rúbrica con una frase de evidencia y enumere los puntos abiertos. Evidencia esperada: tabla puntuada y puntos abiertos. Rúbrica: 3 = puntuaciones justificadas a partir del texto (por ejemplo, verificación limitada por REQ-4 hasta que se elimine R6; criterio de evidencia rebajado por la edición posterior al sellado hasta que se corrija), los puntos abiertos incluyen R6, la elusión por el router de KW-04 en las demás estaciones, la cobertura de REQ-6 y el desenlace del incidente de KW-09, cada uno con responsable; 2 = puntuaciones sin evidencia; 1 = todo 3; 0 = nada.
Síntesis del capítulo
Un proyecto supervisado muestra la competencia técnica como evidencia: un alcance firmado, una línea base, un cambio controlado, la verificación de cada requisito, un registro de diagnóstico, documentación ejecutable y un paquete sellado. Un sello demuestra que la evidencia no ha cambiado desde el sellado, si se registra fuera del paquete; no demuestra que la evidencia fuera cierta. Declare qué queda abierto, quién es su responsable y qué no pudo ver.
Siga estudiando — capítulo 18 de 18
← Capítulo 17 · Índice de capítulos del curso · Siguiente curso desde el índice de capítulos →
Este es el último capítulo de este curso; el índice enlaza con el siguiente curso del itinerario completo de estudio.