Bezpečnost
Bezpečnost dat je pro HR systém zásadní. Tady popisujeme konkrétní technická a organizační opatření, kterými chráníme data klientů. Stránka je živý dokument — pravidelně aktualizujeme po nasazení nových opatření.
Infrastruktura
- Hosting: Oracle Cloud Infrastructure, region
eu-frankfurt-1(Německo, EU) - Reverse proxy: Caddy s automatickou obnovou TLS certifikátů (Let's Encrypt)
- Aplikační server: ASP.NET Core 8 v izolovaném Docker kontejneru
- Databáze: PostgreSQL 17 v privátní docker síti, nedostupná zvenčí
- Operační systém: Ubuntu 24.04 ARM s automatickými bezpečnostními aktualizacemi
Šifrování
- Za přenosu: TLS 1.2+ (vynuceno na úrovni reverse proxy), HSTS hlavička, automaticky obnovované certifikáty
- Hesla: BCrypt s adaptivním work factorem
- MFA secrety: šifrované při ukládání
- Refresh tokeny: SHA-256 hash, neukládáme původní hodnotu
Autentizace a autorizace
- JWT access token (15 min) + refresh token (7 dní) s rotací
- MFA (TOTP, kompatibilní s Google Authenticator, Authy, 1Password atd.)
- Možnost vynutit MFA pro celou firmu (admin v Nastavení)
- Recovery kódy pro případ ztráty zařízení
- Rate limiting na login endpointu
- Role-based access control (RBAC) s permissions per modul
Multi-tenant izolace
HRko hostuje data desítek firem v jedné aplikaci. Izolace je realizována na úrovni databáze:
- Každá entita má
company_ida globální query filter na úrovni ORM - Audit log zaznamenává každou mutaci s identifikací uživatele, firmy a IP
- Super-admin režim je striktně oddělený od běžných uživatelských rolí
Audit log
Aplikace automaticky zaznamenává:
- Přihlášení (úspěšná i neúspěšná), odhlášení, změna firmy
- Vytvoření, úprava, smazání každé entity (s diff starých a nových hodnot, citlivá pole vynechána)
- Aktivace/deaktivace MFA
- Změna hesla, reset hesla, pozvání uživatele
Audit log si jako admin můžete prohlédnout v aplikaci v sekci Audit.
Zálohy
- Frekvence: denně ve 03:00 SEČ
- Obsah: kompletní dump databáze (pg_dump --gzip) + tar archív nahraných souborů
- Retence: 7 dní (rotace)
- Lokace: stejný region (eu-frankfurt-1), oddělený disk
- Restore test: proveden a dokumentován (poslední ověření: viz interní log)
Pravidelná údržba
- OS bezpečnostní updates: automaticky (unattended-upgrades)
- Aplikační runtime (ASP.NET, PostgreSQL): kontrola měsíčně, kritické patche do 7 dní
- NuGet a npm závislosti: audit při každém deploy buildu
Incident response
V případě bezpečnostního incidentu (data breach):
- Okamžitá izolace dotčené komponenty
- Forenzní analýza — rozsah, dotčená data
- Notifikace dotčených klientů do 48 hodin e-mailem
- Pokud je vyžadováno GDPR, hlášení ÚOOÚ do 72 hodin
- Po vyřešení: postmortem report, aktualizace opatření