Účel a kontext: bezpečnostní zásady v backendu
Backend je srdcem systému: pracuje s identitou, tajemstvími, daty a byznysem. Jeho kompromitace znamená únik dat, narušení kontinuity provozu i regulatorní dopady. Cílem tohoto článku je shrnout osvědčené zásady pro návrh, implementaci a provoz bezpečného backendu napříč API, integračními vrstvami, datovými úložišti a orchestrací.
Bezpečnostní principy: základní stavební kameny
- Defense-in-depth: více vrstev obrany (síť, identita, aplikační logika, data).
- Least privilege & need-to-know: minimální oprávnění pro uživatele, služby i procesy.
- Secure by default: bezpečné výchozí konfigurace, explicitní povolování výjimek.
- Zero Trust: žádná implicitní důvěra mezi službami; ověřování a autorizace při každé interakci.
- Fail-secure: chybové stavy nesmí otevřít přístup; upřednostňujte bezpečné selhání.
- Auditovatelnost: každá významná operace je dohledatelná s minimem osobních údajů v logu.
Modelování hrozeb a řízení rizik
- Identifikace aktiv: tajemství (klíče, tokeny), osobní údaje, obchodní logika, reputace značky.
- Hrozby: útoky injekcí, IDOR, SSRF, deserializace, RCE, DoS, únik tajemství, supply-chain.
- Kontroly: prevence, detekce, reakce; mapování rizik na konkrétní technické a procesní kroky.
Identita a autentizace
- Hesla: ukládejte pomocí Argon2id (preferováno) nebo bcrypt s adekvátním cost; unikátní salt, žádné pepře v kódu.
- MFA: TOTP/WebAuthn pro administrátory a citlivé účty; limity počtu požadavků a ochrana proti útokům hrubou silou na autentizačních endpointech.
- Federace: OIDC/SAML pro SSO; robustní validace state/nonce, rotace a krátká životnost kódů.
- Správa účtů: bezpečná obnova přístupu (časové okno, jednorázové tokeny), detekce anomálií při přihlašování.
Autorizace: RBAC, ABAC a prevence IDOR
- RBAC: role mapujte na povolené akce a zdroje; matice oprávnění udržujte v zásadách (nikoli v kódu).
- ABAC/ReBAC: pravidla založená na atributech entity, kontextu a vztazích (např. „vlastník objednávky“).
- Objektová autorizace: u každého dotazu ověřte, že volající má oprávnění ke konkrétnímu objektu (prevence IDOR).
- Izolace více tenantů: explicitní ID tenanta, row-level security a striktní filtry ve vrstvách DB.
Relace, tokeny a správa sezení
- Cookies: Secure, HttpOnly, SameSite=Lax/Strict; rotace session id po přihlášení; ochrana proti fixation.
- JWT: upřednostňujte krátkou životnost, rotaci refresh tokenů, revokační seznamy; validujte aud, iss, exp, nbf a podpis.
- CSRF: u autentizace založené na cookies používejte SameSite + synchronní tokeny/double-submit; u bezstavového API dávejte pozor na preflight.
- Vazba na zařízení: volitelně navázání relací na fingerprint/klíč zařízení u citlivých operací.
Šifrování dat a zabezpečení přenosu
- TLS: vyžadujte TLS 1.2+ (preferovaně 1.3), HSTS na okrajové vrstvě; odstraňte slabé sady šifer a renegociaci.
- mTLS mezi službami: identita služeb (SPIFFE/SPIRE), krátká platnost certifikátů, automatická rotace.
- Šifrování v klidu: envelope encryption s KMS/HSM; rotace a oddělení klíčů podle datových domén.
- PII a tajemství: selektivní šifrování citlivých sloupců, tokenizace a pseudonymizace.
Validace vstupů a sanitizace výstupů
- SQL/NoSQL injekce: používejte parametrizované dotazy/ORM; žádné spojování vstupů do dotazů.
- XSS při vykreslování na serveru: escapujte podle kontextu; nepředávejte dál nevalidované HTML.
- Path traversal a command injection: nepředávejte uživatelské vstupy shellu; používejte seznamy povolených cest a MIME typů.
- Deserializace: vyhněte se nezabezpečeným formátům; používejte striktní schémata (JSON Schema, Protobuf).
Zabezpečení API: REST, GraphQL, gRPC
- Vyjednávání obsahu: validujte
Content-Type/Accept; odmítejte neznámé typy. - Omezování počtu požadavků a throttling: limity na IP/uživatele/klíč; leaky bucket/token bucket.
- GraphQL: omezte hloubku, složitost a počet uzlů; autorizace pro jednotlivá pole a persisted queries.
- gRPC: TLS/mTLS povinné, kontrola velikosti zpráv, validace protokolů a schémat.
- Chyby: vracejte bezpečné kódy a zprávy (žádné stack traces ani interní identifikátory).
Ochrana proti SSRF, XXE a dalším specifickým zranitelnostem
- SSRF: ve výchozím nastavení blokujte interní IP/hostitele, používejte DNS pinning, allowlist destinací a izolované výstupní síťové zóny.
- XXE: vypněte externí entity, používejte bezpečné XML parsery nebo upřednostněte jiné než XML formáty.
- Injekce do šablon: nepředávejte uživatelská data jako šablony; používejte striktní sandbox.
Soubory a nahrávání
- Validace: detekce MIME typu (magické bajty), velikost, přípona; ukládejte mimo webový root.
- Transkódování: neutralizace aktivního obsahu (např. SVG → bezpečná rasterizace).
- Antivirus/DLP: asynchronní skenování, karanténa a auditní stopa.
Tajemství a konfigurace
- Správa tajemství: Vault/KMS, krátká životnost, dynamické přihlašovací údaje; žádná tajemství v repozitáři ani v proměnných logu CI.
- Rotace a sledování použití: povinná rotace klíčů, detekce anomálního přístupu.
- Konfigurace: princip „12-factor“; oddělení prostředí, feature flags s bezpečnými výchozími stavy.
Databáze a úložiště
- Oprávnění: samostatné účty pro každou službu, minimální práva (čtení/zápis pouze tam, kde je to nutné).
- Zabezpečení na úrovni řádků/sloupců: vynucujte na vrstvě DB; šifrujte citlivé sloupce.
- Zálohy: šifrované, testované obnovení, oddělená identita a audit.
- Indexy vs. citlivá data: pozor na únik prostřednictvím sekundárních indexů a plánů EXPLAIN.
HTTP hlavičky a bezpečnostní zásady na okrajové vrstvě
| Hlavička | Účel | Doporučení |
|---|---|---|
| Strict-Transport-Security | Vynucení HTTPS | max-age ≥ 6 měsíců, includeSubDomains |
| Content-Security-Policy | Zmírnění XSS/úniků | seznam povolených zdrojů, zákaz unsafe-inline |
| X-Content-Type-Options | Rozpoznávání MIME typu | nosniff |
| X-Frame-Options | Útoky clickjacking | SAMEORIGIN nebo CSP frame-ancestors |
| Referrer-Policy | Soukromí | strict-origin-when-cross-origin |
Kontejnerizace, orchestrátory a záruky za běhu
- Obrazy: minimální základ, podpis, SBOM; aktualizace při výskytu CVE (SCA).
- Běhové prostředí: read-only rootfs, no-new-privileges, seccomp/AppArmor/SELinux, runAsNonRoot.
- Síť: NetworkPolicies, mTLS mezi pody, kontrola odchozího provozu.
- Tajemství v K8s: používejte CSI/KMS; žádné proměnné
envpro vysoce citlivé klíče.
Omezování počtu požadavků, backpressure a odolnost
- Omezení požadavků: podle identity/IP/endpointu; zvlášť pro přihlášení a password reset.
- Odolnost: circuit breaker, opakování požadavků s jitterem, izolace threadpoolů pomocí bulkhead.
- Vzory založené na frontách: asynchronní zpracování náročných operací, fronty dead-letter.
Logování, monitorování a detekce hrozeb
- Strukturované logy: žádná tajemství; korelační ID; redakce osobních údajů.
- Metriky: latence, chybovost, anomální vzorce; slow query a neúspěšná přihlášení.
- SIEM a upozorňování: korelace událostí, pravidla pro exfiltraci a laterální pohyb.
Bezpečnostní testování v CI/CD
- SAST/DAST/IAST: statická i dynamická analýza v pipeline; blokování vydání při kritických nálezech.
- Fuzzing: generativní testování parserů a hranic rozhraní.
- Revize kódu a párové programování: povinná revize kódu citlivých částí (autentizace, kryptografie, DB).
- Canary a feature flags: bezpečné postupné nasazování s možností rychlého návratu.
Bezpečnost dodavatelského řetězce
- Závislosti: SCA, připnutí verzí, ověřování checksum, reprodukovatelné buildy.
- Artefakty: podepisujte kontejnery a balíčky; při nasazení ověřujte podpisy.
- Třetí strany: omezené klíče/rozsah API, rotace, monitorování přístupů.
Procesy, reakce na incidenty a compliance
- Runbooky: postupy pro únik klíče, napadení účtu, DoS, datový incident; kontakty a eskalace.
- Evidence: auditní stopy změn konfigurace a schvalování přístupů (SoD).
- GDPR/NIS2: minimalizace dat, retenční politiky, privacy by design, DPIA tam, kde to dává smysl.
Kontrolní seznam pro backendový tým
- Všechna API používají TLS 1.2+/HSTS; interně mTLS.
- Autentizace s MFA, bezpečná správa relací a krátkodobé JWT s rotací.
- Autorizace na úrovni objektu; ochrana proti IDOR.
- Parametrizované dotazy, validace podle schématu, žádná nebezpečná deserializace.
- Limity požadavků, ochrana proti útokům hrubou silou a DoS, bezpečné chybové zprávy.
- Správa tajemství v KMS/Vault; žádná tajemství v repozitáři.
- Logy bez osobních údajů/tajemství, metriky a upozorňování na anomálie.
- SAST/DAST v CI, pravidelné aktualizace závislostí a správa CVE.
- Bezpečné nahrávání souborů (MIME, velikost, transkódování), izolovaná úložiště.
- Runbooky a pravidelná cvičení incidentů; testy obnovy a záloh.
Závěr
Bezpečný backend nevzniká díky jednomu nástroji ani jediné kontrole. Je výsledkem konzistentních principů, disciplinovaného inženýrství a provozních procesů, které se vzájemně doplňují. Uplatňování principu least privilege, důsledná autorizace, robustní správa relací a tajemství spolu s průběžným testováním a monitorováním vytvářejí odolnou platformu, která se škáluje, splňuje regulatorní požadavky a chrání uživatele i vaše podnikání.
