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

Přehled

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.

Hosting v EU

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í (čl. 32 odst. 1 písm. a) 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
Důvěrnost (čl. 32 odst. 1 písm. b) GDPR)

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.
Integrita (čl. 32 odst. 1 písm. b) GDPR)
  • 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
Dostupnost (čl. 32 odst. 1 písm. b) GDPR)
  • 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.
Postup pravidelného přezkoumávání (čl. 32 odst. 1 písm. d) GDPR)
  • 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)
Další zpracovatelé

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

Kontakt pro ochranu osobních údajů

Dotazy k těmto TOMs nebo k našemu zpracování údajů zasílejte na:

contact@nisd2.eu