Moduly

Evidence aktiv Řízení rizik Maturity / GAP Incidenty Dodavatelé Politiky Změnové řízení AI asistent Reporty
Rámce Ceny Bezpečnost O nás
Přihlásit se
Trust Center · Bezpečnost a soukromí

Vaše data o bezpečnosti
v rukou bezpečnostních odborníků.

V Observě leží to nejcitlivější, co vaše firma má — maturity hodnocení, rizika, politiky i evidence incidentů. Na této stránce najdete přímé odpovědi na otázky, které sami klademe svým dodavatelům.

EU hosting
Datacentra pouze v EU
TLS 1.3
End-to-end šifrování
WAF + DDoS
Cloudflare na edge
MFA povinné
Celý tým CypherOn

Defense in depth

Šest vrstev, které musí útočník prolomit zároveň

Žádný z těchto bodů není sám o sobě spása. Jsou projektované tak, aby když jeden selže, ostatní zůstaly stát.

1

Síťová vrstva

Než se požadavek dostane k aplikaci, projde několika nezávislými filtry. Volumetrický DDoS i útoky na aplikační vrstvě odrazí Cloudflare na edge, za ním stojí firewall poskytovatele a serveru.

  • Cloudflare Anti-DDoS + WAF na edge
  • Firewall poskytovatele infrastruktury
  • Firewall na úrovni serveru
  • TLS 1.3 end-to-end
2

Least privilege

Nikdo — váš uživatel, náš inženýr ani background job — nemá víc oprávnění, než skutečně potřebuje. Každá impersonation se loguje.

  • RBAC per modul (čtení / editace / správa)
  • SSH k produkci přes bastion, audited
  • MFA povinné pro celý CypherOn tým
3

Šifrování

Data v klidu šifrujeme na úrovni infrastruktury (dle poskytovatele), data v přenosu přes TLS 1.3. Citlivá pole (TOTP, webhook a SSO tajemství) i nahrané soubory navíc šifrujeme aplikačně AES-256, hesla hashujeme bcryptem. Zálohy mají vlastní klíč mimo produkci.

  • At-rest: šifrování úložiště na úrovni infrastruktury
  • In-transit: TLS 1.3, HSTS preload
  • App-level: AES-256 pro tajemství i soubory, PDF podepsané SHA-256
4

Monitoring a audit log

Audit log má hash-chain (SHA-256 každého záznamu zahrnuje hash předchozího) — nelze zpětně upravit bez zneplatnění řetězce. Standardní retence 7 dní (Starter), 30 dní (Professional), 90 dní (Enterprise); klíčové události (přihlášení, admin akce, změny rolí) v Enterprise trvale. Export do vašeho SIEMu.

  • SHA-256 hash-chain, tamper-evident
  • Alerty na brute-force, impersonation, reset MFA
  • SIEM export (syslog / JSON) v Enterprise
5

DevSecOps

Bezpečnost je v CI, ne až na produkci. Každý PR prochází SAST, SCA nad závislostmi a kontrolou OWASP Top 10. Pentest opakujeme pravidelně (poslední 26. 6. 2026).

  • SAST (Larastan, PHPStan) + SCA v každé PR
  • Pravidelný pentest, závěry na NDA
  • Zákaznický pentest na Enterprise zdarma
6

Zálohy a obnova

Databáze i souborové úložiště se zálohují automaticky každý den, s transakčně konzistentním snímkem databáze. Zálohy uchováváme 14 dní. Aplikační kód je ve verzovaném repozitáři nezávisle na provozním prostředí.

  • Denní automatická záloha
  • Retence 14 dní
  • Konzistentní snímek databáze

Kde běží Observa

Infrastruktura výhradně v EU

Produkční prostředí i zálohy běží v Německu u Hetzner Online GmbH. Žádný transfer přes Atlantik ani subprocesor v USA. Konkrétní poskytovatelé jsou v DPA.

EU hosting

ISO 27001 certifikovaný poskytovatel, Německo

ISO/IEC 27001:2022 — Certifikovaný poskytovatel
EU-only data residency — Data nikdy neopouští EU
GDPR compliant DC — Plně v souladu s čl. 28
Obnovitelná energie — Zelený hosting
Redundantní konektivita — BGP multi-upstream
Fyzická bezpečnost — Biometrický vstup, 24/7 ostraha
SLA 99,9 % uptime — Garantováno smluvně

