Przejdź do głównej treści
Wymagane polskim prawem (Ustawa o ochronie sygnalistów) dla organizacji z ponad 50 pracownikami

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-08-28.


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).

PoleSzyfrowaneDeterministyczne
Opis zgłoszeniaTakNie
Imię i nazwisko zgłaszającegoTakNie
Dane kontaktowe zgłaszającegoTakNie
Treść wiadomości (komunikacja zgłaszający–prowadzący)TakNie
Ustrukturyzowane odpowiedzi w zgłoszeniu (relacja, źródło, czas, wcześniejsze zgłoszenie, obawa przed odwetem)TakNie
Wewnętrzne notatki do sprawyTakNie
Sekrety uwierzytelniania dwuskładnikowego i kody zapasoweTakNie

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ść #

Adresy IP #

EthicsPortal nie zapisuje adresu IP zgłaszającego wraz ze zgłoszeniami, wiadomościami ani wpisami audytowymi, a logi aplikacji dla kanału zgłoszeniowego nie zawierają adresów IP.

Limitowanie żądań w kanale zgłoszeniowym (wysyłanie zgłoszeń, sprawdzanie spraw, wymiana wiadomości) opiera się na skróconym haszu SHA-256 adresu IP żądania, obliczanym z kluczem. Hasz jest pseudonimowy, a nie anonimowy: nie da się go odczytać z powrotem jako adresu, ale każdy, kto posiada sekret aplikacji, mógłby sprawdzać względem niego kolejne potencjalne adresy. Jest używany wyłącznie przez okno limitu żądań (maksymalnie 10 minut) i przechowywany w pamięci podręcznej o ograniczonym rozmiarze.

Serwer proxy TLS działający przed aplikacją prowadzi własne logi połączeń, które zawierają adresy IP. Nie są one powiązane ze zgłoszeniami. Są przechowywane w jednym pliku logu o rozmiarze 10 MB, który jest stale nadpisywany, obecnie w ciągu kilku godzin; 7-dniowe migawki serwera opisane w sekcji kopie zapasowe mogą zawierać ich kopię.

Usuwanie metadanych plików #

Przesłane pliki są automatycznie oczyszczane z identyfikujących metadanych przed zapisem:

Typ plikuUsuwane metadaneMetoda
Obrazy (JPEG, PNG, TIFF, WebP)Dane EXIF: współrzędne GPS, model aparatu, numer seryjny urządzenia, autor, znaczniki czasuPrzetwarzanie obrazów Vips
Dokumenty PDFAutor, aplikacja tworząca, historia modyfikacjiexiftool
Pliki wideoGPS, informacje o urządzeniu, oprogramowanie nagrywająceexiftool
Pliki audioUrządzenie nagrywające, GPS, tagi oprogramowaniaexiftool

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. Cloudflare Web Analytics działa wyłącznie na stronach marketingowych. Nie ustawia analitycznych plików cookie, ale Cloudflare może przetwarzać metadane żądań, w tym adresy IP, zgodnie z Polityką prywatności . Kanał zgłoszeniowy nie ma analityki.

Aktualny status assurance #

EthicsPortal nie deklaruje obecnie na tej stronie akredytowanej certyfikacji ISO 27001. 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 .

RolaMoże przeglądać zgłoszeniaMoże zarządzać ustawieniami organizacjiMoże przypisywać prowadzących
AdministratorWszystkie zgłoszeniaTakTak
ProwadzącyZgłoszenia przypisane lub takie, w których uczestniczyNieNie
ObserwatorTylko do odczytu, dla audytorów i radców prawnychNieNie

Uwierzytelnianie dwuskładnikowe #

Konta prowadzących i administratorów mogą włączyć uwierzytelnianie TOTP w standardowej aplikacji uwierzytelniającej. Po włączeniu logowanie wymaga linku magicznego i tymczasowego sześciocyfrowego kodu. Zgłaszający używają osobno identyfikatora sprawy oraz kodu dostępu wybranego przy wysyłaniu; kod jest przechowywany wyłącznie jako skrót bcrypt.

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:

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.

