Janus. Observability w środowisku wielodostępnym bez wycieków danych poza granice
Rozwiązanie typu open source, stworzone przez nas i dostępne bezpłatnie dla wszystkich.
Każdy użytkownik widzi dokładnie to, co powinien, i nic więcej. Janus to wielodostępny serwer proxy typu open source firmy evoila dla Prometheusa, Loki i Tempo. Zapewnia on kontrolę dostępu opartą na etykietach oraz polityki zapytań między użytkownikami a stosami narzędzi do monitorowania, w sposób przejrzysty na poziomie bramy i bez ingerencji w systemy backendowe.
Janus. Observability w środowisku wielodostępnym bez wycieków danych poza granice
Rozwiązanie typu open source, stworzone przez nas i dostępne bezpłatnie dla wszystkich.
Każdy użytkownik widzi dokładnie to, co powinien, i nic więcej. Janus to wielodostępny serwer proxy typu open source firmy evoila dla Prometheusa, Loki i Tempo. Zapewnia on kontrolę dostępu opartą na etykietach oraz polityki zapytań między użytkownikami a stosami narzędzi do monitorowania, w sposób przejrzysty na poziomie bramy i bez ingerencji w systemy backendowe.
Wspólne platformy mają luki w zabezpieczeniach. Janus nie ustępuje.
Wspólne platformy obserwowalności są potężnym narzędziem, dopóki programista nie wysyła zapytania o metryki dotyczące zespołu, do którego nie należy, lub dopóki konto usługowe nie ujawnia logów poza granice dzierżawcy. Janus pełni rolę przezroczystego proxy bezpieczeństwa, działając pomiędzy użytkownikami a stosem monitorowania. Sprawdza tożsamość, interpretuje zasady i egzekwuje dostęp na poziomie etykiet, zanim jakiekolwiek zapytanie dotrze do Prometheusa, Loki lub Tempo. Jest to rozwiązanie typu open source, oparte na Spring WebFlux w celu zapewnienia reaktywnej wydajności i zaprojektowane tak, aby można było je wdrożyć w istniejącym środowisku monitorowania bez konieczności przebudowywania całego stosu.
- 3 serwery zaplecza: Prometheus, Loki i Tempo w jednym serwerze proxy
- Model „zero trust”: każde zapytanie jest egzekwowane, bez wyjątków
- Oprogramowanie open source: GNU AGPLv3.0, tworzone przez społeczność
Dogłębna analiza technologii
W jaki sposób Janus kontroluje dostęp przed wykonaniem zapytania
Każde przychodzące żądanie przechodzi przez trzyetapowy proces przetwarzania w systemie Janus. Najpierw odbywa się uwierzytelnianie. Sprawdzana jest poprawność tokenu JWT lub przekazanej głowicy uwierzytelniającej, a następnie ustalana jest tożsamość podmiotu wysyłającego żądanie. Następnie następuje rozpoznawanie zasad. Ładowane są reguły dostępu dla danej tożsamości, w tym informacje o tym, które wartości etykiet podmiot wysyłający żądanie ma prawo odczytywać. Trzecim etapem jest egzekwowanie zapytania. Żądanie jest analizowane, wstawiane lub weryfikowane są wymagane selektory etykiet, a przepisane żądanie jest wysyłane do odpowiedniego serwisu zaplecza. Odpowiedź jest następnie przekazywana z powrotem w sposób przezroczysty. Dla narzędzia wywołującego Janus pozostaje niewidoczny.
Model działania jest reaktywny i nieblokujący, ponieważ Janus opiera się na bibliotece Spring WebFlux. Oznacza to, że żadne wątki nie pozostają bezczynne w trakcie oczekiwania na odpowiedź serwerów zaplecza, skalowanie przebiega w prosty sposób, a serwer proxy zachowuje niezależność od stanu nawet pod obciążeniem. Zasady dostępu są ładowane ze źródła konfiguracyjnego podczas uruchamiania i można je ponownie załadować bez przestoju.
Poznaj Janus na GitHubie
Obsługiwane backendy: jeden serwer proxy, pełna obsługa stosu technologicznego
Janus egzekwuje zasady dostępu w systemach Prometheus, Loki i Tempo w ramach jednego wdrożenia. Nie ma potrzeby stosowania oddzielnego serwera proxy dla każdego backendu, oddzielnych modeli zasad dla poszczególnych narzędzi ani różnej logiki egzekwowania w odniesieniu do metryk, logów i śladów. Wystarczy jedna brama dla całego stosu.
Want to talk about Janus in your stack?
Niezależnie od tego, czy chcesz dowiedzieć się, jak Janus wpisuje się w Twoją platformę obserwowalności, omówić kwestię kontroli dostępu w modelu wielodostępnym, czy też zapoznać się z rzeczywistym scenariuszem wdrożenia – skontaktuj się z nami. Skierujemy Cię do odpowiedniego eksperta.
Marco Di Martino
Business Unit Lead – Cloud Native
Najczęściej zadawane pytania
Najczęściej zadawane pytania dotyczące Janusa
Nie. Janus działa jako przezroczysty serwer proxy przed istniejącymi serwerami zaplecza. Nie trzeba wprowadzać żadnych zmian w konfiguracji scrapingu, przebudowywać potoku logów ani modyfikować Prometheusa, Loki ani Tempo. Wystarczy skonfigurować zasady, skierować klientów do Janusa, a egzekwowanie zasad rozpocznie się natychmiast.
Zasady są definiowane w źródle konfiguracji i ładowane podczas uruchamiania. Określają one, jakie wartości etykiet może odczytywać każda tożsamość wywołującego — według przestrzeni nazw, usługi, poda, zespołu lub dowolnej etykiety niestandardowej w Twoim stosie. Zasady można ponownie załadować bez przestoju ani konieczności ponownego uruchamiania serwera proxy.
Janus jest udostępniany na licencji GNU AGPLv3.0. Nie ma wersji dla przedsiębiorstw ani ograniczeń dostępu do funkcji. Pełny kod źródłowy jest dostępny na GitHubie w repozytorium evoila/janus.
Jeśli zapytanie można bezpiecznie przeredagować, Janus dodaje do niego wymagane selektory etykiet przed przekazaniem go do zaplecza. Jeśli zapytania nie da się bezpiecznie przeredagować, zostaje ono odrzucone. Każda operacja przeredagowania lub odrzucenia jest rejestrowana wraz z kontekstem tożsamości.
Tak. Janus ładuje zasady z źródła konfiguracyjnego podczas uruchamiania i obsługuje aktualizacje na żywo. Zmiany w zasadach wchodzą w życie bez konieczności ponownego uruchamiania serwera proxy i bez przerywania aktywnych ścieżek zapytań.