Cómo pienso sobre integraciones seguras de backend
Un modelo mental funcional para autenticación, secretos, alcances y radio de explosión — construido a partir de cicatrices, no de libros.
Parte de Backend Craft
La seguridad en las integraciones de backend generalmente falla en los bordes aburridos: un token que nunca rota, una línea de registro que imprime un encabezado, un rol de IAM que era "temporal".
Mi modelo mental
Pienso en cada integración como tres anillos concéntricos:
- El secreto en sí — clave API, clave privada, contraseña de la base de datos.
- La identidad que el secreto prueba — qué rol/principal/servicio.
- El alcance al que está vinculada esa identidad — qué recursos, qué acciones, por cuánto tiempo.
Cada incidente que he visto fue un colapso del anillo 2 o del anillo 3, no del anillo 1. El secreto no se filtró; el alcance era demasiado amplio.
Postura por defecto
- Cada secreto proviene de un vault (Secrets Manager, Parameter Store, Vault). No se comitea ningún
.env, no hay secretos en los registros de CI. - Cada identidad está limitada al recurso + acción más estrechos que hacen que la función funcione. Si no puedo articular el alcance en una oración, es demasiado amplio.
- Cada token rota. Si la rotación es "difícil", eso es un error de diseño, no un error de operaciones.
La línea que te salva
La práctica de seguridad más subestimada es: registra identidades, no secretos, y registra decisiones de alcance en el momento en que se toman.
logger.info(
"crm.lookup autorizado",
extra={
"principal": principal.id,
"scope": ["crm:read:customer"],
"resource": f"customer:{customer_id}",
"reason": "fulfillment handler",
},
)
Cuando algo sale mal a las 2 a.m., querrás saber qué identidad hizo qué. Nunca querrás que el secreto esté en el registro.
Escrito por
Adrian Romo
Ingeniero Backend Senior que diseña APIs escalables en Python, arquitecturas sobre AWS Lambda, sistemas de voz e integraciones empresariales.
Relacionado
Sigue leyendo
Primitivas Ensambladas vs. una Plataforma
Construí un agente de voz usando primitivas en la nube, y funcionó. Desde entonces, fue reemplazado por una plataforma de voz diseñada específicamente para ese fin, y creo que fue la decisión correcta.
Seis publicaciones al día y el programador que aprendió a decir cuándo
Un pipeline social que publicaba un Reel al día y nada más, porque las cuotas por formato eran techos y nadie solicitaba los otros formatos.
Un planificador que no incorporará nada
La herramienta que decide cómo incorporar un nuevo servicio a mi homelab no tiene la capacidad de incorporarlo. Esa separación es el diseño, no una limitación.
Continúa
¿A dónde sigues?
Explora más textos técnicos, revisa los casos de estudio o escríbeme directo.