Janus. Osservabilità multi-tenant senza perdite di dati
Open source, sviluppato da noi e gratuito per tutti.
Ogni utente vede esattamente ciò che deve vedere e nient’altro. Janus è il proxy multi-tenant open source di evoila per Prometheus, Loki e Tempo. Garantisce il controllo degli accessi basato su etichette e le politiche di query tra i tuoi utenti e il tuo stack di osservabilità, in modo trasparente a livello di gateway e senza intervenire sui tuoi backend.
Janus. Osservabilità multi-tenant senza perdite di dati
Open source, sviluppato da noi e gratuito per tutti.
Ogni utente vede esattamente ciò che deve vedere e nient’altro. Janus è il proxy multi-tenant open source di evoila per Prometheus, Loki e Tempo. Garantisce il controllo degli accessi basato su etichette e le politiche di query tra i tuoi utenti e il tuo stack di osservabilità, in modo trasparente a livello di gateway e senza intervenire sui tuoi backend.
Le piattaforme condivise hanno delle falle. Janus tiene duro.
Le piattaforme di osservabilità condivise sono molto efficaci, finché uno sviluppatore non interroga le metriche di un team a cui non appartiene, o un account di servizio non fa trapelare i log oltre i confini dei tenant. Janus si posiziona tra i tuoi utenti e il tuo stack di osservabilità come proxy di sicurezza trasparente. Verifica l’identità, applica le policy e impone l’accesso a livello di etichetta prima che una singola query raggiunga Prometheus, Loki o Tempo. È open source, basato su Spring WebFlux per garantire prestazioni reattive e progettato per integrarsi in un’implementazione di osservabilità esistente senza dover ricostruire lo stack attorno ad esso.
- 3 backend: Prometheus, Loki e Tempo in un unico proxy
- Zero trust: ogni richiesta viene verificata, senza eccezioni
- Open source: GNU AGPLv3.0, gestito dalla comunità
Approfondimento tecnico
Come Janus controlla l’accesso prima che una query venga eseguita
Ogni richiesta in entrata passa attraverso una pipeline in tre fasi all’interno di Janus. Per prima cosa c’è l’autenticazione. Viene convalidato un token JWT o un’intestazione di autenticazione inoltrata e viene identificato chi sta effettuando la richiesta. Poi c’è la risoluzione delle policy. Vengono caricate le regole di accesso per quell’identità, compresi i valori delle etichette che chi effettua la richiesta è autorizzato a leggere. In terzo luogo c’è l’applicazione delle regole di query. La richiesta viene analizzata, i selettori di etichetta richiesti vengono inseriti o convalidati e la richiesta riscritta viene inviata al backend pertinente. La risposta viene poi restituita in modo trasparente. Per lo strumento che effettua la chiamata, Janus rimane invisibile.
Il modello di esecuzione è reattivo e non bloccante perché Janus è basato su Spring WebFlux. Questo significa che nessun thread rimane inattivo mentre i backend rispondono, lo scalabilità rimane semplice e il proxy rimane senza stato anche sotto carico. Le politiche di accesso vengono caricate da una fonte di configurazione all’avvio e possono essere ricaricate senza tempi di inattività.
Scopri Janus su GitHub
Backend supportati: un proxy, copertura completa dello stack
Janus applica le politiche di accesso su Prometheus, Loki e Tempo con un’unica implementazione. Non ti serve un proxy separato per ogni backend, né modelli di policy distinti per ogni strumento, né logiche di applicazione diverse tra metriche, log e tracce. Un unico gateway è sufficiente per l’intero stack.
Want to talk about Janus in your stack?
Che tu voglia capire come Janus si integra nella tua piattaforma di osservabilità, discutere del controllo degli accessi multi-tenant o esaminare uno scenario di implementazione reale, contattaci. Ti indirizzeremo all’esperto giusto.
Marco Di Martino
Business Unit Lead – Cloud Native
Domande frequenti
Domande frequenti su Janus
No. Janus si installa come proxy trasparente davanti ai tuoi backend esistenti. Non servono modifiche alla configurazione dello scrape, né rielaborazioni della pipeline dei log, né modifiche a Prometheus, Loki o Tempo. Configura le tue policy, indirizza i tuoi client verso Janus e l’applicazione delle regole inizia subito.
Le politiche vengono definite in una fonte di configurazione e caricate all’avvio. Specificano quali valori di etichetta ogni identità chiamante è autorizzata a leggere — per namespace, servizio, pod, team o qualsiasi etichetta personalizzata presente nel tuo stack. Le politiche possono essere ricaricate senza tempi di inattività né riavvio del proxy.
Janus è distribuito sotto licenza GNU AGPLv3.0. Non ci sono livelli enterprise né limitazioni sulle funzionalità. Il codice sorgente completo è disponibile su GitHub nel repository evoila/janus.
Quando una query può essere riscritta in modo sicuro, Janus inserisce i selettori di etichetta necessari prima di inoltrarla al backend. Se una query non può essere riscritta in modo sicuro, viene rifiutata. Ogni riscrittura o rifiuto viene registrato con il contesto di identità.
Sì. Janus carica le policy da una fonte di configurazione all’avvio e supporta il ricaricamento in tempo reale. Gli aggiornamenti delle policy entrano in vigore senza bisogno di riavviare il proxy e senza interrompere i percorsi di query attivi.