Volver a proyectos
En construcción

Centinela

Escáner de seguridad web SaaS multi-tenant en construcción: hoy existen los fundamentos; el escaneo está planeado.

Rol: Diseño y desarrollo del producto

  • Next.js
  • FastAPI
  • PostgreSQL
  • Redis

Problema

Escanear un sitio web en busca de vulnerabilidades es útil, pero hecho sobre un sitio ajeno y sin permiso es un problema serio. Muchas herramientas dejan esa responsabilidad en manos de quien las usa y no comprueban nada. Para un producto que se quiere ofrecer como servicio a varias organizaciones, eso no alcanza.

Centinela parte de una idea: solo se escanea lo que el usuario puede demostrar que le pertenece, y ninguna organización puede ver datos de otra. De esas dos reglas sale casi todo el diseño, y por eso las construí antes que el escáner.

Lo que está planeado

Centinela es un producto en construcción. Esta sección separa con claridad lo que ya existe de lo que todavía es un plan, porque no quiero que se lea como más avanzado de lo que está.

Lo que ya existe

Los fundamentos ya están construidos y probados:

Esto es lo que se puede usar hoy. Todavía no hay escaneo de ningún tipo.

Lo que viene

Las siguientes etapas, en orden, son las que harán del proyecto un escáner de verdad:

Las pantallas que se ven en este caso son bocetos con datos ficticios de lo que se pretende construir, y lo indican en su pie de imagen.

Cómo lo abordo

Elegí un orden poco vistoso a propósito. Un panel con gráficos se puede construir en cualquier momento, pero el aislamiento entre organizaciones y la prueba de autorización son difíciles de añadir cuando ya hay datos y usuarios. Hacerlos primero me da una base sobre la que el escáner puede crecer sin riesgos escondidos.

Cada etapa se planifica antes de escribir código y se cierra solo cuando está probada. Prefiero mostrar un producto pequeño y honesto, con lo que ya funciona a la vista y lo que falta señalado, antes que una lista larga de promesas.

Arquitectura

Arquitectura planeada de CentinelaDiagrama simplificado: un panel Next.js habla con una API FastAPI que aísla a cada organización con seguridad por filas en PostgreSQL; la verificación de dominio por DNS TXT ya existe, y la cola con workers y los informes están planeados.PanelNext.jsAPIFastAPIRLS por tenantBase de datosPostgreSQLVerificar dominioDNS TXTCola y workersRedis, planeadoInformesPlaneadoArquitectura planeada de CentinelaDiagrama simplificado: un panel Next.js habla con una API FastAPI que aísla a cada organización con seguridad por filas en PostgreSQL; la verificación de dominio por DNS TXT ya existe, y la cola con workers y los informes están planeados.PanelNext.jsAPIFastAPIRLS por tenantBase de datosPostgreSQLInformesPlaneadoVerificar dominioDNS TXTCola y workersRedis, planeado

Diagrama simplificado; omite detalles internos por privacidad.

Decisiones técnicas

  1. Seguridad por filas de PostgreSQL además de los filtros de la aplicación.

    Por qué
    En un producto con varias organizaciones, un filtro olvidado en una consulta basta para mostrar datos de otra. Con la regla puesta en la base de datos, cada consulta queda limitada a su organización aunque el código falle.
    Trade-off
    Las pruebas y las migraciones son más trabajosas, y hay que cuidar que cada conexión indique a qué organización pertenece.
  2. Verificar la propiedad del dominio con un registro DNS TXT o con una carta firmada, antes de escanear.

    Por qué
    Escanear un sitio ajeno sin permiso es un problema legal y ético. Pedir una prueba que solo el dueño puede dar deja constancia de la autorización.
    Trade-off
    Añade fricción al primer uso: el usuario tiene que tocar su DNS o esperar una revisión manual de la carta.
  3. Acceso por niveles: un snapshot público limitado y el resto detrás de un acuerdo de autorización.

    Por qué
    Un nivel sin autorización permite mostrar valor con lo que cualquier visitante ya puede observar, y los niveles más invasivos exigen un acuerdo aceptado.
    Trade-off
    Hay que definir con cuidado dónde termina lo público y mantener claro qué hace cada nivel, lo que complica el diseño del producto.

Mi rol

Lo diseño y lo construyo yo solo. Empecé por lo que más cuesta arreglar después, el aislamiento entre organizaciones y la autorización para escanear, y dejé para más adelante el escaneo en sí. Por eso hoy tiene fundamentos sólidos y todavía no escanea nada.

Siguiente proyecto

En producciónDalem ConectaCRM para agencias de viaje mayoristas y minoristas en Colombia, en producción.Ver caso

¿Tienes un proyecto?

Hablemos de tu proyecto