feat(bezpieczeństwo): konta imienne i dziennik audytowy (PRE-17) #54
Reference in New Issue
Block a user
Delete Branch "feat/pre17-accounts-audit"
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?
Jedno wspólne hasło nie mówiło, kto sięgał do baz, a odebranie dostępu jednej
osobie wymagało zmiany hasła wszystkim. Przy bazach o realnej wartości handlowej
to za mało.
Konta imienne
APP_USERS='alicja:scrypt$…,bartek:scrypt$…'. Hash liczy scrypt ze stdlib —zero nowych zależności, hasła nie ma w konfiguracji jawnie. Zakładanie konta:
scripts/make_user.py(hasło interaktywnie — nie trafia do historii powłoki anilisty procesów). Odebranie dostępu = usunięcie wpisu, reszta nie zmienia haseł.
Gdy
APP_USERSjest ustawione, wspólneAPP_PASSWORDprzestaje działać(ostrzeżenie przy starcie) — działające obok kont byłoby tylnym wejściem bez śladu
w dzienniku, czyli problemem, który to wymaganie zamyka. Dopóki
APP_USERSniejest ustawione, stary tryb działa jak dotąd (zgodność wstecz — aktualizacja nie
wywraca wdrożenia).
Dziennik audytowy
recordsjest tu sednem: pojedyncze zapytanie wygląda niewinnie, ale suma pokazujepowolne wypompowywanie bazy przez osobę uprawnioną — czego żadne
uwierzytelnienie nie wykryje. Liczone dla wyszukiwarki sygnifikatorów, raportu i
eksportu do Excela (ten wynosi najwięcej naraz). W logach nie ma treści —
ani rekordów, ani promptów, ani danych urodzeniowych.
Dwa realne błędy złapane po drodze (oba z testami regresji)
secrets.compare_digestrzucaTypeErrorna znakach spozaASCII — hasło z polskimi literami wywracało logowanie błędem 500 zamiast
zwykłej odmowy. Porównujemy teraz bajty.
obsługuje naszych loggerów. Niewidoczny dziennik jest gorszy niż jego brak
(złudzenie kontroli) → audyt dostał własny handler na stdout.
Weryfikacja
Na żywym serwerze: dwa konta z hashem → 200/200, złe hasło → 401, nieznany login →
401, hasło z polskimi znakami → 401 (dawniej 500); wpisy audytowe faktycznie
wychodzą. Instrukcja:
docs/konta-i-audyt.md.Testy: +15, prezentacja 243.
Domyka PRE-17. Zostaje „czysto": PRE-09/DAN-15 (przegląd baz NFS + toggle).