Bezpieczeństwo i własność danych
QuoteNode jest stworzony dla organizacji, które traktują dane handlowe jako strategiczny zasób. Każda decyzja architektoniczna stawia na izolację, audytowalność i kontrolę.
Izolacja Single-Tenant
Każda instancja QuoteNode działa w pełnej izolacji. Twoja baza danych, Twoje pliki, Twój proces aplikacji — nic z tego nie jest współdzielone z innymi klientami. Bez mieszania danych między tenantami, bez wspólnych pul połączeń, bez ryzyka wycieku danych.
To nie jest marketingowe hasło o “logicznej separacji.” To fizyczna izolacja na każdej warstwie.
Wdrożenie Self-Hosted
Ty wybierasz, gdzie żyją Twoje dane. Wdrażaj na własnym serwerze, w prywatnej chmurze lub w sieci zamkniętej bez dostępu do internetu. QuoteNode działa w pełni offline — bez telemetrii, bez callbacków analitycznych, bez pingowania serwera licencji.
System dostarczany jest jako kontenery Docker z szablonem Docker Compose. Kontrolujesz infrastrukturę, topologię sieci, strategię kopii zapasowych i granicę dostępu.
Uwierzytelnianie i kontrola dostępu
- Kontrola dostępu oparta na rolach (RBAC) z pięcioma rolami: Admin, Manager, Handlowiec, Widz i Publiczny (dla linków do ofert).
- Weryfikacja uprawnień per endpoint — każde wywołanie API jest autoryzowane względem roli użytkownika.
- Uwierzytelnianie sesyjne z szyfrowanymi ciasteczkami i konfigurowalnym czasem sesji.
- Uwierzytelnianie dwuskładnikowe (TOTP) — opcjonalne dla wszystkich, wymuszalne dla administratorów.
- Ochrona przed brute-force — blokada konta po 5 nieudanych próbach logowania (30-minutowy cooldown).
- Biała lista IP — opcjonalne ograniczenie dostępu do aplikacji do określonych adresów IP.
Dziennik audytu
Każda mutacja w systemie jest rejestrowana w niemodyfikowalnym dzienniku audytu:
- Kto wykonał akcję (ID użytkownika, rola, adres IP)
- Co się zmieniło (typ encji, ID encji, stan przed/po)
- Kiedy to nastąpiło (znacznik czasu po stronie serwera)
Dziennik audytu jest niemodyfikowalny — wpisów nie można edytować ani usuwać, nawet przez administratorów. Zapewnia to weryfikowalny łańcuch odpowiedzialności dla każdej oferty, rekordu klienta i zmiany konfiguracji.
Bezpieczeństwo ofert
Publiczne linki do ofert są chronione wieloma warstwami:
- Kryptograficzne tokeny — 256-bitowe losowe tokeny, przechowywane wyłącznie jako skróty SHA-256. Token jawny jest zwracany raz i nigdy nie jest zapisywany.
- Opcjonalna ochrona hasłem — linki mogą wymagać PIN-u zahaszowanego bcryptem.
- Odwoływalny dostęp — każdy link może zostać natychmiast unieważniony przez handlowca.
- Limitowanie zapytań — limity per-token i per-IP zapobiegają nadużyciom (60 otwarć/godz., 5 akcji/godz.).
- Wykrywanie botów — walidacja czasowa i pola honeypot odrzucają automatyczne zgłoszenia.
- Śledzenie interakcji — każde otwarcie, pobranie, odpowiedź i decyzja są logowane z anonimizowanym IP i kodem kraju GeoIP.
Ochrona danych
- Szyfrowanie w tranzycie — TLS dla wszystkich połączeń (reverse proxy przez Caddy z automatycznym HTTPS).
- Szyfrowanie w spoczynku — delegowane do Twojej infrastruktury (szyfrowanie dysków, zaszyfrowane wolumeny).
- Opcjonalne szyfrowanie PII na poziomie kolumn — po włączeniu (
ENCRYPT_PII=true) dane osobowe (imiona, nazwiska, adresy e-mail, numery telefonów, NIP-y) są szyfrowane algorytmem AES-256-GCM na warstwie aplikacji przed zapisem do bazy danych. Indeksy ślepe (HMAC-SHA256) zachowują możliwość wyszukiwania dokładnych dopasowań bez ujawniania tekstu jawnego. Walidator startowy zapobiega uszkodzeniu danych w przypadku niezgodności kluczy lub przypadkowej zmiany flagi. - Anonimizacja IP — konfigurowalny job haszujący adresy IP po N dniach dla zgodności z RODO.
- Brak zewnętrznych zależności — bez analityki firm trzecich, pikseli śledzących czy zależności CDN w domyślnej konfiguracji.
- Kontrola retencji danych — konfigurowalne okresy przechowywania dla dokumentów, logów audytu i danych śledzenia.
Kopie zapasowe i odzyskiwanie po awarii
Twoje dane są bezpieczne tylko wtedy, gdy jesteś w stanie je odzyskać:
- Automatyczne codzienne kopie zapasowe — zaplanowane dumpy bazy danych i archiwa plików wykonywane bez przestojów (konfigurowalne przez
BACKUP_CRON). - Szyfrowanie GPG w spoczynku — kopie zapasowe mogą być zaszyfrowane przed zapisem, zapewniając, że nawet dostawca storage nie może odczytać danych.
- Zdalne przechowywanie — automatyczny upload do S3, SFTP, Google Cloud Storage, Azure lub dowolnego z 70+ dostawców obsługiwanych przez rclone.
- Weryfikacja integralności — każda kopia zawiera manifest sum kontrolnych SHA-256 do wykrywania manipulacji.
- Pobieranie jednym kliknięciem — administratorzy mogą pobierać archiwa kopii zapasowych bezpośrednio z panelu administracyjnego.
- Polityka retencji — automatyczne czyszczenie starych kopii utrzymuje przewidywalne zużycie dysku (domyślnie: 7 najnowszych kopii).
- Odzyskiwanie po awarii — dedykowany skrypt restore odtwarza kompletną instancję z pliku kopii zapasowej na nowym serwerze jednym poleceniem.
- Monitoring — panel administracyjny ostrzega, jeśli kopie zapasowe są wyłączone lub jeśli żadna udana kopia nie została wykonana w ciągu ostatnich 48 godzin.
Pełny przewodnik po kopiach zapasowych i przywracaniu znajdziesz w wiki Backup & Recovery.
Niemodyfikowalne snapshoty ofert
Po wysłaniu oferty system tworzy kompletny, niemodyfikowalny snapshot: dane klienta, wszystkie pozycje, ceny, kursy walut, branding i warunki handlowe. Ten snapshot jest źródłem prawdy dla generowania PDF i celów audytowych.
Snapshotów nie można modyfikować po utworzeniu. Przy ponownym wysłaniu oferty tworzony jest nowy snapshot z nowym numerem wersji. Zapewnia to weryfikowalny zapis tego, co zostało zaofertowane i kiedy.
Bezpieczeństwo licencji
Licencje QuoteNode to pliki z podpisem Ed25519, weryfikowane całkowicie offline. Żaden zewnętrzny serwer nie jest kontaktowany w celu walidacji licencji. Płatne licencje są roczne — po wygaśnięciu wszystkie funkcje działają normalnie. Jedyną widoczną zmianą jest plakietka “Powered by QuoteNode” na powierzchniach widocznych dla klientów i przypomnienie o odnowieniu w interfejsie. Żadna funkcjonalność nie jest wyłączana.