Technická a organizační opatření (TOMs)
Opatření podle čl. 32 GDPR, která zajišťují bezpečnost zpracování osobních údajů na platformě NISD2.eu.
Stav k 26. září 2026. Zkontrolováno podle kódu a opraveno; toto znění je přílohou III smlouvy o zpracování osobních údajů.
Tento dokument popisuje technická a organizační opatření, která společnost Kardashev Catalyst UG (haftungsbeschränkt) jako provozovatel platformy NISD2.eu skutečně zavedla. Je to poctivý soupis, ne seznam přání: uvádíme jen to, co už funguje.
Opatření vycházejí z IT-Grundschutz (metodika německého úřadu BSI) a s růstem platformy se budou rozšiřovat.
Servery, databáze a úložiště souborů jsou v EU. Jedna služba sídlí v USA a dostává jen údaje potřebné pro svou funkci:
- Aplikační servery a databáze PostgreSQL: Hetzner Online GmbH, datové centrum Falkenstein/Norimberk, Německo
- Úložiště nahraných dokumentů s důkazy: AWS S3, region EU
- V USA: Resend, který odesílá naše e-maily. Předávání probíhá na základě standardních smluvních doložek EU (čl. 46 GDPR).
- Šifrování přenosu: TLS pro všechna spojení s platformou (HTTPS)
- Šifrování uložených dat: šifrování na straně serveru v AWS S3 (AES256, výslovně nastavené u každého nahrání, včetně archivovaných faktur). Aplikace databázi PostgreSQL dodatečně nešifruje.
- Přístupové údaje a klíče API se spravují v proměnných prostředí serveru, neukládají se ve zdrojovém kódu ani v databázích
Opatření k zajištění důvěrnosti:
- Fyzická kontrola přístupu: datová centra poskytovatelů hostingu (Hetzner, AWS) mají certifikace ISO 27001
- Personální opatření: přístup k produkčním systémům a osobním údajům má jen malá, jmenovitě určená skupina vázaná mlčenlivostí. Přístup se řídí principem nejnižších oprávnění a odebírá se při skončení role.
- Ověřování: přihlášení e-mailem a heslem nebo přes Google OAuth 2.0. Hesla se ukládají jen jako bcrypt hash s cost factorem 12, nikdy v čitelné podobě. Registrace s heslem jednou potvrdí e-mailovou adresu jednorázovým kódem. Pokusy o přihlášení jsou omezeny na 10 za 15 minut na e-mailovou adresu a instanci aplikace; počítá se každý pokus. Relace končí po osmi hodinách. Platforma pro přihlášení heslem nenabízí druhý faktor. Uživatelé, kteří se přihlašují přes Google, spoléhají na MFA svého vlastního účtu Google.
- Oprávnění podle rolí: administrátor, revizor, právní revizor, člen; vynucovaná v aplikační vrstvě přes middleware tRPC
- Oddělení zákazníků v aplikaci: každý dotaz, který pracuje s daty, filtruje podle ID společnosti z relace přihlášeného uživatele. Dodatečné oddělení v databázi (row level security) neexistuje.
- Hesla se nikdy neukládají v čitelné podobě. Každé přihlášení se porovnává s bcrypt hashem, i když pro zadanou adresu žádný účet neexistuje, aby doba odezvy neprozradila, kdo je registrován.
- Kontrola vstupů: každá změna, kterou přihlášený uživatel provede přes API platformy, se zaznamenává s ID uživatele, akcí, typem entity, časovou značkou, IP adresou, user agentem a zadanými hodnotami (citlivá pole odstraněna). Jen u vybraných operací se ukládá i předchozí hodnota.
- Kontrolní součet auditní stopy: každý řádek auditu dostane při zápisu kontrolní součet SHA-256 svého obsahu. Nástroj, který by tyto součty později přepočítal, zatím neexistuje.
- Kontrola přenosu: přenos dat jen přes TLS; všechny ověřované koncové body vyžadují platnou relaci
- Dokumenty s důkazy: místo uložení a metadata se zapisují při nahrání; volitelný hash SHA-256 dodaný klientem lze uložit spolu se souborem
- Mechanismus schválení: v okamžiku schválení se stav požadavku uloží jako snímek do tabulky historie schválení, jejíž záznamy tvoří řetězec SHA-256 (kontrolní součet každého záznamu zahrnuje ten předchozí), takže manipulaci s historií lze odhalit od začátku do konce
- Zálohy databáze nastavuje provozovatel v hostingovém prostředí. Nejsou součástí zdrojového kódu. Aktuální konfiguraci sdělíme na požádání.
- Ukládání dokumentů s důkazy v AWS S3 se zárukami trvanlivosti objektů, které poskytuje AWS
- Omezení počtu požadavků (počítané v databázi, takže platí i po restartech a pro každou instanci aplikace; IP adresy a e-mailové adresy se ukládají jen jako hash) u pokusů o přihlášení, veřejných koncových bodů (kontrola působnosti, portál pro dodavatele) a náročných ověřovaných koncových bodů (exporty PDF, generování certifikátů)
- Nahrávané soubory jsou omezeny na 50 MB na soubor
- Zobrazení dostupnosti: nisd2.eu/status nejvýše každých 30 sekund ověřuje dosažitelnost databáze a výsledek veřejně zobrazuje. Nepřetržitý monitoring s automatickým upozorňováním neprovozujeme.
- Tato TOMs se přezkoumávají při podnětu z události a nejméně jednou ročně
- Aktualizace závislostí: Dependabot každý týden navrhuje nové verze balíčků npm a GitHub Actions jako pull requesty
- Ohlašovací povinnosti: porušení zabezpečení osobních údajů ohlásíme příslušnému dozorovému úřadu do 72 hodin podle čl. 33 GDPR
- Vývojová praxe: změny kódu procházejí pull requesty; vynucují se typové kontroly TypeScriptu ve striktním režimu; cílené automatizované testy pokrývají bezpečnostně kritickou logiku (např. klasifikaci působnosti)
Všichni další zpracovatelé jsou vázáni smlouvami podle čl. 28 GDPR. Úplný seznam je ve smlouvě o zpracování osobních údajů.
Úplný seznam dalších zpracovatelů (smlouva o zpracování osobních údajů)
Dotazy k těmto TOMs nebo k našemu zpracování údajů zasílejte na: