Przejdź do treści

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.