Janus. Observabilidad multitenant sin fugas de límites
De código abierto, creado por nosotros y gratis para todo el mundo.
Cada usuario ve exactamente lo que debe ver y nada más. Janus es el proxy multitenant de código abierto de evoila para Prometheus, Loki y Tempo. Aplica un control de acceso basado en etiquetas y políticas de consulta entre tus usuarios y tu pila de observabilidad, de forma transparente en la puerta de enlace y sin tocar tus backends.
Janus. Observabilidad multitenant sin fugas de límites
De código abierto, creado por nosotros y gratis para todo el mundo.
Cada usuario ve exactamente lo que debe ver y nada más. Janus es el proxy multitenant de código abierto de evoila para Prometheus, Loki y Tempo. Aplica un control de acceso basado en etiquetas y políticas de consulta entre tus usuarios y tu pila de observabilidad, de forma transparente en la puerta de enlace y sin tocar tus backends.
Las plataformas compartidas tienen fugas. Janus se mantiene firme.
Las plataformas de observabilidad compartidas son muy útiles hasta que un desarrollador consulta métricas de un equipo al que no pertenece, o una cuenta de servicio filtra registros más allá de los límites del tenant. Janus actúa como un proxy de seguridad transparente entre tus usuarios y tu pila de observabilidad. Valida la identidad, resuelve las políticas y aplica el acceso a nivel de etiqueta antes de que ninguna consulta llegue a Prometheus, Loki o Tempo. Es de código abierto, está construido sobre Spring WebFlux para ofrecer un rendimiento reactivo y está diseñado para integrarse en una implementación de observabilidad ya existente sin tener que reconstruir la pila a su alrededor.
- 3 backends: Prometheus, Loki y Tempo en un solo proxy
- «Zero trust»: se aplica cada consulta, sin excepciones
- Código abierto: GNU AGPLv3.0, impulsado por la comunidad
Análisis técnico en profundidad
Cómo gestiona Janus los permisos de acceso antes de que se ejecute una consulta
Cada solicitud entrante pasa por un proceso de tres etapas dentro de Janus. Primero viene la autenticación. Se valida un token JWT o un encabezado de autenticación reenviado y se determina la identidad del solicitante. En segundo lugar, viene la resolución de políticas. Se cargan las reglas de acceso para esa identidad, incluyendo los valores de etiqueta que el solicitante tiene permiso para leer. En tercer lugar, se aplica la consulta. Se analiza la solicitud, se inyectan o validan los selectores de etiquetas necesarios y la solicitud reescrita se envía al backend correspondiente. A continuación, la respuesta se devuelve de forma transparente. Para la herramienta que realiza la llamada, Janus sigue siendo invisible.
El modelo de ejecución es reactivo y sin bloqueos porque Janus se basa en Spring WebFlux. Eso significa que ningún hilo se queda inactivo mientras los backends responden, el escalado es sencillo y el proxy sigue sin estado bajo carga. Las políticas de acceso se cargan desde una fuente de configuración al arrancar y se pueden recargar sin tiempo de inactividad.
Echa un vistazo a Janus en GitHub
Backends compatibles: un proxy, cobertura completa de la pila
Janus aplica las políticas de acceso en Prometheus, Loki y Tempo en una sola implementación. No necesitas un proxy distinto para cada backend, ni modelos de políticas diferentes para cada herramienta, ni lógicas de aplicación distintas para métricas, registros y trazas. Una única puerta de acceso es suficiente para toda la pila.
Want to talk about Janus in your stack?
Tanto si quieres saber cómo encaja Janus en tu plataforma de observabilidad, como si quieres hablar sobre el control de acceso multitenant o ver un caso práctico de implementación, ponte en contacto con nosotros. Te pondremos en contacto con el experto adecuado.
Marco Di Martino
Business Unit Lead – Cloud Native
Preguntas frecuentes
Preguntas frecuentes sobre Janus
No. Janus se implementa como un proxy transparente delante de tus backends actuales. No hace falta cambiar nada en la configuración de scraping, ni modificar el flujo de registros, ni hacer ajustes en Prometheus, Loki o Tempo. Configura tus políticas, redirige a tus clientes a Janus y la aplicación de las políticas empieza de inmediato.
Las políticas se definen en una fuente de configuración y se cargan al iniciar el sistema. Especifican qué valores de etiqueta puede leer cada identidad de usuario, ya sea por espacio de nombres, servicio, pod, equipo o cualquier etiqueta personalizada de tu pila. Las políticas se pueden recargar sin tiempo de inactividad ni necesidad de reiniciar el proxy.
Janus se distribuye bajo la licencia GNU AGPLv3.0. No hay ningún nivel empresarial ni restricciones de acceso a las funciones. El código fuente completo está disponible en GitHub en el repositorio evoila/janus.
Cuando una consulta se puede reescribir sin problemas, Janus inserta los selectores de etiquetas necesarios antes de enviarla al backend. Si una consulta no se puede reescribir sin problemas, se rechaza. Cada reescritura o rechazo se registra con el contexto de identidad.
Sí. Janus carga las políticas desde una fuente de configuración al iniciarse y admite recargas en tiempo real. Las actualizaciones de las políticas se aplican sin necesidad de reiniciar el proxy y sin interrumpir las rutas de consulta activas.