Usunięcie konta #

Gdy członek zamyka własne konto, jego adres e-mail zostaje zastąpiony adresem niedoręczalnym, a dane 2FA, sesje, tokeny API i preferencje są trwale usuwane. Jeżeli nigdy nie wykonywał działań w organizacji, rekord jest usuwany. W przeciwnym razie imię i zdjęcie pozostają powiązane ze sprawami i dziennikiem audytu, a członkostwa są dezaktywowane, aby zachować wymaganą przypisywalność zapisów.

Limitowanie żądań #

Publiczne endpointy portalu są objęte limitami zapobiegającymi nadużyciom i atakom enumeracyjnym:

EndpointLimit
Wysyłanie zgłoszenia5 na 10 minut na zahaszowany IP
Sprawdzanie sprawy (kod dostępu + kod PIN)10 na 3 minuty na zahaszowany IP
Wysyłanie wiadomości10 na 3 minuty na zahaszowany IP

Limitowanie żądań wykorzystuje opisany powyżej hasz IP z kluczem — żaden adres IP nie jest w tym celu przechowywany.


Audyt i zgodność #

Dziennik audytu tylko do dopisywania #

Każda akcja w EthicsPortal jest rejestrowana z następującymi danymi:

Wpisy dziennika audytu są tylko do dopisywania. Żaden użytkownik, w tym administrator organizacji, nie może edytować wpisu ani usunąć pojedynczego wpisu: wyzwalacze PostgreSQL odrzucają modyfikację i obcięcie na poziomie bazy danych. Wpisy są usuwane wyłącznie przez cykl retencji albo wraz z usunięciem samej organizacji, a uprzywilejowana ingerencja w bazę pozostaje udokumentowanym ryzykiem szczątkowym (rejestr ryzyka R-08 ). 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, 48 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.


Bezpieczny cykl życia oprogramowania #

EthicsPortal stosuje udokumentowany cykl życia oprogramowania dla zmian dotyczących Usługi. Etapy przedstawiono tutaj, aby osoba weryfikująca w procesie zakupowym mogła przypisać je do zabezpieczeń A.8.25–A.8.29 normy ISO/IEC 27001:2022 (pełne odwzorowanie znajduje się w mapie zabezpieczeń ).

EtapPraktyka
Architektura i projektowanieFunkcje wprowadzające nowe przepływy danych osobowych, nowych podprzetwarzających lub nowe zakresy uprawnień są przed wdrożeniem oceniane względem udokumentowanych na tej stronie zobowiązań dotyczących szyfrowania, kontroli dostępu i ścieżki audytu.
Przegląd zmianKażda zmiana produkcyjna jest przed wdrożeniem sprawdzana według pisemnej listy kontrolnej (pokrycie szyfrowaniem, zakres uprawnień, zapis do dziennika audytu, walidacja danych wejściowych, postępowanie z sekretami). Egzekwowanie jest zautomatyzowane, a nie uznaniowe: pełny zestaw testów i analiza statyczna uruchamiają się przy każdej zmianie i blokują wdrożenie w razie niepowodzenia. Zestaw uruchamiany jest na hostowanym runnerze CI albo na stacji roboczej programisty, przy czym zakończone uruchomienie zapisywane jest jako status commita, który potok weryfikuje przed pominięciem uruchomienia hostowanego. Role zatwierdzania zmian opisywane są podczas weryfikacji zakupowej.
Bezpieczne kodowanieKod domyślnie korzysta z zabezpieczeń na poziomie frameworka — zapytania parametryzowane przez ActiveRecord, strong parameters, escapowanie danych wyjściowych w widokach, tokeny CSRF, szyfrowanie na poziomie atrybutów, autoryzacja Pundit na granicy kontrolera. Odstępstwa wymagają pisemnego uzasadnienia.
Testy bezpieczeństwa w rozwojuAnaliza statyczna (Brakeman , bundler-audit , importmap audit) uruchamiana jest przy każdej zmianie. Testy obejmują ścieżki autoryzacji, niezmienniki szyfrowania w spoczynku, zapis do dziennika audytu oraz egzekwowanie ograniczeń liczby żądań. Pełny zestaw narzędzi opisano w sekcji zarządzanie zależnościami i poprawkami .
Rozdzielenie środowiskŚrodowiska produkcyjne i nieprodukcyjne są odseparowane. Produkcyjne dane osobowe nie są używane poza produkcją; środowiska testowe i deweloperskie korzystają z danych syntetycznych.
Reakcja na podatnościZgłoszenia potwierdzamy w ciągu 2 dni roboczych (zob. odpowiedzialne ujawnianie ). Cele: usunięcie problemów krytycznych w ciągu 7 dni, wysokich w ciągu 30, średnich w ciągu 90. Potwierdzone problemy dotyczące wdrożonych klientów zgłaszane są przez rejestr incydentów , jeżeli spełniają kryteria zakresu rejestru.

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:

