13 osvědčených postupů pro zabezpečení mikroslužeb

Architektura mikroslužeb poskytuje flexibilitu, škálovatelnost a možnost upravovat, přidávat nebo odstraňovat softwarové komponenty bez ovlivnění ostatních částí aplikace.

Kromě kratších cyklů vývoje softwaru, menších týmů a flexibilních možností programovacího jazyka vám umožňuje škálovat nebo odstraňovat problémy s určitými funkcemi nebo službami, aniž byste zasahovali do ostatních komponent.

Mikroslužby obecně umožňují rozdělit velké monogamní aplikace na samostatně nasaditelné odlišné služby. Tyto menší nezávislé služby však zvyšují počet komponent, a proto je složitost a obtížnost jejich zabezpečení.

Obrázek architektury Monolithic-vs-microservices Červená čepice

Typické nasazení mikroslužeb bude mít obvykle vrstvy hardwaru, služby nebo aplikace, komunikace, cloudu, virtualizace a orchestrace. Každý z nich má specifické bezpečnostní požadavky, kontroly a výzvy.

Bezpečnostní výzvy spojené s Microservices

Mikroslužby jsou obvykle široce distribuované systémy se složitými přístupovými pravidly, větším provozem ke sledování a větším útočným prostorem. Většina cloudu mikroslužeb navíc běží v cloudových prostředích, která mají také různé konfigurace zabezpečení a ovládací prvky.

Vzhledem k velkému počtu rozhraní API, portů a komponent, které jsou vystaveny, nemusí tradiční brány firewall poskytovat dostatečné zabezpečení. Díky těmto problémům jsou nasazení mikroslužeb zranitelnější vůči různým kybernetickým hrozbám, jako je muž uprostřed, injekční útoky, skriptování mezi weby, DDoS a další.

Zabezpečení sítě je další výzvou pro mikroslužby. Zejména identita a řízení přístupu přebírají novou úroveň složitosti. Mezi další zranitelnosti patří nezabezpečený kód a chyby v systémech zjišťování služeb.

Přestože je zabezpečení mikroslužeb obtížnější než monolitické aplikace, můžete je účinně chránit stanovením dobré strategie a dodržováním osvědčených postupů.

V ideálním případě architektura vyžaduje distribuovaný přístup, který by měl pokrývat všechny různé komponenty.

Mezi typické oblasti k řešení patří

  • Ochrana aplikací, mikroslužeb a uživatelů
  • Zabezpečení správy identity a přístupu
  • Ochrana dat
  • Vylepšete zabezpečení komunikace mezi službami
  • Monitoring mikroslužeb a bezpečnostních systémů

Nejlepší postupy pro zabezpečení mikroslužeb

Jednou z nejlepších strategií je použití kombinace osvědčených postupů, nástrojů a kontrol k ochraně celého ekosystému. Skutečný přístup se může lišit podle typu služeb, aplikací, uživatelů, prostředí a dalších faktorů.

Pokud se rozhodnete používat mikroslužby, musíte se ujistit, že splňujete všechny požadavky na zabezpečení služeb, připojení a dat.

Pojďme se nyní podívat na některé účinné bezpečnostní postupy mikroslužeb.

#1. Budujte zabezpečení od začátku 👮

Udělejte zabezpečení součástí vývojového cyklu. V ideálním případě integrujte zabezpečení do vývoje a nasazení mikroslužeb hned od začátku. Řešení zabezpečení tímto způsobem je snadný, efektivní a levnější přístup než čekat na jeho přidání, když se vývoj softwaru blíží ke konci.

  Jak hrát Crusader Kings II na Linuxu

#2. Používejte obranu v hloubkovém mechanismu

Hloubková obrana (DiP) je technika, při které na své služby a data aplikujete několik vrstev zabezpečení. Tato praxe ztěžuje útočníkům proniknout přes více vrstev, a poskytuje tak silné zabezpečení vašich služeb a dat.

