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


Controllo degli accessi integrato in ogni livello della richiesta

JWT e autenticazione tramite header

L’identità del chiamante viene identificata tramite i claim JWT o le intestazioni di autenticazione inoltrate. Questo si integra perfettamente nelle configurazioni di identità esistenti basate su OAuth2 senza bisogno di un modello di autenticazione separato.

Politiche di accesso basate sulle etichette

Le politiche definiscono quali valori di etichetta chi effettua la chiamata può leggere, ad esempio namespace, service, pod, team o qualsiasi etichetta personalizzata già utilizzata nello stack.

Riscrittura automatica delle query

I selettori di etichette obbligatori vengono inseriti nelle query PromQL, LogQL e TraceQL prima dell’inoltro. L’applicazione di questa regola non dipende dalla disciplina da parte del client.

Nucleo reattivo e non bloccante

Spring WebFlux è alla base di un proxy senza stato e scalabile orizzontalmente che aggiunge un overhead inferiore al millisecondo ai percorsi di query sotto carico di produzione.

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.

Cosa significa per la tua piattaforma

Impatto concreto su tutta la tua organizzazione

Una piattaforma, tanti team

Esegui un’unica distribuzione di Prometheus, Loki e Tempo per tutta la tua organizzazione. Janus gestisce l’isolamento dei tenant senza richiedere stack separati per ogni team.

Controllo degli accessi pronto per l’audit

Ogni query eseguita o rifiutata è associata a un’identità. Le violazioni delle politiche di accesso vengono registrate con il contesto completo, proprio come richiesto dagli audit di conformità.

Non servono modifiche al backend

Janus si integra con l’infrastruttura esistente. Non servono modifiche alla configurazione dello scrape, né rielaborazioni della pipeline dei log. Basta inserirlo nel tuo stack e configurare le policy.

Open source, sempre

Licenza MIT senza livello enterprise né limitazioni sulle funzionalità. I contributi sono benvenuti, la porta è aperta.

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

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.