Mam kilka mikrousług, które są dostępne tylko zewnętrznie za pośrednictwem interfejsu API Gateway.
Moja brama API jest skonfigurowana jako zasób OAuth i sprawdza poprawność tokena (sprawdza podpis itp.) Przed przekazaniem żądania do jednej lub więcej mikrousług.
Chociaż moje mikrousługi potrzebują tokena, aby zweryfikować zakresy i roszczenia, czy istnieje teraz potrzeba, aby ta usługa również zweryfikowała token?
Wydaje się to nieco przesadne, ale nie mogę znaleźć żadnych porad online na temat tego scenariusza.
Czy sprawdzanie poprawności tokena w bramce API jest wystarczająco dobre? Czy jest to najlepsza praktyka, aby sprawdzić to ponownie później?
microservices
fml
źródło
źródło
I cannot find any advice online about this scenario.
Ponieważ zależy to od kilku czynników, które różnią się w zależności od projektu. Prawdopodobnie w większości opracowań podających się za architekturę MS, nie potrzebują jej. Co więcej, w takich architekturach powinien istnieć serwer autoryzacji, który zrobi to zamiast usług (i oczywiście zamiast bramy). Jest serwerem autoryzacji, który zezwala na przekazanie żądania lub nie.Odpowiedzi:
Jeśli jakiekolwiek połączenia wewnętrzne mogą ominąć bramę, sprawdź poprawność tokena w każdej mikrousługie lub zmuś wszystkie połączenia - wewnętrzne i zewnętrzne - do przejścia przez bramę.
Osobiście nie ufałbym również połączeniom wewnętrznym. Niech przechodzą przez bramę, nawet do ograniczenia ruchu poprzez reguły zapory ogniowej. Dowiedz się, kto i do kogo mówi. Pomaga to ograniczyć powierzchnię ataku, jeśli ktoś kiedykolwiek naruszy twoją sieć.
Wprowadza to jeden punkt awarii, ale ryzyko to można zmniejszyć poprzez równoważenie obciążenia serwerów i posiadanie serwerów awaryjnych w przypadku katastrofalnych problemów.
Z drugiej strony, jeśli każda usługa sprawdza poprawność tokena, a cokolwiek na temat procesu sprawdzania poprawności zmienia się, musisz zaktualizować usługi N + 1.
źródło