Bezpečnostní zásady pro backendové systémy

Účel a kontext: bezpečnostní zásady v backendu

Backend je srdcem systému: pracuje s identitou, tajemstvími, daty a podnikáním. 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; preferujte bezpečné selhání.
  • Auditovatelnost: každá významná operace je dohledatelná s minimem osobních dat v logu.

Modelování hrozeb a řízení rizik

  • Identifikace aktiv: tajemství (klíče, tokeny), osobní data, obchodní logika, reputace značky.
  • Hrozby: útoky injekcí, IDOR, SSRF, deserializace, RCE, DoS, únik tajemství, dodavatelský řetězec.
  • 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 faktorem; unikátní salt, žádné pepře v kódu.
  • MFA: TOTP/WebAuthn pro administrátory a citlivé účty; rate-limity a ochrana proti bruteforce útokům na autentizačních koncových bodech.
  • Federace: OIDC/SAML pro SSO; robustní validace state/nonce, rotace a krátká životnost autorizačních kódů.
  • Správa účtů: bezpečné obnovování (časové okno, jednorázové tokeny), detekce anomálií v přihlášení.

Autorizace: RBAC, ABAC a prevence IDOR

  • RBAC: mapujte role na povolené akce a zdroje; udržujte matice práv v politice (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 multi-tenant prostředí: explicitní tenant ID, row-level security a striktní filtry v databázové vrstvě.

Relace, tokeny a správa sezení

  • Cookies: Secure, HttpOnly, SameSite=Lax/Strict; rotace session id po přihlášení; ochrana proti fixation útokům.
  • JWT: preferujte krátkou životnost, rotaci refresh tokenů, revokační seznamy; validujte aud, iss, exp, nbf a digitální podpis.
  • CSRF: u cookie-based autentizace používejte SameSite a synchronní tokeny/double-submit cookie; u stateless API věnujte pozornost preflight požadavkům.
  • Device binding: volitelně vázání relací na fingerprint nebo klíč zařízení u citlivých operací.

Šifrování dat a transportní bezpečnost

  • TLS: vyžadujte TLS 1.2+ (preferováno 1.3), HSTS na edge; vyřaďte slabé kryptografické sady a renegociace.
  • mTLS mezi službami: identita služeb (SPIFFE/SPIRE), krátkodobé certifikáty, automatická obnova.
  • Šifrování v klidu: envelope encryption s KMS/HSM; rotace a segregace klíčů dle datových domén.
  • PII a tajemství: selektivní šifrování citlivých sloupců, tokenizace a pseudonymizace.

Validace vstupů a hygiena výstupů

  • SQL/NoSQL injekce: používejte parametrizované dotazy či ORM; nikdy nespojujte vstupy do dotazů.
  • XSS při serverovém renderingu: escapujte podle kontextu; nepřeposílejte nevalidovaný HTML obsah.
  • Path traversal & command injection: neupravujte uživatelské vstupy přímo do shellu; whitelist cest a MIME typů.
  • Deserializace: vyhněte se nebezpečným formátům; používejte přísná schémata (JSON Schema, Protobuf).

API bezpečnost: REST, GraphQL, gRPC

  • Content negotiation: validujte Content-Type a Accept hlavičky; odmítejte neznámé či nečekané typy.
  • Rate limiting & throttling: omezení podle IP, uživatele či klíče; leaky bucket nebo token bucket algoritmy.
  • GraphQL: omezujte hloubku dotazů, složitost a počet uzlů; autorizace na úrovni polí a využití persisted queries.
  • gRPC: povinné TLS/mTLS, kontrola velikosti zpráv, validace protokolů a schémat.
  • Chybové zprávy: vracejte bezpečné kódy a zprávy bez stack trace ani vnitřních identifikátorů.

Ochrana proti SSRF, XXE a dalším specifickým zranitelnostem

  • SSRF: výchozí blokace vnitřních IP/hostitelů, DNS pinning, allowlist destinací, izolované egress zóny.
  • XXE: deaktivujte externí entity, používejte bezpečné XML parsers nebo preferujte ne-XML formáty.
  • Template injection: nepředávejte uživatelská data jako šablony; používejte striktní sandboxing.

Soubory a nahrávání

  • Validace: detekce MIME typu (magické bajty), kontrola velikosti a přípony; ukládání mimo web root.
  • Transkódování: neutralizace aktivního obsahu (např. SVG → bezpečná rastrová grafika).
  • Antivirus/DLP: asynchronní skenování, karanténa a auditní stopy.

Tajemství a konfigurace

  • Správa tajemství: Vault/KMS, krátká životnost, dynamické přihlašovací údaje; žádná tajemství v repozitářích ani v logech CI.
  • Rotace a sledování používání: povinné rotace klíčů, detekce anomálních přístupů.
  • 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í: separátní účty pro každou službu, minimální práva (čtení/zápis jen tam, kde nezbytné).
  • Row/Column-level security: vynucováno na databázové vrstvě; šifrování citlivých sloupců.
  • Zálohy: šifrované, pravidelně testované obnovení, oddělená identita a audit.
  • Indexy vs. citlivá data: pozor na únik dat skrze sekundární indexy a EXPLAIN plány.

HTTP hlavičky a bezpečnostní zásady na edge

Hlavička Účel Doporučení
Strict-Transport-Security Vynucení HTTPS max-age ≥ 6 měsíců, includeSubDomains
Content-Security-Policy Mitigace XSS/úniků dat whitelist zdrojů, zákaz unsafe-inline
X-Content-Type-Options Zamezení MIME sniffingu nosniff
X-Frame-Options Ochrana proti clickjacking útokům SAMEORIGIN nebo CSP frame-ancestors
Referrer-Policy Ochrana soukromí strict-origin-when-cross-origin

Kontainerizace, orchestrátory a runtime záruky

  • Obrazy: minimální základ, podpis, SBOM; aktualizace známých zranitelností (SCA).
  • Runtime: read-only rootfs, no-new-privileges, seccomp/AppArmor/SELinux, runAsNonRoot.
  • Síť: NetworkPolicies, mTLS mezi pody, kontrola egress provozu.
  • Tajemství v Kubernetes: používejte CSI/KMS; vyhýbejte se env proměnným pro vysoce citlivé klíče.

Rate limiting, backpressure a odolnost

  • Omezení požadavků: podle identity, IP a endpointu; zvlášť pro přihlášení a reset hesla.
  • Odolnost: circuit breaker, retry s jitterem, bulkhead izolace threadpoolů.
  • Queue-first vzory: asynchronní zpracování náročných operací, dead-letter fronty.

Logování, monitorování a detekce hrozeb

  • Strukturované logy: bez tajemství; korelační ID; redakce osobních údajů.
  • Metriky: latence, chybovost, anomální vzorce; pomalé dotazy a neúspěšné pokusy o přihlášení.
  • SIEM a alerting: korelace událostí, pravidla pro detekci exfiltrace a laterálního pohybu.

Testování bezpečnosti v CI/CD

  • SAST/DAST/IAST: statická i dynamická analýza v pipeline; blokace releasů při kritických nálezech.
  • Fuzzing: generativní testování parserů a hranic rozhraní.
  • Code review & párové programování: povinné pro citlivé části (autentizace, kryptografie, DB).
  • Canary nasazení a feature flags: bezpečné postupné nasazování s možností rychlého návratu.

Bezpečnost dodavatelského řetězce

  • Závislosti: SCA, pinning verzí, ověřování checksumů, reprodukovatelné buildy.
  • Artefakty: podepisujte kontejnery a balíčky; ověřujte podpisy při nasazení.
  • Třetí strany: omezené klíče/API scope, rotace, monitoring přístupů.

Procesy, incident response a compliance

  • Runbooky: postupy pro únik klíče, kompromitaci účtu, DoS a datové incidenty; kontakty a eskalace.
  • Evidence: auditní stopy změn konfigurace a schvalování přístupů (Separation of Duties).
  • GDPR/NIS2: minimalizace dat, retenční politiky, privacy by design, DPIA tam, kde je relevantní.

Checklist pro tým backendu

  • Všechna API za TLS 1.2+/HSTS; interně mTLS.
  • Autentizace s MFA, bezpečná správa relací a krátké JWT s rotací.
  • Autorizace na úrovni objektu; ochrana proti IDOR.
  • Parametrizované dotazy, validace schématem, žádná nebezpečná deserializace.
  • Rate-limity, ochrana proti bruteforce útokům a DoS, bezpečné chybové zprávy.
  • Secret management v KMS/Vault; žádná tajemství v repozitáři.
  • Logy bez PII/tajemství, metriky a alerting na anomálie.
  • SAST/DAST v CI, pravidelné aktualizace závislostí a management CVE.
  • Bezpečné uploady (kontrola MIME, velikosti, 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á jedním nástrojem ani jedinou kontrolou. Je výsledkem konzistentních principů, disciplinovaného inženýrství a provozních procesů, které se navzájem doplňují. Přijetí least privilege, důsledná autorizace, robustní správa relací a tajemství, spolu s průběžným testováním a monitoringem vytváří odolnou platformu, která škáluje, splňuje regulatorní požadavky a chrání uživatele i vaše podnikání.