Penetrační test

Poslední pentest: 26. 6. 2026. Rozsah: webová aplikace, API, autentizace, izolace tenantů. Souhrn zjištění a stav nápravy vám pošleme po podpisu NDA. Zákaznický pentest na vlastní instanci domluvíme po dohodě, zdarma na Enterprise plánu.

Oznamování výpadků a incidentů

Provozní výpadky a jejich řešení oznamujeme dotčeným zákazníkům e-mailem. Bezpečnostní incidenty dotčených zákazníků řešíme podle GDPR čl. 33/34 — oznámení do 72 hodin od identifikace. Post-mortem sdílíme včetně toho, co jsme pokazili my.

V aplikaci

Co Observa dělá, když usednete k obrazovce

Zabezpečení, které běží za vámi, aniž byste o něm věděli — a nastavení, kterým si přitáhnete otěže.

Multi-tenant izolace

Každý záznam má organization_id a Global Eloquent Scope jej vynucuje na úrovni DB query — ne v kontroleru. Chybu tenant isolation takto zachytíme v testech dřív, než se dostane na produkci.

API tokeny s rate limitem

REST API používá per-token autentizaci, hashované v DB. Každý token má scope dle zdroje (assets, incidents, risks, ...) nebo plný přístup, rate limit (120 req/min default) a expiraci. Revokace je okamžitá.

Hesla a MFA

Minimální délka 12 znaků, bcrypt 12 rounds. MFA přes TOTP (Authy, Google Authenticator, 1Password). Org admin může MFA vynutit pro všechny, nebo jen pro adminy.

Anti-brute-force

5 neúspěšných pokusů = 15 min lockout per e-mail. Rate limiting per IP a per účet, captcha při anomálii. Admin dostane alert na 3+ zamčení denně.

Správa session

Délku session si nastavíte per organizace. Po změně hesla se odhlásí ostatní zařízení uživatele.

IP a doménový allowlist

Přístup k aplikaci jen z povolených IP rozsahů (CIDR). Registraci nových uživatelů jen z povolené e-mailové domény. Pro organizace, kde „práce jen z firemní sítě" není fráze.

RBAC per modul

Čtyři role (super_admin, org_admin, editor, reader) × viditelnost modulů. Reader vidí maturity ale ne audit log. Editor aktualizuje rizika ale nemění nastavení. Role „reader" má read-only přístup v rámci organizace.

Audit log s hash-chainem

Přihlášení, změna záznamu, export, impersonation super-adminem, reset MFA — vše s časem, IP, user agentem a identitou. Řetězený SHA-256 hash znamená, že tampering zneplatní integritu celého řetězce.

Alerty na citlivé události

Bezpečnostní události se zapisují do audit logu a lze je přeposílat do vašeho SIEM.

OWASP Top 10 a security headers

Prepared statements proti SQL injection (Eloquent ORM, nikdy raw binding). CSRF tokeny na všech state-changing formulářích. CSP, HSTS preload, X-Frame-Options DENY, X-Content-Type-Options nosniff. CSP v monitoring (report-only) režimu, nonce připraveno.

Responsible disclosure

Našli jste zranitelnost? Pošlete ji na [email protected] (PGP klíč na vyžádání). Odpovíme do 5 pracovních dnů, závažné věci řešíme coordinated disclosure s kreditem. Žádné právní hrozby researcherům.

Audit a přehledy

Audit a přehledy generujete kdykoli v aplikaci — počet aplikovaných patchů, stav závislostí i nálezy z pentestu sdílíme transparentně. Bez dotazů, bez filtru.

Data a soukromí

Vaše data jsou vaše

Observa je nástroj, ne agregátor. Neprodáváme metadata, netrénujeme na vašich větách, nesdílíme s třetími stranami nad rámec subprocesorů v DPA.

Izolace mezi tenanty

Každý záznam nese organization_id. Global Scope na úrovni ORM kontroluje každý query. Prověřeno pentestem (26. 6. 2026) včetně pokusu o IDOR přes přímou URL.

EU-only data residency

Datacentra výhradně v Německu (Hetzner Online GmbH), v souladu s čl. 9.1 DPA. Žádný přenos mimo EU, ani pro log shipping, ani pro AI.

Minimalizace

Bez Google Analytics, bez tracking pixelů, bez third-party cookies. Interní telemetrie agregovaná a anonymizovaná.

Právo na výmaz a export