Na rozdíl od řešení zabezpečení perimetru, jako jsou firewally, je koncept hloubkové obrany odlišný. Spoléhá na kombinaci nástrojů, jako je antivirus, firewall, správa oprav, antispamový software a další, které poskytují více vrstev zabezpečení distribuovaných v celém systému.

Obrázek vícevrstvého zabezpečení do hloubky: Imperva

S tímto přístupem musíte nejprve identifikovat citlivé služby a poté kolem nich aplikovat příslušné vrstvy zabezpečení.

#3. Nasaďte zabezpečení na úrovni kontejneru 📦

Mikroslužby nejčastěji spoléhají na technologii kontejnerů. Zabezpečení kontejnerů, a to jak interně, tak externě, je tedy jedním ze způsobů, jak snížit útočnou plochu a rizika. V ideálním případě je zaměření na zásadu zabezpečení s co nejmenšími oprávněními osvědčeným postupem a vyžaduje kombinaci strategií, mimo jiné;

  • Omezení povolení na požadované minimum
  • Vyhněte se spouštění služeb a čehokoli jiného pomocí sudo nebo privilegovaných účtů.
  • Omezte nebo kontrolujte přístup a spotřebu dostupných zdrojů. Například omezení přístupu ke zdrojům operačního systému kontejnery pomáhá předcházet krádeži dat nebo kompromitaci.
  • Neukládejte tajemství na disk kontejneru.
  • Použijte vhodná pravidla k izolaci přístupu ke zdrojům.

Je také důležité zajistit, aby obrázky kontejnerů neměly žádné chyby zabezpečení nebo problémy se zabezpečením. Pravidelná kontrola zabezpečení a zranitelnosti kontejnerů pomůže identifikovat rizika.

Mezi typické nástroje pro skenování obrázků patří Clair, Kotvaa více.

#4. Nasaďte vícefaktorové ověřování 🔒

Povolení vícefaktorové autentizace zvyšuje zabezpečení front-endu.

Uživatelé, kteří přistupují, budou muset kromě jiné formy ověření, jako je kód zaslaný na jejich telefony nebo zadanou e-mailovou adresu, poskytnout své uživatelské jméno a heslo. Tato technika ztěžuje útočníkům, kteří mohou používat odcizené nebo hacknuté přihlašovací údaje, přístup k mikroslužbám, protože nebudou mít způsob, jak poskytnout druhou autentizaci.

#5. Použijte tokeny identity a přístupu uživatele

Při nasazení mikroslužeb bude velký počet aplikací a služeb vyžadovat bezpečnou autorizaci a řízení přístupu. Autorizační rámec, jako je OAuth 2.0 a OpenID, vám umožňuje zpracovávat tokeny bezpečně, a tím chránit vaše mikroslužby. To následně umožňuje aplikacím třetích stran přistupovat k dalším službám nebo datům od uživatelů.

V typickém nasazení hlavní aplikace vyzve uživatele, aby autorizoval službu třetí strany. Po přijetí toho aplikace vygeneruje přístupový token pro relaci.

Zejména OAuth je jednou z nejúčinnějších strategií pro kontrolu identity uživatele a řízení přístupu. Přestože existuje několik dalších autorizačních protokolů a můžete si také vytvořit svůj vlastní, je nejlepší používat OAuth protože je standardnější, stabilnější a široce přijímaný.

#6. Vytvořte bránu API

Mikroslužby se obecně skládají z několika komponent distribuovaných v různých sítích a dostupných z široké škály systémů a klientů. Odhalení mikroslužeb zvyšuje zranitelnosti a bezpečnostní rizika. Jedním ze způsobů, jak je chránit, je vytvořit jediný a bezpečný vstupní bod, který vám pomůže centralizovat veškerý přístup z externích systémů a klientů.

  12 nejlepších softwaru pro řízení projektů pro malé a střední podniky

