Bezpieczeństwo
Oddajesz nam dane osobowe swoich pracowników. Oto co z nimi robimy
Ta strona istnieje, żeby Twój dział bezpieczeństwa albo IOD dostał odpowiedzi od razu, bez wymiany dziesięciu maili. Opisujemy też to, czego jeszcze nie mamy — na końcu strony.
Izolacja danych między firmami
Najważniejsze pytanie w aplikacji wielu klientów naraz: co się stanie, jeśli programista pomyli się w jednym zapytaniu.
- Każdy rekord należy do konkretnej firmy, a Postgres wymusza to politykami Row Level Security — baza danych sama odrzuca próbę odczytu danych innej firmy, niezależnie od tego, co próbuje zrobić kod aplikacji.
- Polityki działają „fail closed”: jeśli aplikacja nie ustawi kontekstu firmy, zapytanie zwraca zero wierszy, a nie wszystko. Błąd po stronie kodu kończy się brakiem danych, nie wyciekiem.
- Aplikacja łączy się z bazą rolą bez prawa pominięcia tych polityk. Osobna rola o szerszych prawach jest używana wyłącznie przez proces rejestracji firmy i nocny proces powiadomień — i to jest wszystko, w trzech udokumentowanych miejscach kodu.
- Filtrowanie po firmie w warstwie aplikacji istnieje równolegle, jako pierwsza bariera. Dwie niezależne bariery, nie jedna podwójnie opisana.
Uwierzytelnianie i dostęp
Konta administracyjne widzą dane wszystkich pracowników firmy, więc traktujemy je jak najcenniejszy cel.
- Logowanie kontem firmowym Google Workspace lub Microsoft 365 jest ścieżką główną. Zablokowanie konta u dostawcy odcina dostęp do upra.pl natychmiast — nie musisz czekać na nasze działanie ani pamiętać o cofnięciu dostępu.
- Dla firm bez Workspace/M365: hasło plus obowiązkowy kod TOTP dla ról Właściciel i Administrator. Wymóg jest wymuszony na poziomie routingu, nie ukryciem przycisku w interfejsie.
- Opcja „wpuszczaj tylko konta z domen firmowych” odcina prywatne adresy. Działa jednakowo dla logowania przez dostawcę i hasłem — inaczej byłaby tylko pozorem polityki.
- Hasła są przechowywane jako skróty Argon2id (nie bcrypt) — algorytmu zaprojektowanego pod odporność na łamanie sprzętowe na kartach graficznych.
- Po pięciu nieudanych próbach konto jest czasowo blokowane, z rosnącym czasem blokady. Niezależnie działa ograniczenie liczby prób z jednego adresu IP.
- Uprawnienia (kto widzi i zmienia czyje dane) są zawsze ustalane w upra.pl. Google i Microsoft odpowiadają wyłącznie na pytanie „kto się loguje”, nigdy „co może zrobić”.
Minimalizacja danych — czego celowo nie zbieramy
Najskuteczniejsza ochrona danych to ich nieposiadanie. Kilka decyzji projektowych podjęliśmy właśnie w tym duchu.
- Nie przechowujemy wyników badań lekarskich, orzeczeń ani żadnych informacji o zdrowiu — wyłącznie fakt posiadania uprawnienia i datę ważności. W systemie nie ma więc danych szczególnej kategorii z art. 9 RODO.
- Nie zbieramy numerów PESEL ani innych krajowych numerów identyfikacyjnych. Do pilnowania terminów nie są potrzebne, a ich posiadanie zwiększa i ryzyko, i Twoje obowiązki.
- Nie przyjmujemy skanów dokumentów. Zdjęcie orzeczenia lekarskiego to dane o zdrowiu niezależnie od tego, w jakim polu je zapiszemy.
- Numery certyfikatów, jeśli je wpiszesz, są szyfrowane osobno w bazie danych (AES-256-GCM), kluczem przechowywanym poza bazą. Kopia samej bazy danych nie wystarcza do ich odczytania.
Rozliczalność i dziennik audytowy
Przy kontroli PIP albo audycie RODO musisz udowodnić nie tylko stan danych, ale też kto je zmieniał.
- Każda zmiana danych pracownika, uprawnienia, użytkownika i ustawień dostępu zapisuje się w dzienniku audytowym: kto, kiedy, z jakiego adresu IP, jaka była wartość przed i po.
- Dziennik jest tylko do dopisywania. Aplikacja nie ma funkcji edycji ani usuwania wpisów — również dla nas.
- Dziennik jest dostępny do przeglądania w panelu, nie tylko „gdzieś w bazie”. Filtrujesz po rodzaju danych i stronicujesz.
- Jeśli nasze wsparcie techniczne podejrzy Twoje konto w celu rozwiązania zgłoszenia, zapisuje się to w Twoim dzienniku audytowym jako osobny wpis — wraz z informacją, że działał pracownik upra.pl, a nie Twój. Nie ma trybu „cichego” wglądu.
Infrastruktura i ciągłość działania
- Serwery w Unii Europejskiej. Nie przekazujemy danych osobowych do państw trzecich, więc nie musisz analizować podstaw transferu poza EOG.
- Cały ruch wyłącznie po HTTPS, z wymuszonym HSTS i protokołem TLS 1.2 lub nowszym.
- Baza danych nie jest dostępna z internetu — wyłącznie z sieci wewnętrznej aplikacji.
- Kopie zapasowe są szyfrowane przed opuszczeniem serwera, a odtworzenie z kopii jest regularnie testowane. Kopia, której nikt nie odtworzył, nie jest kopią.
- Dostęp administracyjny do serwera wyłącznie kluczem SSH, bez haseł, z zaporą ograniczającą ruch do portów 80 i 443.
- Zależności są automatycznie skanowane pod kątem znanych podatności; krytyczne blokują wydanie nowej wersji.
RODO — role i dokumenty
Twoja firma jest Administratorem danych swoich pracowników. My jesteśmy Podmiotem przetwarzającym i działamy wyłącznie na Twoje polecenie.
- Umowa Powierzenia Przetwarzania Danych jest zawierana przy zakładaniu konta i dostępna do wglądu w każdej chwili — nie trzeba o nią prosić mailem.
- Lista podprocesorów (dostawca infrastruktury, bramka SMS, dostawca poczty) jest jawna, a każdy z nich ma zawartą z nami umowę powierzenia i przetwarza dane w UE.
- Dane pracownika oznaczonego jako nieaktywny są usuwane lub anonimizowane po skonfigurowanym okresie, z zachowaniem zanonimizowanego wpisu w dzienniku audytowym na potrzeby rozliczalności.
- Eksport wszystkich danych do CSV jest dostępny samoobsługowo, bez naszej zgody i bez opłaty — realizuje prawo do przenoszenia danych.
- W razie naruszenia ochrony danych powiadamiamy Cię jako Administratora bez zbędnej zwłoki, żebyś mógł dochować własnego 72-godzinnego terminu zgłoszenia do UODO.
Uczciwie
Czego jeszcze nie mamy
Dostawca, który na stronie o bezpieczeństwie nie ma ani jednego ograniczenia, albo ich nie zna, albo ich nie pokazuje. Oba warianty są gorsze od listy poniżej.
- Nie przeszliśmy jeszcze niezależnego testu penetracyjnego przez firmę zewnętrzną. Jest on elementem oferty Enterprise i planowanym krokiem przed obsługą dużych organizacji — wolimy to napisać, niż pozwolić Ci założyć, że już się odbył.
- Nie mamy certyfikatu ISO 27001 ani SOC 2. Stosujemy opisane wyżej środki, ale nie zostały one potwierdzone audytem akredytowanej jednostki.
- Potwierdzenie własności domeny firmowej odbywa się przez wymóg, by zgłaszający miał adres email w tej domenie — nie przez rekord DNS. Dla większości firm to wystarcza, ale jest to słabsza bariera niż weryfikacja DNS i planujemy ją wzmocnić.
- Uwierzytelnianie kluczem sprzętowym (passkey/WebAuthn) nie jest jeszcze dostępne bezpośrednio w upra.pl. Można je natomiast wymusić po stronie Google Workspace lub Microsoft 365 — i wtedy obowiązuje również przy logowaniu do upra.pl.
Zgłaszanie podatności
Jeśli znalazłeś błąd bezpieczeństwa, napisz na [email protected]. Odpowiadamy w ciągu dwóch dni roboczych. Nie podejmujemy działań prawnych wobec osób, które zgłaszają podatności w dobrej wierze, nie wykorzystują ich do dostępu do danych innych firm i dają nam czas na naprawę przed publikacją.
Pytania o RODO
Sprawy dotyczące przetwarzania danych, umowy powierzenia i realizacji praw osób, których dane dotyczą: [email protected].
Przekaż tę stronę swojemu działowi bezpieczeństwa
A potem sprawdź produkt na własnych danych. Okres próbny nie wymaga karty płatniczej ani rozmowy ze sprzedażą.
Bez karty płatniczej. Bez umowy na czas określony. Dane możesz wyeksportować w każdej chwili.