Úč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; 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í, supply-chain.
- Kontroly: prevence, detekce, reakce; mapování rizik na konkrétní technické a procesní kroky.
Identita a autentizace
- Hesla: ukládejte s 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; rate-limity a anti-bruteforce na auth endpointech.
- Federace: OIDC/SAML pro SSO; robustní validace state/nonce, rotace a zkrácená životnost kódů.
- Správa účtů: bezpečné recovery (časové okno, jednorázové tokeny), detekce anomálií přihlášení.
Autorizace: RBAC, ABAC a prevence IDOR
- RBAC: role mapujte na povolené akce a zdroje; držte 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á právo ke konkrétnímu objektu (prevence IDOR).
- Multi-tenant izolace: explicitní tenant ID, row-level security a striktní filtry v DB vrstvách.
Relace, tokeny a správa sezení
- Cookies: Secure, HttpOnly, SameSite=Lax/Strict; rotace session id po přihlášení; ochrana proti fixation.
- JWT: preferujte krátkou životnost, rotaci refresh tokenů, revokační seznamy; validujte aud, iss, exp, nbf a podpis.
- CSRF: u cookie-based auth používejte SameSite + synchronní tokeny/double-submit; u stateless API dejte pozor na preflight.
- Device binding: volitelně vázání relací na fingerprint/klíč zařízení u citlivých operací.
Šifrování dat a transportní bezpečnost
- TLS: vyžadujte TLS 1.2+ (prefer. 1.3), HSTS na edge; odstraňte slabé suite a renegociace.
- mTLS mezi službami: identita služeb (SPIFFE/SPIRE), krátké certifikáty, automatická rotace.
- Šifrování v klidu: envelope encryption s KMS/HSM; rotace a oddělení klíčů podle domén dat.
- PII a tajemství: selektivní šifrování citlivých sloupců, tokenizace a pseudonymizace.
Validace vstupů a hygieny výstupů
- SQL/NoSQL injekce: používejte parametrizované dotazy/ORM; žádná konkatenace vstupů do dotazů.
- XSS na server-renderingu: escapujte kontextově; nepřeposílejte nevalidovaná HTML.
- Path traversal & command injection: nepředávejte uživatelské vstupy do shellu; whitelist cest a MIME typů.
- Deserializace: vyhněte se unsafe formátům; používejte přísné schéma (JSON Schema, Protobuf).
API bezpečnost: REST, GraphQL, gRPC
- Content negotiation: validujte
Content-Type/Accept; odmítejte neznámé typy. - Rate limiting & throttling: limity per IP/uživatel/klíč; leaky bucket/token bucket.
- GraphQL: limit hloubky, složitosti a počet uzlů; per-field autorizace 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 speciálním zranitelnostem
- SSRF: výchozí blokace vnitřních IP/hostů, DNS pinning, allowlist destinací, izolované egress zóny.
- XXE: vypněte externí entity, použijte bezpečné XML parsery nebo preferujte ne-XML formáty.
- Template injekce: nepředávejte uživatelská data jako šablony; striktní sandbox.
Soubory a uploady
- Validace: MIME-detection (magické bajty), velikost, rozšíření; ukládejte mimo web root.
- Transkodování: neutralizace aktivního obsahu (např. SVG → bezpečná rasterizace).
- Antivirus/DLP: asynchronní sken, karanténa a auditní stopa.
Tajemství a konfigurace
- Secret management: Vault/KMS, krátká životnost, dynamické přihlašovací údaje; žádná tajemství v repozitáři ani v proměnných CI logu.
- Rotace a sledování použití: 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 per služba, minimální práva (čtení/zápis jen kde nutné).
- Row/Column-level security: vynucujte na DB vrstvě; šifrujte citlivé sloupce.
- Zálohy: šifrované, testované obnovení, oddělená identita a audit.
- Indexy vs. citlivá data: pozor na únik 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ů | whitelist zdrojů, zákaz unsafe-inline |
| X-Content-Type-Options | MIME sniffing | nosniff |
| X-Frame-Options | Klikací únosy | SAMEORIGIN nebo CSP frame-ancestors |
| Referrer-Policy | Soukromí | strict-origin-when-cross-origin |
Konterjnerizace, orchestrátory a runtime záruky
- Obrazy: minimální základ, podpis, SBOM; aktualizace CVE (SCA).
- Runtime: read-only rootfs, no-new-privileges, seccomp/AppArmor/SELinux, runAsNonRoot.
- Síť: NetworkPolicies, mTLS mezi pody, egress kontrola.
- Tajemství v K8s: používejte CSI/KMS; žádné
envproměnné pro vysoce citlivé klíče.
Rate limiting, backpressure a odolnost
- Omezení požadavků: per identita/ip/endpoint; zvlášť pro login a password reset.
- Odolnost: circuit breaker, retry s jitterem, bulkhead izolace threadpoolů.
- Queue-first vzory: asynchronní zpracování drahých operací, dead-letter fronty.
Logování, monitorování a detekce hrozeb
- Strukturované logy: žádná tajemství; korelační ID; redakce PII.
- Metriky: latence, chybovost, anomální vzorce; slow query a neúspěšné loginy.
- SIEM a alerting: korelace událostí, pravidla pro exfiltraci a laterální pohyb.
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 hran rozhraní.
- Review & párové programování: povinné code review pro citlivé části (auth, 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, pinning verzí, checksum ověřování, reprodukovatelné buildy.
- Artefakty: podepisujte kontejnery a balíčky; ověřujte podpisy při deployi.
- Třetí strany: omezené klíče/API scope, rotace, monitoring přístupů.
Procesy, incident response 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.
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 a DoS, bezpečné chyby.
- 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é dependency upgrady a CVE management.
- Bezpečné uploady (MIME, velikost, transkodová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í.