Žádost o výmaz vyřídíme do 30 dní včetně záloh (po retenční lhůtě SLA). Data exportujete per modul do CSV a generujete PDF reporty.

Audit log pro zákazníka

Org admin vidí kompletní audit log svých uživatelů. Super-admin akce (impersonation, supportní přístup) jsou logovány zvlášť a viditelné také.

AI a vaše data

AI v EU regionu, zero data retention, opt-out z tréninku. DPA podepsaná. Prompty ani odpovědi neopouštějí EU a neslouží k tréninku modelu.

Certifikace

Poctivě, bez dekorace

Observa ani CypherOn certifikaci ISO 27001 nemá a neplánuje ji — nechceme prodávat papír. Infrastrukturu provozujeme u poskytovatele certifikovaného dle ISO 27001 a bezpečnostní procesy stavíme dle ZKB. Netvrdíme, co nemáme.

Hosting ISO 27001

Infrastrukturní poskytovatel certifikovaný dle ISO/IEC 27001:2022. Certifikát veřejný u poskytovatele.

Aktivní
GDPR (EU 2016/679)

Data v EU, minimalizace zpracování, právo na výmaz, DPA s náležitostmi čl. 28 — součástí každé smlouvy.

Aktivní
Důkazy místo certifikátu

Vlastní ISO 27001 nemíříme. Místo papíru dodáváme na vyžádání mapování opatření proti ISO 27001 Annex A a ZKB, souhrn pentestu a DPA.

Na vyžádání

FAQ

Otázky, které CISO skutečně posílá

