Bezpieczeństwo #
EthicsPortal obsługuje wrażliwe dane sygnalistów. Ta strona dokumentuje konkretne środki techniczne i organizacyjne, które stosujemy. Jest napisana dla inspektorów ds. zgodności, inspektorów ochrony danych i zespołów prawnych oceniających platformę.
Ostatnia aktualizacja: 2026-05-17.
Szyfrowanie danych #
Wszystkie wrażliwe pola są szyfrowane w spoczynku przy użyciu Rails ActiveRecord Encryption z szyfrowaniem niedeterministycznym (każde szyfrowanie generuje unikalny szyfrogram, co uniemożliwia analizę wzorców).
| Pole | Szyfrowane | Deterministyczne |
|---|---|---|
| Opis zgłoszenia | Tak | Nie |
| Imię i nazwisko zgłaszającego | Tak | Nie |
| Dane kontaktowe zgłaszającego | Tak | Nie |
| Treść wiadomości (komunikacja zgłaszający–prowadzący) | Tak | Nie |
Szyfrowanie niedeterministyczne oznacza, że tych pól nie można wyszukiwać po wartości na poziomie bazy danych. Nawet mając pełny dostęp do bazy, atakujący nie może wyszukać konkretnego imienia i nazwiska zgłaszającego w rekordach.
Wszystkie połączenia z EthicsPortal wykorzystują HTTPS/TLS. Nieszyfrowane żądania HTTP są przekierowywane.
Anonimowość i prywatność #
Anonimizacja IP #
EthicsPortal nigdy nie przechowuje adresów IP. Trasy portalu (wysyłanie zgłoszeń, sprawdzanie spraw, wymiana wiadomości) wykorzystują jednokierunkowy hasz SHA256 adresu IP wyłącznie do limitowania żądań. Hasz nie jest odwracalny — odzyskanie oryginalnego adresu IP z przechowywanej wartości jest niemożliwe.
Dotyczy to wszystkich endpointów portalu. Żaden adres IP nie jest zapisywany w żadnym logu, polu bazy danych ani systemie analitycznym.
Usuwanie metadanych plików #
Przesłane pliki są automatycznie oczyszczane z identyfikujących metadanych przed zapisem:
| Typ pliku | Usuwane metadane | Metoda |
|---|---|---|
| Obrazy (JPEG, PNG, TIFF, WebP) | Dane EXIF: współrzędne GPS, model aparatu, numer seryjny urządzenia, autor, znaczniki czasu | Przetwarzanie obrazów Vips |
| Dokumenty PDF | Autor, aplikacja tworząca, historia modyfikacji | exiftool |
| Pliki wideo | GPS, informacje o urządzeniu, oprogramowanie nagrywające | exiftool |
| Pliki audio | Urządzenie nagrywające, GPS, tagi oprogramowania | exiftool |
Zgłaszający nie muszą ufać, że ich pliki są bezpieczne — metadane są usuwane po stronie serwera niezależnie od zawartości pliku.
Skanowanie antywirusowe #
Wszystkie przesłane pliki są automatycznie skanowane pod kątem złośliwego oprogramowania za pomocą ClamAV , silnika antywirusowego open source. Skanowanie odbywa się po stronie serwera w procesie w tle po przesłaniu pliku. Zainfekowane pliki są automatycznie usuwane i nigdy nie trafiają do osób prowadzących sprawy.
Pliki są skanowane na infrastrukturze EthicsPortal — żadne dane plików nie są wysyłane do zewnętrznych usług skanowania.
Anonimowość prowadzącego #
Sygnaliści nigdy nie widzą prawdziwych imion i nazwisk ani adresów e-mail osób obsługujących ich zgłoszenie. Wszystkie wiadomości od prowadzących są wyświetlane jako „Osoba prowadząca sprawę". Chroni to tożsamość prowadzącego i zapobiega inżynierii społecznej.
Brak śledzenia #
EthicsPortal nie używa ciasteczek śledzących firm trzecich, pikseli reklamowych ani skryptów fingerprinting. Na stronach marketingowych używamy Cloudflare Web Analytics — narzędzie bez ciasteczek, które nie zbiera danych osobowych i jest w pełni zgodne z RODO. Sam portal zgłoszeniowy nie posiada żadnej analityki.
Aktualny status assurance #
EthicsPortal nie deklaruje obecnie na tej stronie ISO 27001, SOC 2 ani równoważnej certyfikacji. Nie publikuje też obecnie niezależnego zewnętrznego audytu architektury anonimowości. Jeśli to się zmieni, zakres i data zostaną opublikowane tutaj.
Materiały do przeglądu bezpieczeństwa #
Klienci, którzy potrzebują materiałów do oceny dostawcy lub przeglądu prawnego, mogą o nie poprosić w trakcie oceny. Dostępne materiały mogą obejmować podpisane DPA, dokumenty rejestrowe i podatkowe, wypełniony kwestionariusz bezpieczeństwa oraz pisemne odpowiedzi dotyczące procedur tworzenia kopii zapasowych i przywracania, uprzywilejowanego dostępu do środowiska produkcyjnego oraz reagowania na incydenty.
Kontrola dostępu #
Autoryzacja jest egzekwowana na poziomie aplikacji przy użyciu polityk Pundit .
| Rola | Może przeglądać zgłoszenia | Może zarządzać ustawieniami organizacji | Może przypisywać prowadzących |
|---|---|---|---|
| Administrator | Wszystkie zgłoszenia | Tak | Tak |
| Prowadzący | Zgłoszenia przypisane lub takie, w których uczestniczy | Nie | Nie |
- Prowadzący nie mogą widzieć zgłoszeń, które nie zostały im przypisane ani w których nie zostali dodani jako uczestnicy. Uczestnicy są dodawani wprost przez administratora lub głównego prowadzącego (na przykład w celu włączenia działu prawnego lub HR).
- Zgłaszający nie posiadają konta użytkownika — uzyskują dostęp do swojego zgłoszenia za pomocą kodu dostępu (
WB-XXXX-XXXX) oraz 6-cyfrowego kodu PIN, który wybierają podczas składania zgłoszenia. Oba są wymagane. Kod PIN jest przechowywany wyłącznie w postaci skrótu bcrypt i nie może zostać odzyskany. - Każda akcja kontrolera sprawdza autoryzację. Próby nieautoryzowanego dostępu są blokowane i rejestrowane.
Cykl sesji #
Każda uwierzytelniona sesja rejestruje last_seen_at przy każdym żądaniu (z debouncingiem). Użytkownicy mogą przeglądać swoje aktywne sesje, sprawdzać, kiedy każda z nich była ostatnio aktywna, unieważniać dowolną sesję pojedynczo lub wylogowywać się ze wszystkich pozostałych sesji jednocześnie z poziomu ustawień konta.
Sesje wygasają automatycznie po 14 dniach bezczynności. Kolejne żądanie z bezczynnej sesji niszczy rekord po stronie serwera, czyści ciasteczko i wymusza ponowne uwierzytelnienie nowym linkiem magicznym. Nocne zadanie usuwa porzucone sesje z tym samym limitem czasu, dzięki czemu user_agent i ip_address nie są przechowywane poza oknem bezczynności, nawet gdy użytkownik nigdy nie wraca.
Uwierzytelnianie linkiem magicznym ogranicza zasięg potencjalnych skutków długotrwałych sesji: skradzione ciasteczko sesji nie daje wielokrotnie używanego poświadczenia, a ponowne uwierzytelnienie wymaga dostępu do poczty e-mail.
Dostęp członków i wygaszanie dostępu #
Dostęp do organizacji jest egzekwowany na granicy żądania. Gdy członek zostaje dezaktywowany:
- Dostęp do organizacji jest natychmiast odrzucany, również w przypadku wcześniej zapisanych zakładek z adresami URL.
- Przypisania do otwartych zgłoszeń są zdejmowane.
- Uczestnictwa są usuwane.
- Historia dziennika audytu przypisana do tego członka jest zachowywana.
- Dezaktywowany członek jest powiadamiany.
- Ponowna aktywacja nie przywraca automatycznie wcześniejszego dostępu do spraw.
Ostatniego aktywnego administratora oraz właściciela organizacji nie można dezaktywować. Wszystkie zdarzenia dezaktywacji i ponownej aktywacji są zapisywane w dzienniku audytu tylko do dopisywania.
Członkostwa bez śladu w zakresie zgodności (bez wpisów w dzienniku audytu, bez przypisań, bez uczestnictw) są trwale usuwane przy zdjęciu; członkostwa z takim śladem są dezaktywowane miękko, aby ślad audytowy pozostawał możliwy do odtworzenia.
Limitowanie żądań #
Publiczne endpointy portalu są objęte limitami zapobiegającymi nadużyciom i atakom enumeracyjnym:
| Endpoint | Limit |
|---|---|
| Wysyłanie zgłoszenia | 5 na 10 minut na zanonimizowany IP |
| Sprawdzanie sprawy (kod dostępu + kod PIN) | 10 na 3 minuty na zanonimizowany IP |
| Wysyłanie wiadomości | 10 na 3 minuty na zanonimizowany IP |
Limitowanie żądań wykorzystuje jednokierunkowy hasz IP opisany powyżej — żaden rzeczywisty adres IP nie jest przechowywany.
Audyt i zgodność #
Dziennik audytu tylko do dopisywania #
Każda akcja w EthicsPortal jest rejestrowana z następującymi danymi:
- Znacznik czasu (UTC)
- Wykonawca (który użytkownik lub proces systemowy wykonał akcję)
- Typ akcji (zgłoszenie utworzone, status zmieniony, wiadomość wysłana, prowadzący przypisany, zgłoszenie wyświetlone, zgłoszenie wyeksportowane, zgłoszenie usunięte itp.)
Wpisy dziennika audytu są tylko do dopisywania. Po utworzeniu nie mogą być modyfikowane przez żadnego użytkownika, w tym administratorów organizacji. Pełny dziennik audytu jest dołączany do eksportów spraw w formacie PDF do przeglądu regulacyjnego.
Przechowywanie danych #
Organizacje konfigurują własny okres przechowywania: 12, 24, 36 lub 60 miesięcy po zamknięciu zgłoszenia. Po upływie okresu przechowywania zgłoszenie i wszystkie powiązane dane (wiadomości, załączniki, wpisy dziennika audytu) są automatycznie i trwale usuwane przez zadanie w tle.
Spełnia to wymogi RODO dotyczące ograniczenia przechowywania (Art. 5(1)(e)) oraz obowiązki prowadzenia rejestrów z dyrektywy 2019/1937 (Art. 17–18).
Ochrona przed CSRF #
Wszystkie formularze są chronione przed fałszowaniem żądań cross-site za pomocą wbudowanych tokenów CSRF w Rails.
Zarządzanie zależnościami i poprawkami #
EthicsPortal nie wdraża komponentów oprogramowania, których wsparcie zostało zakończone. Aplikacja działa na aktywnie wspieranych wydaniach Rails, Ruby, PostgreSQL oraz bazowego systemu operacyjnego; wydania bezpieczeństwa z górnych źródeł są stosowane na bieżąco.
Zależności są skanowane w sposób ciągły w continuous integration:
- Brakeman wykrywa podatności specyficzne dla Rails przy każdej zmianie.
- bundler-audit sprawdza Gemfile pod kątem Ruby Advisory Database przy każdej zmianie.
importmap auditskanuje importy JavaScript pod kątem znanych podatności przy każdej zmianie.- Dependabot otwiera cotygodniowo pull requesty dla nieaktualnych gemów Ruby oraz GitHub Actions, pogrupowane według aktualizacji minor/patch.
Komponenty, których wsparcie po stronie źródłowej dobiega końca, są zastępowane lub aktualizowane przed zamknięciem okna wsparcia.
Infrastruktura #
| Komponent | Dostawca | Lokalizacja |
|---|---|---|
| Serwer aplikacji i baza danych | Hetzner | Norymberga, Niemcy (UE) |
| Przechowywanie plików | Hetzner Object Storage | Norymberga, Niemcy (UE) |
| E-maile transakcyjne | Mailjet | Francja (UE) |
| Przetwarzanie płatności | Stripe | UE |
- Całe przetwarzanie danych odbywa się w Unii Europejskiej.
- Na serwerach EthicsPortal nie są przechowywane numery kart kredytowych ani dane uwierzytelniające płatności. Wszystkie dane płatnicze są obsługiwane przez Stripe.
- Mailjet jest używany do e-maili transakcyjnych (powiadomienia dla prowadzących, nie dla sygnalistów). Mailjet ma siedzibę we Francji i przetwarza wszystkie dane w UE.
- Strona marketingowa jest dostarczana przez Cloudflare (CDN, Stany Zjednoczone); portal zgłoszeniowy i portal prowadzących nie. Pełną listę i zabezpieczenia transferów opisano na stronie podwykonawcy .
Kopie zapasowe i przywracanie #
EthicsPortal utrzymuje dwie uzupełniające się warstwy kopii zapasowych, obie przechowywane na terenie UE:
| Warstwa | Co | Gdzie | Retencja |
|---|---|---|---|
| Baza danych | Codzienne szyfrowane zrzuty PostgreSQL przez akcesorium Kamal | Hetzner Object Storage, Norymberga (UE) | 7 dni |
| Serwer | Pełne migawki dysku hosta aplikacji | Hetzner Cloud, Norymberga (UE) | 7 dni |
Cele odzyskiwania. Cel punktu odzyskiwania (RPO) wynosi 24 godziny. Cel czasu odzyskiwania (RTO) wynosi 4 godziny. Cele te są również ujęte w umowie o poziomie usług .
Testy przywracania. Test przywracania jest wykonywany co najmniej kwartalnie w odrębnym, jednorazowym środowisku. Ostatni test: 2026-05-14.
Szyfrowanie. Zrzuty bazy danych są szyfrowane w spoczynku przez Hetzner Object Storage; pola szyfrowane na warstwie aplikacji za pomocą Rails ActiveRecord Encryption pozostają zaszyfrowane w zrzucie.
Przegląd operacyjny #
Ta strona jest publicznym podsumowaniem bezpieczeństwa. Część materiałów operacyjnych jest udostępniana podczas oceny dostawcy zamiast publikowania ich w otwartym internecie, ponieważ zawiera szczegóły infrastruktury i reakcji, które lepiej nadają się do kontrolowanego ujawnienia.
Tematy dostępne na żądanie w trakcie oceny dostawcy obejmują między innymi:
- Podsumowanie uprzywilejowanego dostępu do środowiska produkcyjnego
- Procedury reagowania na incydenty i kontakty eskalacyjne
- Odpowiedzi dotyczące ciągłości działania oraz zakończenia współpracy z klientem i eksportu danych
Odpowiedzialne ujawnianie #
Jeśli odkryjesz lukę w zabezpieczeniach EthicsPortal, prosimy o zgłoszenie na adres security@ethicsportal.eu . Prosimy, abyś:
- Nie ujawniał publicznie luki, zanim nie będziemy mieli możliwości jej naprawienia.
- Podał wystarczająco dużo szczegółów, abyśmy mogli odtworzyć i naprawić problem.
- Nie uzyskiwał dostępu do danych innych klientów ani ich nie modyfikował.
Potwierdzimy otrzymanie zgłoszenia w ciągu 2 dni roboczych i dążymy do szybkiego rozwiązania potwierdzonych luk.
Ostatnia aktualizacja: