Bezpieczeństwo
Projektujemy tak, jakby wyciek był kwestią czasu
Imię, nazwisko i numer blankietu wystarczą, żeby zapytać CEPiK o uprawnienia konkretnej osoby. Baza takich numerów jest więc cenna dla każdego, kto chce nadużyć cudzych danych. Dlatego zakładamy, że każda pojedyncza warstwa zabezpieczeń może zawieść, i układamy je tak, żeby pozostałe nadal chroniły dane.
Numer blankietu: zaszyfrowany kluczem, którego panel nie ma
- Numer jest szyfrowany zaraz po wpisaniu kluczem publicznym (kryptografia krzywych eliptycznych, schemat sealed box).
- Klucz do odszyfrowania ma wyłącznie odizolowany proces, który raz na dobę wysyła zapytania do CEPiK. Aplikacja webowa, panel i kopie zapasowe go nie mają.
- W panelu, raportach, e-mailach, API i logach widać najwyżej 4 ostatnie znaki numeru.
- Po usunięciu kierowcy niszczymy zaszyfrowany numer, więc nie da się go już odtworzyć z żadnej kopii.
Skutek praktyczny: nawet przejęcie konta w panelu albo kopii bazy danych nie daje listy numerów blankietów, którą można by wykorzystać do odpytywania CEPiK.
Izolacja firm na poziomie bazy danych
Polityki w bazie, nie tylko w kodzie
Każda tabela z danymi klientów ma regułę bezpieczeństwa na poziomie wierszy. Baza sama odrzuca odczyt i zapis danych innej firmy, nawet przy błędzie w kodzie aplikacji.
Brak kontekstu to brak danych
Zapytanie wykonane bez wskazania firmy zwraca zero wierszy. Konta, z których korzysta aplikacja, nie mają uprawnień do omijania tych reguł.
Testy przy każdej zmianie
Automatyczne testy próbują czytać, zmieniać i usuwać dane cudzej firmy. Uruchamiają się przy każdej zmianie kodu.
Logowanie i dostęp
MFA dla wszystkich
Hasło i drugi składnik: klucz dostępu (passkey) albo kod z aplikacji. Bez wyjątków dla żadnej roli.
Hasła
Przechowywane jako skróty argon2id. Limity prób logowania i jednakowy komunikat błędu, który nie zdradza, czy konto istnieje.
Sesje
Ciasteczka niedostępne dla skryptów, wysyłane tylko szyfrowanym połączeniem, wymieniane na nowe po zalogowaniu i po drugim składniku.
Obsługa bez wglądu
Nasz wewnętrzny panel obsługi pokazuje liczby i identyfikatory, a nie imiona, nazwiska czy numery kierowców. Każda akcja obsługi jest widoczna w dzienniku klienta.
Rozliczalność
- Dziennik zdarzeń tylko do dopisywania: baza nie pozwala zmienić ani usunąć wpisu.
- Każde sprawdzenie ma identyfikator transakcji CEPiK i skrót odpowiedzi; samej odpowiedzi nie przechowujemy.
- Raporty i wydruki dokumentów są zapisywane ze skrótem SHA-256, więc można wykazać, że plik nie był zmieniany.
- Historia sprawdzeń zostaje po usunięciu kierowcy, już bez danych osobowych.
Historia sprawdzeń jest przechowywana domyślnie 24 miesiące. Okres można zmienić w ustawieniach firmy.
Minimalizacja i miejsce przechowywania
Tylko to, co potrzebne
Nie zbieramy numeru PESEL, adresu zamieszkania kierowcy, punktów karnych ani informacji o wykroczeniach. Do sprawdzenia uprawnień nie są potrzebne.
Serwery w Unii Europejskiej
Dane i szyfrowane kopie zapasowe przechowujemy w UE. Lista dalszych podmiotów przetwarzających jest w umowie powierzenia.
Strona bez śledzenia
Na stronach publicznych nie ma ciasteczek śledzących, zewnętrznych skryptów ani fontów z obcych serwerów. Przeglądarka dostaje ścisłą politykę treści (CSP).
Umowy i dokumenty
Pracodawca jest administratorem danych kierowców, a naszaflota.pl podmiotem przetwarzającym. Umowę powierzenia (art. 28 RODO) akceptuje osoba zakładająca konto; jej treść jest publiczna, podobnie jak regulamin. Przeczytaj umowę powierzenia.
Znalazłeś podatność albo masz pytanie od inspektora ochrony danych? Napisz do nas.
Sprawdź swoich kierowców jeszcze w tym tygodniu
Konto zakładasz sam, kierowców dodajesz od razu, a pierwsze sprawdzenie w CEPiK rusza tuż po podaniu numeru blankietu.