Izolace je řešená na úrovni řádků (row-level) v jediné databázi. Každý model, který drží zákaznická data, používá trait BelongsToTenant, který registruje globální Eloquent scope. Ten do KAŽDÉHO dotazu automaticky přidá podmínku WHERE {tabulka}.organization_id = {id organizace přihlášeného uživatele}. Vývojář tedy nemusí na filtrování myslet — přidá se samo a nelze ho opomenout. Klíčová je fail-safe větev: pokud je uživatel přihlášený, ale nemá platný kontext organizace (rozbitý účet, deaktivovaná organizace, hraniční stav session), scope vloží WHERE 1 = 0 a vrátí nula řádků. Filozofie je explicitní — raději nezobrazit nic než omylem ukázat data jiné organizace. Jedinou výjimkou je super_admin bez aktivní impersonace, který záměrně vidí napříč organizacemi (platformní diagnostika a fakturace); jakmile se ale do nějaké organizace přepne (impersonace), scope ho zafiltruje stejně jako běžného uživatele. Nad rámec databáze má každá organizace navíc vlastní 256bitový šifrovací klíč pro nahrané soubory, takže i kdyby někdo získal soubory ze storage, bez klíče konkrétní organizace jsou nečitelné.
V návrhu ne — izolace je vynucena na několika nezávislých vrstvách, takže selhání jedné neznamená únik. (1) Globální tenant scope je popsaný výše a běží na úrovni ORM u všech zákaznických modelů. (2) Nad rámec scope hlídají Laravel policy třídy (Asset, Risk, Incident, Vendor, Policy, Task, ChangeRequest) autorizaci jednotlivých záznamů — chrání proti IDOR (přímému uhádnutí cizího ID). (3) REST API a SIEM export nepoužívají session, ale tokeny: token je svázaný s konkrétní organization_id a middleware ho při každém požadavku vloží do kontextu, takže API klient nikdy nepracuje mimo svou organizaci. (4) Tam, kde kód záměrně obchází scope (např. AI asistent, který běží mimo klasický auth kontext), se organizace nebere z requestu, ale je pevně nastavená a do dotazu se vždy ručně doplní ->where('organization_id', $this->orgId). Vícevrstvý charakter izolace pravidelně ověřujeme automatizovanými testy a v rámci bezpečnostního testování (mj. cross-tenant a IDOR scénáře); konkrétní rozsah a výstupy doložíme na vyžádání pod NDA.
Rozlišujeme tři roviny. Přenos (in-transit): komunikace běží přes TLS; v produkci přes HTTPS posíláme hlavičku HSTS (max-age=31536000; includeSubDomains; preload), která vynutí šifrované spojení. Aplikační šifrování citlivých polí: tajné hodnoty se v databázi neukládají v plaintextu — TOTP secret pro MFA, webhook secret pro integrace a SSO/OIDC tajemství (IdP certifikát, SP privátní klíč, OIDC client secret) jsou šifrované přes Laravel Crypt, tedy AES-256-CBC s ověřením integrity (HMAC, ověřeno v config/app.php). Nahrané soubory: šifrujeme vlastní službou TenantEncryption — AES-256-CBC v režimu Encrypt-then-MAC s HMAC-SHA256, který se ověřuje v konstantním čase PŘED dešifrováním (obrana proti padding-oracle a manipulaci s šifrovým textem). Každá organizace má svůj klíč, takže blob bez klíče dané organizace nic neprozradí. Hesla: nikdy se neukládají ani nešifrují reverzibilně — hashují se algoritmem bcrypt (Laravel cast hashed). API tokeny: v databázi držíme pouze SHA-256 hash, raw token vidí uživatel jen jednou při vytvoření. Poznámka: jedná se o aplikační AES-256-CBC+HMAC, nikoli GCM — uvádíme přesně to, co je v kódu.
Základ tvoří čtyři hlavní role: super_admin (provozovatel platformy, bez vlastní organizace), org_admin (správce organizace zákazníka), editor (mění data, ne nastavení) a reader (čte). Doplňují je dvě speciální role: custom (uživatel bez výchozího přístupu — vše se uděluje explicitně per modul, typicky čtenář vybraných politik) a partner (externí konzultant pracující napříč klientskými organizacemi s oprávněními danými per organizace). Nad rolemi je granulární přístup per modul: každý uživatel má pro daný modul (aktiva, rizika, incidenty, politiky, …) efektivní úroveň (admin / contributor / reader / none), kterou lze přepsat. Platformní moduly jako Nastavení a Audit log mají pro neadminy default none — musí být přiřazeny explicitně. Vynucení běží přes middleware (role, module, active.user, mfa) a na úrovni jednotlivých záznamů přes Laravel policy třídy. Citlivé operace (změny rolí, nastavení, MFA, impersonace) se zapisují do audit logu. Pro firmy se SCIM/SSO se role a oprávnění per modul odvozují z mapování skupin identity provideru.
AI je navržena tak, aby z platformy odcházelo co nejméně a jen se souhlasem. (1) Region EU: v produkci je povolen výhradně driver Vertex AI v regionu europe-west4 — aplikace při startu tvrdě selže (fail-fast), pokud by někdo nastavil non-EU driver, takže porušení DPA/GDPR nelze provozně omylem zapnout. (2) Anonymizace PII před odesláním: data procházejí anonymizérem, který odstraní jména osob/kontaktů/dodavatelů, e-maily, IP adresy a strukturované identifikátory (telefon, IČO, rodné číslo, IBAN); pole s názvy jako password/token/secret/key se zahodí úplně. (3) Tenant izolace v nástrojích: nástroje, které AI volá nad daty, jsou pevně svázané s ID organizace a filtrují where('organization_id', ...) — AI nevidí cizí organizaci. (4) Souhlas (GDPR): bez uděleného souhlasu uživatele middleware přesměruje na souhlasovou stránku; souhlas lze odvolat. (5) Oprávnění a rozsah: každý nástroj má per-modul gate (čtení vyžaduje reader, zápis contributor), zápisové operace běží ve dvoufázovém potvrzení (náhled → potvrzení) a odepření se loguje. (6) Limity: AI volání jsou rate-limitovaná (20 požadavků/min, primárně počítáno na organizaci). To, že poskytovatel netrénuje na zákaznických datech, je smluvně ošetřeno v DPA.
Na aplikační vrstvě máme několik vrstev obrany. Rate limiting: pojmenované limitery na klíčových endpointech — přihlášení (5/min na kombinaci e-mail+IP a 20/min na IP proti sprejování), REST API (120/min na token), SIEM export (60/min) a AI (20/min na organizaci). Ochrana proti SSRF: každé odchozí volání na URL zadanou uživatelem (webhooky, SIEM, OIDC discovery/JWKS) prochází SsrfGuardem, který resolvuje host na IP a blokuje privátní, loopback, link-local a cloud-metadata cíle (169.254.169.254 atd.), navíc s vypnutými HTTP redirecty proti obejití. CSRF: standardní ochrana Laravelu na stavových požadavcích. Bezpečnostní hlavičky: X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy, Permissions-Policy a Content-Security-Policy (zatím v režimu report-only pro monitoring, nikoli vynucená — kvůli kompatibilitě s Alpine.js). SQL injection: používáme parametrizované dotazy přes Eloquent/QueryBuilder, uživatelský vstup do LIKE se escapuje. Poctivě: síťové (L3/L4) volumetrické DDoS nejsou doménou aplikace — řeší je infrastruktura (reverzní proxy / CDN); konkrétní řešení doložíme na vyžádání a netvrdíme zde žádný konkrétní produkt.
Audit log zaznamenává citlivé operace s kontextem: kdo (uživatel/e-mail/jméno), kdy, z jaké IP a user-agenta, jaká akce, jaká entita a u změn i kontext. Pro nepopiratelnost a detekci manipulace je log zřetězený hash-chainem: každý záznam nese SHA-256 checksum počítaný mj. z předchozího checksumu (id, organizace, akce, čas, popis, předchozí hash) — dodatečná úprava nebo smazání záznamu uprostřed řetězec rozbije. Retence se řídí třídami: standard (běžné záznamy — aktiva, dodavatelé, úkoly; 7–90 dní podle tarifu organizace), long_term (rizika, politiky, incidenty, compliance, change requesty, partner aktivity — 90 dní), accounting (fakturace/platby/předplatné — 3650 dní = 10 let dle § 31 zákona o účetnictví) a permanent (bezpečnostní a admin události — uživatelé, nastavení, MFA, impersonace — nikdy se nemažou). Záznamy lze v reálném čase odesílat do zákazníkova SIEM přes webhook, kde je každá dávka podepsaná HMAC-SHA256 (hlavička X-Observa-Signature: sha256=…), takže si SIEM ověří pravost.
Hned několik mechanismů. Politika hesel: centrálně minimálně 12 znaků, malá i velká písmena a číslice, plus kontrola proti seznamu uniklých hesel (Have I Been Pwned přes k-anonymitu — na server jde jen prvních 5 znaků SHA-1 hashe, nikdy celé heslo). MFA: TOTP (kompatibilní s běžnými autentikátory) se zálohovými recovery kódy (ukládají se jako SHA-256 hash), ochrana proti replay již použitého TOTP kódu a rotace session ID po ověření. Throttling a lockout: přihlašovací limiter (5/min na e-mail+IP, 20/min na IP) a per-účet sliding-window počítadlo, které účet po nastaveném počtu pokusů (default 5) dočasně zamkne a uživatele e-mailem upozorní. Anti-enumeration: při neúspěchu vracíme vždy generickou hlášku „Nesprávný e-mail nebo heslo“ — neprozradíme, zda účet existuje, je zamčený nebo má vynucené SSO. Odhlášení ostatních zařízení: při změně hesla se invalidují ostatní aktivní relace. Idle-timeout: po nečinnosti (per-organizace, default 30 minut) se uživatel automaticky odhlásí. Volitelně lze přihlášení převést na podnikové SSO (SAML/OIDC).
Stavíme na principu defense-in-depth napříč čtyřmi vrstvami, kde žádná není jediným bodem selhání. Síť (infrastruktura): síťová obrana, TLS terminace a filtrování L3/L4 jsou na úrovni infrastruktury — doložíme na vyžádání. Aplikace: automatický tenant scope na všech zákaznických modelech (logická row-level segmentace přes organization_id), RBAC se čtyřmi hlavními rolemi (plus speciální custom/partner) a granularitou per modul, middleware (role/module/mfa/active.user) a per-záznamové policy proti IDOR, rate limiting, SSRF guard a bezpečnostní hlavičky. Data: aplikační šifrování citlivých polí (Laravel Crypt, AES-256-CBC+HMAC), per-organizační šifrování souborů vlastním klíčem (Encrypt-then-MAC), bcrypt hesla, SHA-256 hash API tokenů a hash-chain audit logu. Identita: silná politika hesel s kontrolou úniků, TOTP MFA, lockout a idle-timeout, volitelně podnikové SSO (SAML/OIDC) a SCIM provisioning. Zákazníci tedy nejsou odděleni fyzicky samostatnými databázemi, ale logicky — vynuceně na úrovni ORM s fail-safe (WHERE 1 = 0) tak, aby selhání kontextu znamenalo „nic“, nikoli „cizí data“.

Máte otázku, která tu není?

Bezpečnostní dotazník, DPA, vendor assessment — pošleme ten den. U nás to není obchodní proces, ale provozní.