Mikropakalpojumu arhitektūra nodrošina elastību, mērogojamību un iespēju modificēt, pievienot vai noņemt programmatūras komponentus, neietekmējot citas lietojumprogrammas daļas.
Papildus īsākiem programmatūras izstrādes cikliem, mazākām komandām un elastīgām programmēšanas valodas opcijām, tas ļauj mērogot vai novērst noteiktas funkcijas vai pakalpojumus, netraucējot citiem komponentiem.
Parasti mikropakalpojumi ļauj sadalīt lielas monogāmas lietojumprogrammas neatkarīgi izvietojamos atsevišķos pakalpojumos. Tomēr šie mazākie neatkarīgie pakalpojumi palielina komponentu skaitu, līdz ar to ir sarežģītība un grūtības to nodrošināšana.
Monolītā un mikropakalpojumu arhitektūra Attēls Sarkana cepure
Parasti tipiskai mikropakalpojumu izvietošanai ir aparatūras, pakalpojuma vai lietojumprogrammas, komunikācijas, mākoņa, virtualizācijas un orķestrēšanas slāņi. Katrai no tām ir īpašas drošības prasības, vadīklas un izaicinājumi.
Ar mikropakalpojumiem saistītie drošības izaicinājumi
Mikropakalpojumi parasti ir plaši izplatītas sistēmas ar sarežģītiem piekļuves noteikumiem, lielāku pārraugāmo trafiku un lielāku uzbrukuma virsmu. Turklāt lielākā daļa mikropakalpojumu mākoņa darbojas mākoņa vidēs, kurām ir arī dažādas drošības konfigurācijas un vadīklas.
Tā kā ir pieejams liels API, portu un komponentu skaits, tradicionālie ugunsmūri var nenodrošināt atbilstošu drošību. Šīs problēmas padara mikropakalpojumu izvietošanu neaizsargātāku pret dažādiem kiberdraudiem, piemēram, cilvēku vidū, injekcijas uzbrukumiem, starpvietņu skriptēšanu, DDoS un citiem.
Tīkla drošība ir vēl viens mikropakalpojumu izaicinājums. Jo īpaši identitāte un piekļuves kontrole iegūst jaunu sarežģītības līmeni. Citas ievainojamības ietver nedrošu kodu un trūkumus pakalpojumu atklāšanas sistēmās.
Lai gan nodrošināt mikropakalpojumus ir grūtāk nekā monolītās lietojumprogrammas, jūs varat tos efektīvi aizsargāt, izveidojot labu stratēģiju un ievērojot labāko praksi.
Ideālā gadījumā arhitektūrai ir nepieciešama izplatīta pieeja, kas aptver visus dažādos komponentus.
Tipiski jārisina jomas
- Lietojumprogrammu, mikropakalpojumu un lietotāju aizsardzība
- Identitātes un piekļuves pārvaldības nodrošināšana
- Datu aizsardzība
- Uzlabojiet sakaru drošību starp pakalpojumiem
- Mikropakalpojumu un drošības sistēmu uzraudzība
Mikropakalpojumu nodrošināšanas labākā prakse
Viena no labākajām stratēģijām ir izmantot paraugprakses, rīku un kontroles līdzekļu kombināciju, lai aizsargātu visu ekosistēmu. Faktiskā pieeja var atšķirties atkarībā no pakalpojumu veida, lietojumprogrammām, lietotājiem, vides un citiem faktoriem.
Ja izlemjat izmantot mikropakalpojumus, jums ir jāpārliecinās, ka atbilstat visām pakalpojumu, savienojumu un datu drošības prasībām.
Tagad apskatīsim dažas efektīvas mikropakalpojumu drošības prakses.
#1. Izveidojiet drošību jau no paša sākuma 👮
Padariet drošību par attīstības cikla sastāvdaļu. Ideālā gadījumā integrējiet drošību mikropakalpojumu izstrādē un izvietošanā jau pašā sākumā. Šādi risināt drošības jautājumus ir vienkārša, efektīva un lētāka pieeja, nekā gaidīt, lai to pievienotu, kad programmatūras izstrāde tuvojas beigām.
#2. Izmantojiet aizsardzību dziļuma mehānismā
Padziļināta aizsardzība (DiP) ir paņēmiens, kurā saviem pakalpojumiem un datiem izmantojat vairākus drošības slāņus. Šī prakse apgrūtina uzbrucēju iekļūšanu vairākos slāņos, tādējādi nodrošinot spēcīgu jūsu pakalpojumu un datu drošību.
Atšķirībā no perimetra drošības risinājumiem, piemēram, ugunsmūriem, padziļinātās aizsardzības koncepcija atšķiras. Tas balstās uz tādu rīku kombināciju kā pretvīruss, ugunsmūris, ielāpu pārvaldība, pretsurogātpasta programmatūra un citi, lai nodrošinātu vairākus drošības slāņus, kas izplatīti visā sistēmā.
Padziļinātas aizsardzības daudzslāņu drošības attēls: Imperva
Izmantojot šo pieeju, vispirms ir jāidentificē sensitīvie pakalpojumi, pēc tam ap tiem tiek piemēroti atbilstošie drošības slāņi.
#3. Ieviesiet drošību konteinera 📦 līmenī
Visbiežāk mikropakalpojumi balstās uz konteineru tehnoloģiju. Tādējādi konteineru nostiprināšana gan no iekšpuses, gan no ārpuses ir viens no veidiem, kā samazināt uzbrukuma virsmu un riskus. Ideālā gadījumā vismazāko privilēģiju drošības principa mērķis ir laba prakse, un tai ir nepieciešama stratēģiju kombinācija, tostarp, bet ne tikai;
- Atļaujas ierobežošana līdz nepieciešamajam minimumam
- Izvairieties palaist pakalpojumus un jebko citu, izmantojot sudo vai priviliģētos kontus.
- Ierobežojiet vai kontrolējiet pieejamo resursu piekļuvi un patēriņu. Piemēram, ierobežojot konteineru piekļuvi operētājsistēmas resursiem, tiek novērsta datu zādzība vai kompromitēšana.
- Neglabājiet noslēpumus konteinera diskā.
- Izmantojiet atbilstošus noteikumus, lai izolētu piekļuvi resursiem.
Ir arī svarīgi nodrošināt, lai konteinera attēliem nebūtu ievainojamību vai drošības problēmu. Regulāra konteineru drošības un ievainojamības skenēšana palīdzēs identificēt riskus.
Tipiski attēlu skenēšanas rīki ietver Klēra, Enkursun vēl.
#4. Ieviesiet vairāku faktoru autentifikāciju 🔒
Daudzfaktoru autentifikācijas iespējošana uzlabo priekšgala drošību.
Lietotājiem, kuri piekļūst, būs jānorāda savs lietotājvārds un parole papildus cita veida verifikācijai, piemēram, kodam, kas nosūtīts uz viņu tālruņiem vai norādītai e-pasta adresei. Šis paņēmiens apgrūtina uzbrucējiem, kuri, iespējams, izmanto zagtus vai uzlauztus akreditācijas datus, piekļuvi mikropakalpojumiem, jo viņiem nebūs iespējas nodrošināt otro autentifikāciju.
#5. Izmantojiet lietotāja identitātes un piekļuves pilnvaras
Mikropakalpojumu izvietošanā lielam skaitam lietojumprogrammu un pakalpojumu būs nepieciešama droša autorizācija un piekļuves kontrole. Autorizācijas sistēma, piemēram, OAuth 2.0 un OpenID, ļauj droši apstrādāt marķierus, tādējādi aizsargājot savus mikropakalpojumus. Līdz ar to tas ļauj trešo pušu lietojumprogrammām piekļūt citiem pakalpojumiem vai lietotāju datiem.
Parastā izvietošanā galvenā lietojumprogramma liks lietotājam autorizēt trešās puses pakalpojumu. Pieņemot to, lietojumprogramma ģenerē sesijas piekļuves pilnvaru.
Konkrēti, OAuth ir viena no efektīvākajām lietotāju identitātes un piekļuves kontroles stratēģijām. Lai gan ir vairāki citi autorizācijas protokoli, un jūs varat arī izveidot savu, labākā prakse ir izmantot OAuth jo ir standarta, stabilāks un plaši pieņemts.
#6. Izveidojiet API vārteju
Parasti mikropakalpojumi sastāv no vairākiem komponentiem, kas sadalīti dažādos tīklos un ir pieejami no plaša sistēmu un klientu klāsta. Mikropakalpojumu atklāšana palielina ievainojamības un drošības riskus. Viens no veidiem, kā tos aizsargāt, ir izveidot vienotu un drošu ieejas punktu, kas palīdz centralizēt visu piekļuvi no ārējām sistēmām un klientiem.
Lai to panāktu, izvietojiet API vārteju, lai pārbaudītu visus ienākošos drošības problēmu pieprasījumus, pirms tos novirzāt uz attiecīgajiem mikropakalpojumiem. API vārteja atrodas starp klienta lietojumprogrammām un mikropakalpojumiem. Pēc tam tas ierobežo mikropakalpojumu atklāšanu, vienlaikus nodrošinot papildu pieprasījumu pārvaldības funkcijas, piemēram, autentifikāciju, SSL pārtraukšanu, protokola tulkošanu, uzraudzību, pieprasījumu maršrutēšanu, kešatmiņu un citas.
Izmantojot šo pieeju, API vārteja novirza visus ārējos pakalpojumus uz mikropakalpojumiem, vienlaikus atbalstot arī padziļinātas aizsardzības principu.
Mikropakalpojumu API vārtejas attēls Tiešraides grāmata
Tipiski API vārtejas ietver NGINX, Kong, Tyk, Vēstnieks, AWS API vārtejaun vēl.
Lai uzzinātu vairāk par API drošību, skatiet mūsu ceļvedi Kāpēc un kā aizsargāt API galapunktu.
#7. Profila API, kuru pamatā ir izvietošanas zona
Ieviesiet uz lomām balstītus ierobežojumus, nodrošinot, ka lietotājiem ir piekļuve tikai tiem nepieciešamajiem API un pakalpojumiem. Tā kā lielākā daļa ļaunprātīgas programmatūras pakalpojumu bieži pakļauj lielākam skaitam cilvēku, piekļuves ierobežošana tikai pilnvarotiem lietotājiem samazina riskus. Viena iedarbības samazināšanas metode ir API marķēšana, pamatojoties uz lietotājiem, kuriem tām vajadzētu piekļūt. Parasti API var būt;
- Ethernet API — pakalpojumiem, kas ir pakļauti ārējai pasaulei ārpus datu centra.
- Corporate Zone API — tās ir paredzētas iekšējai privātai trafikam
- DMZ API — lai apstrādātu datplūsmu, kas nāk no interneta
- Hibrīda zonas API — datu centru izvietošanai
#8. Nodrošiniet sakarus starp pakalpojumiem
Efektīva prakse ietver pieprasījumu autentifikāciju un autorizāciju, kad sazinās divi mikropakalpojumi.
Parasti starpdienestu sakaru nodrošināšanai varat izmantot trīs galvenās metodes. Tie ir Trust the network, JSON Web Token (JWT) un Mutual Transport Layer Security (mTLS vai Mutual TLS).
Starpdienestu sakaru nodrošināšana ar JWT Image Tiešraides grāmata
No trim vispopulārākā ir mTLS. Šajā pieejā katram mikropakalpojumam ir jābūt publiskam/privātam atslēgu pārim. Pēc tam klienta mikropakalpojums izmanto atslēgu pāri, lai autentificētos saņemošajā mikropakalpojumā, izmantojot mTLS.
Autentifikācijas laikā katrs mikropakalpojums ģenerē sertifikātu. Pēc tam katrs mikropakalpojums izmantos otra sertifikātu, lai sevi autentificētu.
Lai gan TLS nodrošina sūtāmo datu integritāti un konfidencialitāti, tas arī ļauj klientam identificēt mikropakalpojumu. Klienta mikropakalpojums parasti zina otru mikropakalpojumu. Tomēr, tā kā TLS ir vienvirziena, saņemošais mikropakalpojums nevar pārbaudīt klienta mikropakalpojumu, un uzbrucēji var izmantot šo trūkumu. No otras puses, mTLS nodrošina līdzekli, ar kuru katrs no mikropakalpojumiem var identificēt otru.
#9. Likmes ierobežojums 🚏 klientu trafika
Ārējās trafika ierobežošana novērš tādas problēmas kā pakalpojuma atteikuma (DoS) uzbrukumi, kā arī gadījumus, kad daži klienti patērē lielāko daļu lietojumprogrammas joslas platuma. Viena pieeja ir piemērot dažādus noteikumus, kas var uzraudzīt un kontrolēt no klienta nosūtītās vai saņemtās trafika ātrumu, pamatojoties uz IP, laiku utt.
Konfigurējiet savus pakalpojumus, lai tie palēninātu, ja tie konstatē vairākus neveiksmīgus pieteikšanās mēģinājumus jūsu API vai jebkuru citu aizdomīgu darbību.
Lēna sistēma atturētu uzbrucējus un, iespējams, atteiktos no mēģinājumiem piekļūt pakalpojumiem. Varat noteikt ierobežojumu, izmantojot API vārteju, kodu vai jebkuru citu paņēmienu. Parasti lielākajai daļai SaaS vidi ir API ātruma ierobežojums, lai samazinātu lietotāju ļaunprātīgu izmantošanu, kā arī uzbrukumus.
#10. Izmantojiet orķestrēšanas vadītājus
Orķestrāciju vadītāji ļauj automatizēt konfigurāciju, koordināciju un citus mikropakalpojumu pārvaldības uzdevumus papildus drošības uzlabošanai. Parasti rīki ļauj pārvaldīt vairākus konteinerus, ierobežot piekļuvi metadatiem, nodalīt darba slodzi, apkopot žurnālus un veikt citas darbības.
Dažiem orķestrēšanas rīkiem ir papildu funkcijas, kas ļauj izstrādātājiem saglabāt un koplietot sensitīvu informāciju, piemēram, SSL sertifikātus, šifrēšanas atslēgas, paroles un identitātes marķierus.
Divas biežāk izmantotās metodes efektīvai mikropakalpojumu orķestrēšanai ir:
- Orķestrācijas kodēšana kā mikropakalpojums
- API vārtejas izmantošana, lai nodrošinātu orķestrēšanas slāni
Orķestrēšana, izmantojot API vārteju, nav ieteicama problēmu dēļ, kad ir nepieciešams mērogot pakalpojumus.
Mikropakalpojumu orķestrēšanas slānis – attēls Globālā loģika
Tipiski orķestrācijas pārvaldības rīki ietver Kubernetes, Istio, Azure Kubernetes pakalpojums (AKS)utt.
Lai uzzinātu vairāk, izpētiet Container Orchestration for DeOps.
#11. Pārraugiet visas savas sistēmas un pakalpojumus
Tā kā mikropakalpojumi balstās uz sadalītām sistēmām, jums ir nepieciešama uzticama un efektīva visu atsevišķu komponentu uzraudzības stratēģija.
Nepārtrauktas uzraudzības ieviešana ļauj laikus atklāt un novērst drošības riskus. Lai to panāktu, ir pieejams plašs mikropakalpojumu uzraudzības risinājumu klāsts, tostarp Prometejs, Statsd, InfluxDB, Logstashutt.
Uzraudzība mikropakalpojumu arhitektūrā
Izmantojiet piemērotus rīkus, lai uzraudzītu iekšējās sistēmas un pakalpojumus. Dažas labākās prakses ietver:
- Iespējot reģistrēšanu lietojumprogrammas slānī. Jūs varat Splunk, Grafāna, ELK kaudzeun citi rīki, kas apkopo žurnālus lietojumprogrammas, konteinera, tīkla un infrastruktūras līmenī.
- Pārraugiet lietošanas rādītājus
- Izmantojiet tādas metrikas tendences kā centrālais procesors, atmiņa, reakcijas laiks, kļūdas, paziņojumi un citi, lai noteiktu neparastas darbības, kas liecina par esošu vai iespējamu uzbrukumu.
- Pārbaudiet žurnālus tādās jomās kā ienākošie klientu pieprasījumi, datu bāzes ieraksti, konteineri un citas, lai noteiktu neatbilstības vai neparastas darbības.
#12. Automatizējiet drošības darbības
Automatizējiet drošības procesus, piemēram, atjauninājumu izvietošanu, ievainojamību skenēšanu, uzraudzību, politiku izpildi un citas darbības. Turklāt pārbaudiet atjauninājumus, lai pārliecinātos, ka tie ir droši un vai tie neievieš jaunas ievainojamības.
Pēc atjaunināšanas drošības programmatūrai ideālā gadījumā būtu jāveic visu konteineru un mikropakalpojumu testi, lai noskaidrotu, vai var būt iepriekš notikušas ievainojamības vai drošības problēmas.
#13. Aizsargājiet 🛡️ datus vienmēr
Aizsargājiet datus pārvietošanas un atpūtas laikā. Ideālā gadījumā visiem sakariem izmantojiet HTTPS, lai nodrošinātu pārsūtīšanas datu drošību un visu sensitīvo datu šifrēšanu. Nepārsūtiet un neuzglabājiet vienkārša teksta paroles, atslēgas, akreditācijas datus un sensitīvus datus, kas atrodas ārpus koda.
Labākā stratēģija ir izmantot standarta tehnoloģijas, lai pēc iespējas agrāk šifrētu visus sensitīvos datus. Tāpat atšifrējiet datus pēc iespējas vēlāk, lai samazinātu iedarbību.
Secinājums
Mikropakalpojumi paļaujas uz sadalītiem komponentiem, lai nodrošinātu priekšrocības, piemēram, lielāku elastību un izvietošanas iespējas. Tomēr, izmantojot mikropakalpojumus, organizācijām ir jāpielāgo iekšējās drošības politikas un stratēģijas, lai iegūtu vairāk mākoņdatošanas un izplatītāku pieeju.
Ideālā gadījumā mērķis ir samazināt uzbrukuma virsmu, aizsargāt mikropakalpojumu vidi, API, lietojumprogrammas un datus.