Platforma jest zaprojektowana z myślą o:
Platforma obsługuje również organizacje stosujące NIS2/KSC dobrowolnie (sposób dobrej praktyki) bez formalnego objęcia zakresem ustawy.
Platforma udostępnia kreator samoidentyfikacji, który prowadzi użytkownika przez proces kwalifikacji. Jest to szczególnie ważne w sektorze edukacji, gdzie nowelizacja KSC może objąć szkoły ponadgimnazjalne i JST jako podmioty ważne.
ksc-2026.1 proponuje kategorię: podmiot kluczowy, podmiot ważny, podmiot ważny będący podmiotem publicznym (zał. 4), poza zakresem albo „wymaga konsultacji prawnej”, z uzasadnieniem i podstawą prawną. Większość reguł opiera się na interpretacji przepisów czekającej na opinię eksperta — strona wyniku to zaznacza. Wynik nie jest opinią prawną.nis2.self_identification.started, nis2.selfid.completed (propozycja), nis2.selfid.confirmed (zatwierdzenie), nis2.obligations.applied, nis2.selfid.reset i nis2.selfid.step_back.itso, wskazanie imiennego ITSO dla placówki w rekordzie placówki oraz uprawnienia nadawane per placówka — itso nadany w placówce pracuje na zadaniach kontrolnych, przypisaniach i incydentach tej placówki; w Dzierżawcy JST role itso i school_director nadaje się wyłącznie per placówka, a samo wskazanie kogoś jako ITSO placówki niczego mu nie nadaje. Szczegóły w §6.
Art. 23 NIS2 i art. 11 KSC nakładają obowiązek raportowania poważnych incydentów w trzech etapach. Platforma obsługuje pełny cykl z wbudowanymi timerami terminów.
| Etap | Termin (od wykrycia) | Treść wymagana | Wsparcie platformy |
|---|---|---|---|
| 24H Wczesne ostrzeżenie | 24 godziny | Klasyfikacja (poważny / nie); wstępna ocena; podejrzenie działania zamierzonego. | Formularz z predefiniowanymi klasyfikatorami dla sektora edukacji; terminy liczone od wpisanego momentu wykrycia; e-mail do ITSO przy T−4h. Kolejność czasów — wystąpienie nie później niż wykrycie, wykrycie nie później niż 5 minut po rejestracji — egzekwuje też baza danych ograniczeniami CHECK (incidents/0005), działającymi na obu wdrożeniach produkcyjnych od 2026-10-22 (sprawdzone skryptem tylko do odczytu deploy/check-p6b-live.sh). |
| 72H Zgłoszenie incydentu | 72 godziny | Ocena wpływu (liczba uczniów / pracowników, dostępność systemów); przyczyny; środki zaradcze. | Formularz raportu etapu; złożenie zapisywane w dzienniku audytu kodem incident.report.full_report. Incydent jest identyfikowany swoim identyfikatorem (UUID); platforma nie nadaje numerów w formacie KSC-INC. |
| 1M Sprawozdanie końcowe | Miesiąc od zgłoszenia 72 h | Szczegółowy opis; podatności; środki długoterminowe; decyzja o ujawnieniu. | Formularz raportu końcowego; złożenie zapisywane w dzienniku audytu kodem incident.report.final_report; eksport paczki audytowej ZIP. Rekordy incydentu są przechowywane przez cały okres istnienia konta Dzierżawcy — nie istnieje automatyczne usuwanie. |
Platforma dostarcza katalog obowiązków KSC (wersja 2026.1, 63 pozycje), z którego powstają zadania kontrolne (ControlTask). Po zatwierdzeniu kwalifikacji podmiotu platforma tworzy zadania dla obowiązków właściwych dla tej kwalifikacji. Każde zadanie ma:
do zrobienia / w trakcie / zrobione / zablokowane / nie dotyczy,Zadania nie mają własnych załączników. Pliki dowodowe dołącza się do stanów zgodności w module programów kontroli (wymagania przypisywane placówkom przez JST), a potwierdzenia szkoleń pochodzą z importu z platformy szkoleniowej Irenly, gdy Operator skonfigurował połączenie platformy z Irenly (jedno ustawienie całej platformy we wdrożeniu paraKSCol, a nie ustawienie Dzierżawcy).
Samoidentyfikacja i wpis do wykazu; systematyczne szacowanie ryzyka i polityki bezpieczeństwa; środki z art. 8 ustawy (m.in. ciągłość działania, łańcuch dostaw, kryptografia, kontrola dostępu, zarządzanie aktywami, cyberhigiena); środki z załącznika nr 4 dla podmiotów publicznych (m.in. kopie zapasowe i testy ich odtworzenia, nadawanie i cofanie uprawnień, oprogramowanie antywirusowe, szkolenia pracowników); coroczny przegląd SZBI i coroczne szkolenie kierownika podmiotu; audyt bezpieczeństwa co 3 lata; obowiązki zdarzeniowe przy incydentach (24 h, 72 h, sprawozdanie końcowe). Częstotliwość wynika z obowiązku: jednorazowo, co roku, co 3 lata, w sposób ciągły albo przy zdarzeniu. Przypisanie części obowiązków i terminów to interpretacja przepisów czekająca na opinię eksperta.
Na żądanie organu nadzorczego lub podczas audytu wewnętrznego platforma generuje paczkę audytową ZIP:
nis2-audit-pack-{subdomena}-{RRRRMMDDTHHMMSSZ}.zip
├── manifest.json # wersja 2: zakres, liczniki, kotwica łańcucha audytu oraz lista „files”
│ # ze skrótem SHA-256 i rozmiarem każdego pozostałego pliku
├── audit_chain_anchor.json # wynik weryfikacji łańcucha audytu w chwili eksportu, skrót ostatniego wiersza
├── audit_chain_rows.json # wiersze łańcucha audytu od początku (do 50 000) do niezależnego przeliczenia
├── obligations.json # katalog obowiązków
├── control_tasks.json # zadania kontrolne
├── incidents.json # incydenty
├── incident_reports.json # zgłoszenia/raporty incydentów
└── self_identification.json # historia samoidentyfikacji
Wszystkie pliki są w katalogu głównym archiwum i mają format JSON (UTF-8). Jeżeli podmiot ma włączone dodatkowe moduły, paczka zawiera też ich pliki (control_programs_*.json, vendors_*.json, assets_*.json) — każdy z nich również jest wymieniony w manifest.json. Paczka nie zawiera załączników (plików PDF, zrzutów ekranu), plików CSV ani haseł i sekretów uwierzytelniających.
Weryfikacja niezależna od platformy. Po rozpakowaniu (unzip nis2-audit-pack-….zip -d paczka && cd paczka) poniższe polecenie (Python 3, wyłącznie biblioteka standardowa; flaga -I sprawia, że Python nie wczyta żadnego modułu z rozpakowanej paczki i pominie zmienne środowiskowe PYTHON* — bez niej plik json.py podrzucony do paczki mógłby wypisać fałszywe OK) przelicza SHA-256 każdego pliku i porównuje z manifest.json; wypisuje OK albo listę plików zmienionych, brakujących lub dodanych i kończy się kodem 1:
python3 -I -c 'import hashlib,json,os,sys; m=json.load(open("manifest.json")); L={f["path"]: f for f in m["files"]}; bad=[p for p, f in L.items() if not os.path.isfile(p) or hashlib.sha256(open(p, "rb").read()).hexdigest() != f["sha256"]]; bad += sorted(set(os.listdir(".")) - set(L) - {"manifest.json"}); print("FAIL:", bad) if bad else print("OK:", len(L), "file(s) match manifest.json"); sys.exit(1 if bad else 0)'
Skróty w manifest.json wykrywają zmianę, obcięcie, usunięcie lub dodanie pliku po eksporcie. Nie są podpisem: kto może podmienić plik, może też podmienić manifest. Dlatego treść dziennika audytu weryfikuje się osobno — przeliczając łańcuch z audit_chain_rows.json według instrukcji w polu note pliku audit_chain_anchor.json i sprawdzając, że latest_row_hash występuje w kolumnie row_hash_hex eksportu dziennika audytu pobranego z platformy (/api/audit/export.csv).
W strukturze JST każda szkoła może mieć własnego ITSO (Inspektora ds. bezpieczeństwa informacji). Platforma obsługuje wielopoziomową hierarchię:
org_unit_id) — każda szkoła ma własną jednostkę organizacyjną. Ryzyka, aktywa i stany zgodności kontroli są rozdzielane per szkoła wyłącznie w kodzie aplikacji.Rekord wyznaczenia — nie jest zbudowany. Platforma nie prowadzi rejestru wyznaczeń z polami takimi jak rodzaj wyznaczenia, odwołanie do podstawy prawnej (np. art. 14 ust. 1 KSC) czy okres ważności. Wcześniejsza wersja tej strony publikowała taką tabelę pól; została wycofana 2026-10-12, bo żadne z tych pól nie istnieje w kodzie. Istnieje natomiast:
itso — jej nadanie lub odebranie jest zapisywane w dzienniku audytu kodem iam.user.role_change (role przed i po zmianie, aktor, czas);tenant.site.update z identyfikatorami użytkownika poprzedniego i nowego ITSO, także przy wskazaniu przez zaproszenie (wiersze zapisane przed tą zmianą, w październiku 2026, nie zawierają informacji, kogo wskazano); placówka może wskazać tylko członka Dzierżawcy, a zawieszenie lub usunięcie członkostwa ITSO czyści wskazanie i jest zapisywane w ten sam sposób;itso nadany w placówce pracuje na zadaniach kontrolnych, przypisaniach i incydentach tej placówki; w Dzierżawcy JST role itso i school_director nadaje się wyłącznie per placówka, a samo wskazanie kogoś jako ITSO placówki niczego mu nie nadaje; ITSO wskazany w placówce otrzymuje powiadomienie e-mail o nowym przypisaniu; przypomnienia o terminach zadań kontrolnych trafiają wyłącznie do ITSO będącego aktywnym członkiem.Dokument wyznaczenia IBTI/ITSO pozostaje dokumentem organizacji, prowadzonym poza platformą.
| Art. 21 §2 | Wymaganie | Wsparcie platformy | Status |
|---|---|---|---|
| a | Polityki bezpieczeństwa i analiza ryzyka | Rejestr ryzyk ze strategią postępowania i właścicielem; generator dokumentów SZBI, których zakres wynika z zatwierdzonej kwalifikacji, z edycją i zatwierdzaniem. | Dostępne |
| b | Obsługa incydentów | Cykl 24 h / 72 h / miesiąc od zgłoszenia 72 h, liczony od momentu wykrycia; formularze; paczka audytowa; historia per placówka. | Dostępne |
| c | Ciągłość działania, kopie zapasowe | Zadania kontrolne z katalogu KSC dla ciągłości działania, kopii zapasowych i testów ich odtworzenia; platforma stosuje 3-2-1 dla własnych danych. | Dostępne |
| d | Bezpieczeństwo łańcucha dostaw | Rejestr dostawców IT szkoły (kategoria, krytyczność, daty umowy i przeglądu, oceny); zadanie kontrolne dla łańcucha dostaw. | Dostępne |
| e | Bezpieczeństwo w nabywaniu i utrzymaniu systemów | Zadania kontrolne z katalogu KSC; rejestr aktywów z podatnościami (NVD); integracja Jira Cloud (opcjonalna) dla incydentów. | Dostępne |
| f | Ocena skuteczności środków | Metryki compliance per placówka; historia zmian statusów; eksport CSV. | Dostępne |
| g | Higiena cybernetyczna i szkolenia | Zadania kontrolne dla cyberhigieny i szkoleń; rejestr ukończonych szkoleń per pracownik, importowany z platformy szkoleniowej Irenly, gdy Operator skonfigurował połączenie platformy z Irenly (jedno ustawienie całej platformy we wdrożeniu paraKSCol, a nie ustawienie Dzierżawcy). | Dostępne |
| h | Kryptografia i szyfrowanie | Zadanie kontrolne dla polityki szyfrowania; platforma stosuje TLS na brzegu Cloudflare, Argon2id, LUKS, Vault. | Dostępne |
| i | Bezpieczeństwo zasobów ludzkich i zarządzanie aktywami | RBAC per Dzierżawca z rolami nadawanymi w placówce; okresowe kampanie przeglądu dostępu; rejestr aktywów. | Dostępne |
| j | MFA, SSO, bezpieczna komunikacja | Obowiązkowe MFA (TOTP lub WebAuthn) dla wszystkich kont z hasłem, przy czym konta SSO podlegają dostawcy tożsamości Dzierżawcy; SAML 2.0 SSO; OIDC per Dzierżawca; TLS na brzegu Cloudflare. | Dostępne |
Szkoły i JST są organizacjami publicznymi i są zobowiązane do wyznaczenia IOD (art. 37 ust. 1 lit. a RODO). Platforma obsługuje jednoczesne prowadzenie procesu NIS2 i RODO:
Transparentne ograniczenia dla sektora edukacji:
| Obszar | Co platforma robi | Czego nie robi |
|---|---|---|
| Zgłoszenie do CSIRT / MEiN | Prowadzi formularze raportów etapów (24 h / 72 h / miesiąc) z terminami i zapisem w dzienniku audytu; eksportuje paczkę audytową ZIP | Nie wysła automatycznie do CERT Polska ani Ministerstwa (API nie jest publiczne) |
| Ochrona e-dziennika (Librus, Vulcan) | Rejestruje zadania oceny ryzyka dla e-dziennika | Nie łączy się bezpośrednio z e-dziennikiem; brak integracji API |
| Szkolenia uczniów | Rejestruje zadania szkoleniowe dla pracowników | Nie jest platformą e-learningową dla uczniów |
| Certyfikacja KSC | Generuje dokumentację audytową | Nie wystawia certyfikatów; certyfikacja wymaga niezależnego audytora |
| SOC/SIEM dla sieci szkolnej | Integracja przez API z zewnętrznymi narzędziami | Nie monitoruje sieci szkolnej w czasie rzeczywistym |
| Pomoc prawna | Szablony i checklisty KSC | Nie świadczy usług prawnych; dokumenty są informacyjne |
| Pytania o NIS2 / KSC | compliance@cyberzgodnosc.edu.pl |
| Zgłoszenie incydentu (platforma) | security@cyberzgodnosc.edu.pl |
| Ogólne zapytania | kontakt@cyberzgodnosc.edu.pl |
| Organ nadzorczy (KSC) | CERT Polska / CSIRT GOV — cert.pl |
| Organ nadzorczy (RODO) | UODO — uodo.gov.pl |