Chcete-li toho dosáhnout, nasaďte bránu API, která bude kontrolovat všechny příchozí požadavky na problémy se zabezpečením před jejich směrováním do příslušných mikroslužeb. Brána API je umístěna mezi klientskými aplikacemi a mikroslužbami. Poté omezuje odhalování mikroslužeb a zároveň poskytuje další funkce správy požadavků, jako je autentizace, ukončení SSL, překlad protokolu, monitorování, směrování požadavků, ukládání do mezipaměti a další.

S tímto přístupem brána API směruje všechny externí služby do mikroslužeb a zároveň podporuje princip zabezpečení do hloubky.

Obrázek brány Microservices API Živá kniha

Mezi typické API brány patří NGINX, Kong, Tyk, Velvyslanec, Brána AWS APIa více.

Chcete-li se dozvědět více o zabezpečení API, podívejte se na naši příručku Proč a jak zabezpečit koncový bod API.

#7. Rozhraní API profilu založená na zóně nasazení

Implementujte omezení na základě rolí tím, že zajistíte, aby uživatelé měli přístup pouze k rozhraním API a službám, které potřebují. Protože většina škodlivého softwaru často zpřístupňuje službu více lidem, omezení přístupu pouze na autorizované uživatele snižuje rizika. Jednou z technik snížení expozice je označení API na základě uživatelů, kteří by k nim měli mít přístup. Obecně mohou být API;

  • Ethernet API – Pro služby vystavené vnějšímu světu mimo datové centrum.
  • Corporate Zone API – jsou určena pro interní privátní provoz
  • DMZ API – pro zpracování provozu, který pochází z internetu
  • Hybrid Zone API – pro nasazení v datových centrech

#8. Zabezpečte komunikaci mezi službami

Efektivní postupy zahrnují ověřování a autorizaci požadavků, když komunikují dvě mikroslužby.

Obecně existují tři hlavní techniky, které můžete použít k zabezpečení komunikace mezi službami. Jedná se o Trust the network, JSON Web Token (JWT) a Mutual Transport Layer Security (mTLS nebo Mutual TLS).

Zabezpečení komunikace mezi službami pomocí JWT Image Živá kniha

Z těchto tří je nejoblíbenější mTLS. V tomto přístupu musí každá mikroslužba nést pár veřejného/soukromého klíče. Klientská mikroslužba pak používá pár klíčů k autentizaci k přijímající mikroslužbě prostřednictvím mTLS.

Během ověřování každá mikroslužba generuje certifikát. Poté každá mikroslužba použije certifikát od druhé k autentizaci.

Zatímco TLS poskytuje integritu a důvěrnost přenášených dat, umožňuje také klientovi identifikovat mikroslužbu. Klientská mikroslužba obvykle zná druhou mikroslužbu. Protože je však TLS jednosměrné, přijímající mikroslužba nemůže ověřit klientskou mikroslužbu – a útočníci mohou tuto chybu zneužít. Na druhé straně poskytuje mTLS prostředek, ve kterém může každá z mikroslužeb identifikovat druhou.

#9. Limit sazby 🚏 návštěvnost klientů

Omezení externího provozu zabrání problémům, jako jsou útoky DoS (Denial of Service) a také případům, kdy někteří klienti spotřebovávají většinu šířky pásma aplikace. Jedním z přístupů je použití různých pravidel, která mohou monitorovat a řídit rychlost provozu odeslaného nebo přijatého od klienta na základě IP adresy, času atd.

  Jak vytvořit 3D efekty v CapCut

Nakonfigurujte své služby tak, aby se zpomalily, pokud zjistí několik neúspěšných pokusů o přihlášení k vašim rozhraním API nebo jakoukoli jinou podezřelou aktivitu.

Pomalý systém by útočníky odradil a pravděpodobně by vzdali pokus o přístup ke službám. Hodnotit limit můžete pomocí brány API, prostřednictvím kódu nebo jakoukoli jinou technikou. Většina prostředí SaaS má obvykle omezení rychlosti API, aby se minimalizovalo zneužití ze strany uživatelů a také útoky.

#10. Použijte správce orchestrace