Komponenty, których wsparcie po stronie źródłowej dobiega końca, są zastępowane lub aktualizowane przed zamknięciem okna wsparcia.


Infrastruktura #

KomponentDostawcaLokalizacja
Serwer aplikacji i baza danychHetznerNorymberga, Niemcy (UE)
Przechowywanie plikówHetzner Object StorageNorymberga, Niemcy (UE)
E-maile transakcyjneMailjetFrancja (UE)
Przetwarzanie płatnościStripeIrlandia; inne państwa przy zastosowaniu odpowiednich zabezpieczeń — zob. Polityka prywatności

Kopie zapasowe i przywracanie #

EthicsPortal utrzymuje dwie uzupełniające się warstwy kopii zapasowych, obie przechowywane na terenie UE:

WarstwaCoGdzieRetencja
Baza danychCodzienne zrzuty PostgreSQL przez akcesorium KamalHetzner Object Storage, Norymberga (UE)21 dni dla bieżących wersji; usunięte wersje wygasają po kolejnych 7 dniach
SerwerPełne migawki dysku hosta aplikacjiHetzner 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 automatycznie co miesiąc przez przepływ CI w odrębnym, jednorazowym środowisku. Świeżość kopii zapasowych jest stale monitorowana.

Szyfrowanie. Hetzner Object Storage domyślnie nie szyfruje obiektów w spoczynku, dlatego zrzuty bazy danych są szyfrowane, zanim opuszczą serwer: GnuPG symetrycznie AES-256, a hasło zna wyłącznie proces tworzenia kopii i jest zdeponowane poza maszyną. Pola zaszyfrowane przez aplikację pozostają dodatkowo zaszyfrowane wewnątrz zrzutu. Załączniki pozostają otwartą luką: są przesyłane bez szyfrowania po stronie serwera i nie są objęte zrzutem.


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:


Odpowiedzialne ujawnianie #

Jeśli odkryjesz lukę w zabezpieczeniach EthicsPortal, prosimy o zgłoszenie na adres security@ethicsportal.eu . Prosimy, abyś:

  1. Nie ujawniał publicznie luki, zanim nie będziemy mieli możliwości jej naprawienia.
  2. Podał wystarczająco dużo szczegółów, abyśmy mogli odtworzyć i naprawić problem.
  3. 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.

Brak płatnego programu bug bounty. Nie wypłacamy wynagrodzenia za zgłoszenia luk w zabezpieczeniach ani nie podpisujemy umów o zachowaniu poufności, nie uzgadniamy warunków handlowych i nie prowadzimy rozmów telefonicznych jako warunku przyjęcia zgłoszenia. Prześlij na powyższy adres informację o objętym zgłoszeniem zasobie, kroki odtworzenia oraz ustalony wpływ.

Ostatnia aktualizacja: