Bezpieczeństwo i architektura
Stack jawnie, nie „zaufaj nam”
To samo, co pokazalibyśmy audytorowi Twojego klienta - zero czarnej skrzynki. Poniżej rozróżniamy wprost, co jest gotowe dziś, a co dopiero planujemy.
To nie jest certyfikat ani raport z audytu
Dwa różne systemy poniżej
app-nis2, dziś w fazie budowy F1) - tam żyją rejestry, dokumenty i dane organizacji partnerów. Sekcje niżej opisują oba systemy osobno, żeby nigdy ich nie mylić.Ta strona publiczna
szbihub.pl - dziś, jako fakt
Ten serwis (Astro, statyczny build, Cloudflare Pages) nie ma nic do złamania - nie ma serwera aplikacyjnego ani bazy danych.
Zero backendu, zero PII
Strona jest w 100% statyczna (Astro, build-time) - żadnego serwera aplikacyjnego, bazy ani przechowywania danych po stronie tego serwisu. Formularze (np. zapis NFR, kurs e-mailowy) wysyłają dane na konfigurowalny endpoint UE poza tym repozytorium - nigdy nie trafiają one na infrastrukturę tej strony.Wymuszone HTTPS + nagłówki bezpieczeństwa
Hosting (Cloudflare Pages) serwuje wyłącznie po HTTPS. Skonfigurowane nagłówki odpowiedzi (public/_headersw tym repozytorium): HSTS, ścisłaContent-Security-Policy,X-Frame-Options: DENY,X-Content-Type-Options: nosniff, ograniczonaPermissions-Policy.Zero cookies, zero trackerów
Analityka (Plausible, samohostowana w UE) jest cookieless i nie profiluje użytkowników - stąd brak bannera zgody na cookies (pełny opis: /cookies). Żadnych pikseli reklamowych ani trackerów stron trzecich.Kalkulatory 100% po stronie przeglądarki
Kalkulator kwalifikacji i generator terminów (/narzedzia) liczą wyłącznie w przeglądarce - wpisane dane nigdzie nie są wysyłane.
Platforma SZBIhub
Architektura produktu - co działa, co jest planowane
Platforma to osobny produkt (repozytorium app-nis2), dziś w fazie budowy F1 - poniżej stan faktyczny, nie zapowiedź marketingowa.
Stack
.NET 10, PostgreSQL, hosting docelowo w UE (VPS Hetzner/OVH) - żadnego podprocesora danych Twoich klientów spoza Europy.Uwierzytelnianie i dostęp
Rejestracja wyłącznie przez zaproszenie (token, TTL), polityka haseł min. 12 znaków, blokada konta po 5 nieudanych próbach logowania. Uwierzytelnianie dwuskładnikowe (TOTP) z kodami odzyskiwania, wymuszone dla ról administracyjnych (PlatformAdmin, PartnerAdmin).Izolacja tenantów
Partner -> organizacja klienta to twarda granica danych. Dziś: globalne filtry zapytań na każdej encji przypisanej do organizacji/partnera + blokada zapisu poza właściwym zakresem (próba zapisu z cudzym identyfikatorem organizacji jest odrzucana), pokryte kanonicznym zestawem testów izolacji. Docelowo (F4): dodatkowo Postgres Row-Level Security jako druga, niezależna warstwa ochrony (defense-in-depth).Audit log append-only
Rejestr zdarzeń (logowania, eksporty, impersonacje, zatwierdzenia dokumentów) zapisywany w trybie append-only na poziomie aplikacji - każdy wpis niesie aktora, ewentualnego impersonatora, partnera, organizację i identyfikator korelacji. Docelowo (F4) wzmacniany dodatkowo triggerem bazodanowym blokującym UPDATE/DELETE na wpisach.Szyfrowanie
Ta strona publiczna: HTTPS wymuszony już dziś (patrz wyżej). Platforma: docelowo (F4) automatyczne TLS na każdej subdomenie partnera (reverse proxy z certyfikatem wildcard) oraz szyfrowane at-rest kopie zapasowe (patrz niżej) - produkcyjny hosting platformy jeszcze nie istnieje (dziś: środowisko deweloperskie fazy F1), więc nie deklarujemy dziś żadnego stanu produkcyjnego szyfrowania w spoczynku.Backupy i procedura restore
Docelowo (F4): nocne kopie bazy danych, szyfrowane at-rest, przechowywane w UE, retencja 30 dni + 12 miesięcznych, wraz z runbookiem opisującym przetestowaną procedurę przywracania. Element planowany - nie deklarujemy wykonanego dziś restore'u.Eksport bez lock-in
Już dziś: każdy rejestr (aktywa, ryzyka, incydenty, dostawcy) eksportujesz do CSV lub PDF z poziomu platformy. Docelowo (F4): pełny eksport wszystkich danych organizacji jednym kliknięciem (komplet dokumentów, rejestrów i terminów w jednym archiwum) - funkcja planowana, jeszcze niedostępna. Zero lock-in to zasada projektowa, nie tylko slogan.
Dostawcy
Subprocesorzy
Kto ma dostęp do jakich danych, w jakim celu i gdzie - jawnie, z lokalizacją. Element z brakującym dostawcą jest oznaczony TODO-CONTENT, nigdy nie wymyślamy nazwy dostawcy.
| Podmiot | Kategoria | Cel przetwarzania | Lokalizacja | Dane przetwarzane |
|---|---|---|---|---|
| TODO-CONTENT: dostawca e-mail transakcyjny nie wybrany ostatecznieTODO-CONTENT | Wysyłka e-maili transakcyjnych (powitalny, resety haseł, powiadomienia o terminach, dunning). | UE | Adres e-mail i imię/nazwisko odbiorcy, treść powiadomienia. | |
| GlitchTip | monitoring | Śledzenie błędów aplikacji (error tracking) - diagnostyka awarii i wyjątków. | UE (self-host, ten sam VPS co monitoring) | Ślady błędów (stack trace), metadane żądania - konfiguracja docelowo bez PII w payloadzie zdarzenia. |
| Paddle | payments | Merchant of Record - obsługa checkoutu, rozliczenie VAT UE, wystawianie faktur partnerom, subskrypcje. | UE/Irlandia (Paddle.com Market Ltd) | Dane rozliczeniowe partnera (e-mail, nazwa firmy, NIP, dane karty/płatności) - nigdy dane klientów końcowych partnera. |
| Plausible (self-host) | analytics | Analityka odwiedzin strony publicznej - cookieless, zbiorcze statystyki bez profilowania. | UE (self-host) | Zagregowane, anonimowe dane o odwiedzinach (brak cookies, brak identyfikatorów użytkownika). |
| TODO-CONTENT: dostawca VPS nie wybrany ostatecznieTODO-CONTENT | hosting | Hosting aplikacji (VPS UE) - baza danych, pliki wygenerowanych dokumentów, backupy. | UE | Wszystkie dane organizacji klienckich partnera (dokumenty, rejestry, incydenty). |
Ta sama lista, w kontekście umowy powierzenia, jest też dostępna na stronie /dpa.
Zgłaszanie luk
Zgłaszanie podatności
Znalazłeś lukę bezpieczeństwa? Chcemy o niej wiedzieć.
security.txt (RFC 9116)
Kontakt
Historia
Changelog bezpieczeństwa
Wpisy dotyczące bezpieczeństwa i architektury - najnowsze pierwsze.
Strona /security opublikowana
11 lipca 2026
Architektura bezpieczeństwa platformy (izolacja tenantów, audit log, MFA, backupy, eksport danych) opisana wprost - co działa dziś, a co jest planowane na etap F4. Lista subprocesorów, security.txt (RFC 9116) i proces zgłaszania podatności.
Pełny changelog produktu (wszystkie kategorie): /changelog.