Správci orchestrací vám kromě zvýšení zabezpečení umožňují automatizovat konfiguraci, koordinaci a další úlohy správy mikroslužeb. Nástroje vám obvykle umožňují spravovat více kontejnerů, omezovat přístup k metadatům, oddělovat pracovní zátěže, shromažďovat protokoly a další.

Některé nástroje pro orchestraci mají další funkce, které umožňují vývojářům ukládat a sdílet citlivé informace, jako jsou certifikáty SSL, šifrovací klíče, hesla a tokeny identity.

Dvě běžně používané metody pro efektivní orchestraci mikroslužeb jsou;

  • Kódování orchestrace jako mikroslužby
  • Použití bran API k poskytnutí orchestrační vrstvy

Orchestrace přes bránu API se nedoporučuje kvůli problémům, když je potřeba škálovat služby.

Vrstva orchestrace mikroslužeb – Image Globální logika

Mezi typické nástroje pro správu orchestrace patří Kubernetes, Istio, Azure Kubernetes Service (AKS)atd.

Chcete-li se dozvědět více, prozkoumejte Container Orchestrace for DeOps.

#11. Sledujte všechny své systémy a služby

Protože mikroslužby spoléhají na distribuované systémy, musíte mít spolehlivou a efektivní strategii monitorování pro všechny jednotlivé komponenty.

Nasazení nepřetržitého monitorování umožňuje včas odhalit a řešit bezpečnostní rizika. K tomu existuje široká škála řešení pro monitorování mikroslužeb, včetně Prometheus, Statsd, InfluxDB, Logstashatd.

Monitorování uvnitř architektury mikroslužeb

Použijte vhodné nástroje k monitorování interních systémů a služeb. Některé osvědčené postupy zahrnují;

  • Povolit protokolování na aplikační vrstvě. Můžeš Splunk, Graphana, ELK zásobníka další nástroje, které shromažďují protokoly na úrovni aplikace, kontejneru, sítě a infrastruktury.
  • Sledujte metriky používání
  • Použijte trendy v metrikách, jako je CPU, paměť, doba odezvy, chyby, upozornění a další, k odhalení neobvyklých aktivit svědčících o existujícím nebo potenciálním útoku.
  • Auditujte protokoly v oblastech, jako jsou příchozí požadavky klientů, databázové záznamy, kontejnery a další, abyste zjistili nesrovnalosti nebo neobvyklé aktivity.

#12. Automatizujte bezpečnostní činnosti

Automatizujte procesy zabezpečení, jako je zavádění aktualizací, skenování zranitelnosti, monitorování, vynucování zásad a další aktivity. Kromě toho zkontrolujte aktualizace, abyste se ujistili, že jsou bezpečné a že nezavádějí nové chyby zabezpečení.

Po aktualizacích by měl bezpečnostní software v ideálním případě provést testy na všech kontejnerech a mikroslužbách, aby zjistil, zda nemohly existovat nějaké zranitelnosti nebo bezpečnostní problémy, které se vyskytly dříve.

#13. Chraňte 🛡️ data za všech okolností

Chraňte data při přenosu i v klidu. V ideálním případě vynutit používání HTTPS pro veškerou komunikaci, pro zabezpečení dat při přenosu a šifrování pro všechna citlivá data v klidu. Vyhněte se přenosu a ukládání hesel, klíčů, přihlašovacích údajů a citlivých dat ve formátu prostého textu, která se nacházejí mimo kód.

Nejlepší strategií je zašifrovat všechna citlivá data co nejdříve pomocí standardních technologií. Také dešifrujte data co nejpozději, abyste snížili expozici.

Závěr

Mikroslužby spoléhají na distribuované komponenty, které poskytují výhody, jako je větší flexibilita a možnosti nasazení. Při používání mikroslužeb však organizace musí upravit interní bezpečnostní politiky a strategie směrem k nativnímu a distribuovanému přístupu.

V ideálním případě se zaměřte na snížení plochy útoku, ochranu prostředí mikroslužeb, rozhraní API, aplikací a dat.