feat(security): zamkniecie dostepu do baz interpretacyjnych (LOG-32) #10
Reference in New Issue
Block a user
Delete Branch "feat/harden-access"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Dlaczego teraz
Bazy sa rdzeniem produktu i wlasnie je kupiliscie. Tymczasem aplikacja nie miala
zadnego uwierzytelniania: prezentacja to
NodePort, wiec kazdy w LAN wchodzil bezlogowania, a
/searchoddawal surowe wiersze, do 50 000 na jedno zapytanie.Bazy mogly wyjsc przez sama aplikacje, bez udzialu jakiegokolwiek LLM — to bylo
wieksze i pilniejsze ryzyko niz wysylka promptu na zewnatrz.
Co robi
APP_USER/APP_PASSWORD) + limit zadan na IP (RATE_LIMIT_PER_MIN, domyslnie 120/min)X-Astrololo-Token(INTERNAL_TOKEN)/searchbuild_report); publiczne/api/queryzostaje na 200Szczegoly, ktore maja znaczenie:
API byloby darmowe;
dane (warstwa danych oddaje surowe wiersze — najwrazliwszy punkt systemu);
/healthcelowo publiczny — sondy k8s go nie uwierzytelnia;secrets.compare_digest(odporne na atak czasowy);Fail-open — swiadomie, ale glosno
Bez ustawionych sekretow ochrona jest wylaczona (zgodnosc wstecz i wygoda dev), ale
przy starcie leci wyrazne ostrzezenie. Chodzi o to, by nikt nie wdrozyl tego w
przekonaniu, ze jest chroniony.
=> Zeby dzialalo w produkcji, trzeba dolozyc sekrety w repo
deploy(APP_PASSWORD,INTERNAL_TOKENdla wszystkich trzech uslug). Moge przygotowac ten PR od reki — powiedz slowo.Weryfikacja
Logika calosciowo: 104 passed / 1 skipped.
401, z haslem200, logika wprost bez tokenu401,z tokenem
200,/health200,limit=50000odrzucony (422) — a prezentacjanadal poprawnie liczy horoskop przez logike (silnik skyfield w odpowiedzi).
Czego to NIE zalatwia (uczciwie)
moga byc niepowolane osoby, potrzebny jest TLS (ingress z certyfikatem).
192.168.1.34:/mnt/Tank1/astrololo— kto ma dostep do share'u, bierze plikizrodlowe wprost, z pominieciem calej aplikacji. To do zabezpieczenia po stronie infrastruktury.