Bezpečnost backendu

Bezpečnost backendu

Úč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é env promě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í.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *