<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lecciones-Aprendidas on Adur</title><link>https://adurrr.github.io/tags/lecciones-aprendidas/</link><description>Recent content in Lecciones-Aprendidas on Adur</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 20 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://adurrr.github.io/tags/lecciones-aprendidas/index.xml" rel="self" type="application/rss+xml"/><item><title>Lecciones aprendidas en DevSecOps</title><link>https://adurrr.github.io/p/lecciones-aprendidas-en-devsecops/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://adurrr.github.io/p/lecciones-aprendidas-en-devsecops/</guid><description>&lt;p&gt;DevSecOps se usa mucho en ofertas de trabajo y charlas. Pero detrás del buzzword hay lecciones reales que solo vienen de hacer el trabajo. De construir pipelines que se rompen cuando añades seguridad, de ver equipos ignorar herramientas que pasaste meses desplegando, hasta finalmente encontrar qué funciona.&lt;/p&gt;
&lt;p&gt;Estas son lecciones que aprendimos a base de golpes. Son opiniones fundamentadas, prácticas, moldeadas por experiencia real.&lt;/p&gt;
&lt;h2 id="la-seguridad-es-responsabilidad-de-todos"&gt;La seguridad es responsabilidad de todos
&lt;/h2&gt;&lt;p&gt;Suena a póster, pero es la lección más importante. Si la seguridad es solo del equipo de seguridad, ya perdiste.&lt;/p&gt;
&lt;p&gt;Los desarrolladores toman decisiones de seguridad cada vez que escriben código, lo sepan o no. Cómo validan entrada. Cómo manejan secretos. Cómo configuran acceso de red. Cada PR es un evento de seguridad.&lt;/p&gt;
&lt;p&gt;Lo que funciona: haz seguridad parte del flujo de desarrollo normal, no una puerta al final. Los desarrolladores aprenden cuando reciben feedback rápido sobre problemas de seguridad en su PR. Lo resientan cuando se enteran tres semanas después de un auditor.&lt;/p&gt;
&lt;p&gt;Lo hemos visto repetidamente: equipos que tratan seguridad como responsabilidad compartida encuentran menos vulnerabilidades críticas. Los que la aíslan las encuentran en las noticias.&lt;/p&gt;
&lt;h2 id="automatiza-todo-lo-que-puedas"&gt;Automatiza todo lo que puedas
&lt;/h2&gt;&lt;p&gt;Los procesos de seguridad manuales no escalan. Punto. Si tu revisión de seguridad es un humano leyendo una checklist, se saltará bajo presión de plazos, se aplicará de forma inconsistente y será odiada por todos los involucrados.&lt;/p&gt;
&lt;p&gt;Automatiza las cosas que se pueden automatizar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Escaneo de dependencias&lt;/strong&gt; en cada build de CI (Dependabot, Snyk, Trivy)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análisis estático&lt;/strong&gt; en cada pull request (Semgrep, SonarQube)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detección de secretos&lt;/strong&gt; como pre-commit hook y check de CI (gitleaks, detect-secrets)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escaneo de imágenes de contenedores&lt;/strong&gt; antes del despliegue (Trivy, Grype)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escaneo de Infrastructure as Code&lt;/strong&gt; (tfsec, Checkov, KICS)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance as Code&lt;/strong&gt; para cumplimiento de políticas en runtime (OPA, Kyverno)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El objetivo no es capturarlo todo automáticamente. El objetivo es capturar lo fácil automáticamente para que los revisores humanos puedan centrarse en lo difícil: fallos en la lógica de negocio, problemas de seguridad a nivel de diseño, modelado de amenazas.&lt;/p&gt;
&lt;h2 id="empieza-pequeño"&gt;Empieza pequeño
&lt;/h2&gt;&lt;p&gt;Uno de los mayores errores que hemos cometido es intentar asegurar todo de golpe. Despliegas SAST, DAST, SCA, escaneo de contenedores, escaneo de IaC y protección en runtime en un trimestre. El resultado: fatiga de alertas, rebelión de los desarrolladores y un muro de hallazgos sin resolver que nadie mira.&lt;/p&gt;
&lt;p&gt;Empieza con una herramienta, un pipeline, un equipo. Haz que funcione bien. Que los desarrolladores se sientan cómodos con ello. Resuelve los falsos positivos. Ajusta las reglas. Después expande.&lt;/p&gt;
&lt;p&gt;Una progresión práctica:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Mes 1&lt;/strong&gt;: Detección de secretos en pre-commit hooks y CI. Esto es poco controvertido y captura problemas reales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mes 2&lt;/strong&gt;: Escaneo de dependencias con creación automatizada de PRs para actualizaciones. Los desarrolladores ven el valor inmediatamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mes 3&lt;/strong&gt;: Escaneo de imágenes de contenedores bloqueando despliegues con vulnerabilidades críticas/altas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mes 4+&lt;/strong&gt;: Análisis estático, expandiendo conjuntos de reglas gradualmente.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cada paso debe ser estable antes de pasar al siguiente. Ir con prisas crea ruido, y el ruido enseña a la gente a ignorar alertas.&lt;/p&gt;
&lt;h2 id="la-cultura-blameless-importa"&gt;La cultura blameless importa
&lt;/h2&gt;&lt;p&gt;Cuando ocurre un incidente de seguridad porque alguien subió un secreto a un repo público, o porque una vulnerabilidad no se parcheó a tiempo, la respuesta importa más que el propio incidente.&lt;/p&gt;
&lt;p&gt;Si se culpa a la gente, ocultan cosas. No reportan casi-incidentes. Tapan errores. Y el siguiente incidente será peor porque nadie compartió las lecciones del anterior.&lt;/p&gt;
&lt;p&gt;Las postmortems blameless no consisten en librar a la gente de responsabilidad. Consisten en entender fallos sistémicos. Por qué fue posible subir un secreto? Por qué no había escaneo? Por qué el proceso de parcheo era lento? Arregla el sistema, no a la persona.&lt;/p&gt;
&lt;p&gt;Hemos comprobado que los equipos con culturas genuinamente blameless tienen posturas de seguridad significativamente mejores. La gente reporta cosas sospechosas. Piden ayuda pronto. Señalan riesgos antes de que se conviertan en incidentes.&lt;/p&gt;
&lt;h2 id="las-herramientas-no-bastan-sin-cambio-cultural"&gt;Las herramientas no bastan sin cambio cultural
&lt;/h2&gt;&lt;p&gt;Una vez desplegamos un pipeline de escaneo de seguridad completo con dashboards bonitos, notificaciones de Slack, creación de tickets en Jira, todo el paquete. Seis meses después, había 3.000 hallazgos sin resolver y el canal de Slack estaba silenciado por todos los desarrolladores.&lt;/p&gt;
&lt;p&gt;Las herramientas estaban bien. La cultura no estaba preparada.&lt;/p&gt;
&lt;p&gt;Antes de desplegar herramientas, invierte en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Formación&lt;/strong&gt;: Los desarrolladores necesitan entender por qué existe la herramienta y cómo actuar sobre sus hallazgos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ownership&lt;/strong&gt;: Alguien necesita ser dueño del backlog de hallazgos y hacer triaje. Si nadie es dueño, nadie lo hace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SLAs&lt;/strong&gt;: Define plazos claros para remediar hallazgos por severidad. Críticos en 48 horas. Altos en una semana. Medios en un sprint. Bajos en un trimestre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bucles de feedback&lt;/strong&gt;: Cuando una herramienta produce un falso positivo, debe haber una forma fácil de reportarlo y que se ajuste la regla. De lo contrario, los desarrolladores aprenden a ignorar todo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="invierte-en-la-experiencia-de-desarrollador-de-las-herramientas-de-seguridad"&gt;Invierte en la experiencia de desarrollador de las herramientas de seguridad
&lt;/h2&gt;&lt;p&gt;Si tu herramienta de seguridad hace la vida de los desarrolladores más difícil, encontrarán la forma de esquivarla. Esto no es un defecto de carácter. Es naturaleza humana y buen instinto de ingeniería: eliminar obstáculos para entregar.&lt;/p&gt;
&lt;p&gt;Las herramientas de seguridad que se adoptan son las que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ejecutan rápido&lt;/strong&gt;: Un escaneo SAST que tarda 20 minutos será esquivado. Uno que tarda 30 segundos será tolerado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Se integran nativamente&lt;/strong&gt;: Muestra resultados en la PR, no en un portal separado. Nadie quiere hacer login en otro dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tienen baja tasa de falsos positivos&lt;/strong&gt;: Cada falso positivo erosiona la confianza. Invierte tiempo en el ajuste.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proporcionan guía accionable&lt;/strong&gt;: &amp;ldquo;Vulnerabilidad de SQL injection en la línea 42&amp;rdquo; es inútil sin &amp;ldquo;así es como se arregla.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallan de forma elegante&lt;/strong&gt;: Si el escáner está caído, el pipeline debe avisar, no bloquear. La disponibilidad del pipeline de desarrollo no es negociable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo pensamos así: si un desarrollador tiene que cambiar su flujo de trabajo para acomodar una herramienta de seguridad, la herramienta ha fallado. Las mejores herramientas de seguridad son invisibles.&lt;/p&gt;
&lt;h2 id="monitorización-y-observabilidad-no-son-negociables"&gt;Monitorización y observabilidad no son negociables
&lt;/h2&gt;&lt;p&gt;No puedes asegurar lo que no puedes ver. La monitorización de seguridad no es opcional, y no es algo que se añade después.&lt;/p&gt;
&lt;p&gt;Qué significa esto en la práctica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Logging centralizado&lt;/strong&gt;: Todos los logs de aplicación, infraestructura y herramientas de seguridad en un solo lugar. Si tienes que hacer SSH a una máquina para leer logs, ya vas por detrás.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit trails&lt;/strong&gt;: Quién hizo qué, cuándo y desde dónde. Cada despliegue, cada cambio de configuración, cada solicitud de acceso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alertas sobre anomalías&lt;/strong&gt;: No solo &amp;ldquo;está el servicio arriba?&amp;rdquo; sino &amp;ldquo;es este patrón de acceso normal?&amp;rdquo; Volúmenes inusuales de llamadas a API, accesos desde nuevas ubicaciones, escalaciones de privilegios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguridad en runtime&lt;/strong&gt;: Herramientas como Falco para monitorización de runtime de contenedores. Saber cuándo algo inesperado ocurre en producción.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La monitorización también es cómo demuestras a auditores y clientes que tus controles de seguridad funcionan. &amp;ldquo;Confía en nosotros&amp;rdquo; no es una estrategia de cumplimiento.&lt;/p&gt;
&lt;h2 id="el-open-source-es-tu-aliado"&gt;El open source es tu aliado
&lt;/h2&gt;&lt;p&gt;Algunas de las mejores herramientas de seguridad disponibles son open source. Trivy, Falco, OPA, Semgrep, gitleaks, cosign, KICS, Checkov. El ecosistema es rico y madura rápidamente.&lt;/p&gt;
&lt;p&gt;Beneficios de las herramientas de seguridad open source:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Transparencia&lt;/strong&gt;: Puedes leer las reglas y entender exactamente qué se está comprobando.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comunidad&lt;/strong&gt;: Miles de contribuidores encontrando casos límite y añadiendo reglas de detección.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin vendor lock-in&lt;/strong&gt;: Puedes cambiar de herramienta sin renegociar un contrato.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coste&lt;/strong&gt;: Empieza gratis, escala según necesites.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto no significa que las herramientas comerciales no tengan su lugar. Algunas proporcionan agregación, gestión y soporte valiosos. Pero puedes construir un pipeline de seguridad muy sólido solo con herramientas open source, y creemos que todos los equipos deberían empezar por ahí.&lt;/p&gt;
&lt;h2 id="el-aprendizaje-continuo-es-esencial"&gt;El aprendizaje continuo es esencial
&lt;/h2&gt;&lt;p&gt;El panorama de amenazas cambia constantemente. Las herramientas cambian. Las mejores prácticas evolucionan. Lo que se consideraba seguro hace dos años puede tener un CVE hoy.&lt;/p&gt;
&lt;p&gt;Lo que hacemos para mantenernos al día:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dedicar tiempo al aprendizaje&lt;/strong&gt;: Al menos unas horas por sprint para que el equipo lea sobre nuevas vulnerabilidades, herramientas y técnicas. Esto no es un nice-to-have. Es un requisito profesional.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organizar CTFs internos y ejercicios de mesa&lt;/strong&gt;: Nada enseña seguridad como intentar romper cosas. Los ejercicios regulares mantienen las habilidades afiladas y revelan brechas en tus defensas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Participar en la comunidad&lt;/strong&gt;: Asistir a meetups, contribuir a open source, leer advisories. La comunidad de seguridad es generosa con el conocimiento. Aprovéchalo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisar y actualizar&lt;/strong&gt;: Revisiones trimestrales de tu tooling de seguridad, políticas y procedimientos de respuesta a incidentes. Lo que funcionó el trimestre pasado puede no funcionar el próximo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reflexiones-finales"&gt;Reflexiones finales
&lt;/h2&gt;&lt;p&gt;DevSecOps no es un destino. No hay un punto donde digas &amp;ldquo;terminamos, somos seguros.&amp;rdquo; Es una práctica continua de reducir riesgo, mejorar visibilidad, construir una cultura donde seguridad sea tan natural como escribir tests.&lt;/p&gt;
&lt;p&gt;La lección más importante: lo perfecto es enemigo de lo bueno. Un pipeline básico que los desarrolladores usan de verdad vale infinitamente más que uno completo que esquivan. Empieza donde estás, mejora iterativamente, nunca pares.&lt;/p&gt;</description></item></channel></rss>