最近,很多業(yè)務(wù)都是在作為獨(dú)立單元開(kāi)發(fā)的單體應(yīng)用程序上運(yùn)行的。而對(duì)單體應(yīng)用程序輕微調(diào)整都會(huì)影響整個(gè)過(guò)程并降低了運(yùn)行速度。
編輯搜圖
例如,對(duì)一小部分代碼進(jìn)行編輯和修改需要開(kāi)發(fā)和部署一個(gè)全新版本的應(yīng)用程序。而且,如果擴(kuò)展單體應(yīng)用程序的一些特定功能,則必須擴(kuò)展整個(gè)應(yīng)用程序。
在過(guò)去的幾年,對(duì)微服務(wù)架構(gòu)或微服務(wù)的需求已經(jīng)成倍增長(zhǎng)。由于企業(yè)對(duì)可用性、可擴(kuò)展性和彈性的需求,微服務(wù)架構(gòu)通過(guò)將單體系統(tǒng)分解為更小但可管理的獨(dú)立服務(wù)來(lái)解決單體系統(tǒng)帶來(lái)的挑戰(zhàn)。
這些以不同編程語(yǔ)言編寫(xiě)的自治服務(wù)在它們自己的進(jìn)程上運(yùn)行。此外,這些可獨(dú)立部署的服務(wù)可以使用其他數(shù)據(jù)存儲(chǔ)介質(zhì),并使用與語(yǔ)言無(wú)關(guān)的協(xié)議進(jìn)行通信,以有效地執(zhí)行任務(wù)。
本文揭示了圍繞微服務(wù)架構(gòu)安全的一些誤區(qū),指出了其面臨的安全挑戰(zhàn),并提供了解決方案。此外,還提供了構(gòu)建基于微服務(wù)的應(yīng)用程序的三大優(yōu)秀安全實(shí)踐。
微服務(wù)架構(gòu)的好處
微服務(wù)架構(gòu)為企業(yè)提供了許多好處。但是,只有正確完成從單體式應(yīng)用程序到微服務(wù)架構(gòu)的遷移,才能獲得好處。其主要好處包括:
-
與單體架構(gòu)不同,微服務(wù)架構(gòu)讓企業(yè)可以專(zhuān)注于由團(tuán)隊(duì)管理的較小但自主的服務(wù),而不是將每個(gè)團(tuán)隊(duì)的注意力轉(zhuǎn)移到一個(gè)更廣泛的應(yīng)用程序上。
-
企業(yè)可以使用自己選擇的編程語(yǔ)言開(kāi)發(fā)微服務(wù),并按照自己的節(jié)奏獨(dú)立發(fā)布和擴(kuò)展。
-
單體架構(gòu)提供更快的上市時(shí)間和更好的可擴(kuò)展性。
-
它提供了更好的故障隔離,因?yàn)橐粋€(gè)特定微服務(wù)中的錯(cuò)誤可以在不影響架構(gòu)其余部分的情況下得到控制。
-
DevOps和敏捷團(tuán)隊(duì)也受益于微服務(wù)。亞馬遜、Netflix、eBay、PayPal和Twitter等科技巨頭已經(jīng)從單體架構(gòu)遷移到微服務(wù)。
微服務(wù)架構(gòu)規(guī)模在過(guò)去幾年中一直呈上升趨勢(shì)。2018年,全球微服務(wù)架構(gòu)市場(chǎng)規(guī)模約為21億美元。此外,預(yù)計(jì)到2026年將超過(guò)80億美元,在預(yù)測(cè)期內(nèi)復(fù)合年增長(zhǎng)率(CAGR)將超過(guò)18%。
微服務(wù)架構(gòu)安全面臨的挑戰(zhàn)
實(shí)現(xiàn)一個(gè)微服務(wù)架構(gòu)存在一些挑戰(zhàn),該架構(gòu)利用幾個(gè)具有不同技術(shù)、編程語(yǔ)言、工具和框架的小型獨(dú)立服務(wù)。
以下了解微服務(wù)架構(gòu)中的一些主要安全挑戰(zhàn)。
1.更大的攻擊面
微服務(wù)架構(gòu)是多個(gè)服務(wù)的集合體,這些服務(wù)開(kāi)放不同的端口,并開(kāi)放多個(gè)應(yīng)用程序編程接口(API),從而增加了網(wǎng)絡(luò)攻擊面,這帶來(lái)了嚴(yán)峻的安全挑戰(zhàn)。因此,所有微服務(wù)都應(yīng)該得到充分保護(hù),以克服這種安全威脅。
2.隔離
在典型的微服務(wù)架構(gòu)中,應(yīng)用程序可以獨(dú)立開(kāi)發(fā)、測(cè)試、擴(kuò)展、部署和維護(hù)。這意味著這些活動(dòng)中的任何一個(gè)都不應(yīng)影響應(yīng)用程序中其他微服務(wù)的工作。
為了增強(qiáng)進(jìn)程的安全性,需要在數(shù)據(jù)庫(kù)級(jí)別實(shí)現(xiàn)隔離。換句話(huà)說(shuō),每個(gè)微服務(wù)必須擁有自己的數(shù)據(jù)副本,并且不應(yīng)該讓它訪問(wèn)應(yīng)用程序中其他微服務(wù)的數(shù)據(jù)。而實(shí)現(xiàn)各層隔離使企業(yè)基于微服務(wù)的應(yīng)用程序更加安全。
3.傳統(tǒng)日志記錄
基于微服務(wù)的應(yīng)用程序通常具有無(wú)狀態(tài)、分布式和獨(dú)立的服務(wù),這些服務(wù)是使用跨越地理邊界的多種技術(shù)開(kāi)發(fā)的。因此,在基于微服務(wù)的應(yīng)用程序中,單體應(yīng)用程序中相同的傳統(tǒng)日志記錄是無(wú)效的。與其相反,應(yīng)用程序應(yīng)該聚合日志,并跨多個(gè)平臺(tái)和服務(wù)關(guān)聯(lián)事件,以實(shí)現(xiàn)有效的日志記錄。
4.DevOps團(tuán)隊(duì)的協(xié)作
通過(guò)獨(dú)立開(kāi)發(fā)、部署和管理服務(wù)來(lái)創(chuàng)建應(yīng)用程序是有好處的,但是當(dāng)它們?cè)跊](méi)有經(jīng)過(guò)全面測(cè)試的情況下發(fā)布時(shí),安全漏洞就會(huì)增加?;谖⒎?wù)的應(yīng)用程序雖然可以頻繁地發(fā)布,但這種改進(jìn)的敏捷性是以犧牲安全性為代價(jià)的。
為了應(yīng)對(duì)微服務(wù)架構(gòu)安全問(wèn)題,DevOps團(tuán)隊(duì)之間的更密切協(xié)作對(duì)于企業(yè)至關(guān)重要。他們應(yīng)該密切互動(dòng),對(duì)流程有很好的理解,并減輕安全威脅。此外,他們的協(xié)作必須在開(kāi)發(fā)、安全和運(yùn)營(yíng)(DevSecOps)生態(tài)系統(tǒng)中進(jìn)行,以防止未經(jīng)授權(quán)訪問(wèn)應(yīng)用程序中的任何資源。
5.容錯(cuò)
在一個(gè)或多個(gè)組件發(fā)生故障的情況下,應(yīng)用程序仍然可以正常工作的能力稱(chēng)為容錯(cuò)。它通常是通過(guò)設(shè)置像斷路器模式這樣的后備機(jī)制來(lái)完成的。然而,在基于微服務(wù)的應(yīng)用程序中實(shí)現(xiàn)容錯(cuò)是一項(xiàng)具有挑戰(zhàn)性的工作。有時(shí),其實(shí)現(xiàn)變得比單一應(yīng)用程序更復(fù)雜、更具挑戰(zhàn)性。
微服務(wù)架構(gòu)擁有更多的服務(wù)并處理更多的請(qǐng)求。當(dāng)大量服務(wù)通過(guò)網(wǎng)絡(luò)進(jìn)行通信時(shí),就會(huì)增加復(fù)雜性。此外,微服務(wù)架構(gòu)應(yīng)該是容錯(cuò)的,這意味著它應(yīng)該處理服務(wù)故障,因?yàn)轭l繁的服務(wù)故障會(huì)破壞整個(gè)應(yīng)用程序的穩(wěn)定性。
微服務(wù)架構(gòu)中的三個(gè)安全實(shí)踐
在了解微服務(wù)架構(gòu)面臨的安全挑戰(zhàn)之外,以下了解一些安全實(shí)踐。
1.縱深防御(DiD)策略
縱深防御策略可以為應(yīng)用程序添加許多安全層,也可以用來(lái)保護(hù)基本服務(wù)。因此,網(wǎng)絡(luò)攻擊者成功利用微服務(wù)一個(gè)安全漏洞并不能保證能夠利用另一個(gè)安全漏洞。換句話(huà)說(shuō),如果網(wǎng)絡(luò)攻擊者已經(jīng)成功攻擊了基于微服務(wù)的應(yīng)用程序中的一層保護(hù),那么破壞其他的應(yīng)用程序安全層可能并不容易。
2.API網(wǎng)關(guān)
在典型的基于微服務(wù)的應(yīng)用程序中,用戶(hù)無(wú)法與微服務(wù)直接通信。API網(wǎng)關(guān)擁有通往各種微服務(wù)的單一入口點(diǎn),而這種機(jī)制不允許用戶(hù)直接訪問(wèn)和使用服務(wù)。
企業(yè)應(yīng)將API網(wǎng)關(guān)置于防火墻后面,以便在網(wǎng)絡(luò)攻擊面添加一層保護(hù)。它還有助于保護(hù)在應(yīng)用程序中使用的每個(gè)微服務(wù)。通常情況下,基于令牌的身份驗(yàn)證用于保護(hù)API網(wǎng)關(guān)。
3.API和數(shù)據(jù)安全
在典型的基于微服務(wù)的應(yīng)用程序中,服務(wù)應(yīng)該相互通信,并且應(yīng)該在不影響應(yīng)用程序性能的情況下保護(hù)數(shù)據(jù)。為此,應(yīng)該正確地維護(hù)安全證書(shū)以及加密和保護(hù)傳輸中的數(shù)據(jù)。
應(yīng)通過(guò)僅允許授權(quán)用戶(hù)訪問(wèn)來(lái)保護(hù)API。企業(yè)還可以利用對(duì)資源的受限訪問(wèn),這意味著只有在需要時(shí)才提供對(duì)資源的訪問(wèn)。
制定微服務(wù)安全策略
在典型的單體架構(gòu)中,安全問(wèn)題不那么重要,但在安全性是一個(gè)復(fù)雜挑戰(zhàn)的微服務(wù)生態(tài)系統(tǒng)中,同樣的方法不起作用。例如,保護(hù)企業(yè)數(shù)據(jù)和應(yīng)用程序的標(biāo)準(zhǔn)防火墻不能滿(mǎn)足基于微服務(wù)應(yīng)用程序的安全需求。事實(shí)上,需要強(qiáng)大的防御機(jī)制來(lái)對(duì)抗安全威脅。
因此,企業(yè)應(yīng)制定安全策略來(lái)應(yīng)對(duì)這些挑戰(zhàn)。應(yīng)實(shí)施自動(dòng)化以監(jiān)控應(yīng)用程序和潛在的安全威脅。除此之外,還應(yīng)該部署一個(gè)集中的安全系統(tǒng)和工具來(lái)有效地監(jiān)控基于微服務(wù)的應(yīng)用程序。因此,建議企業(yè)采用頻繁更新的自動(dòng)代碼掃描和安全代碼保護(hù)以加強(qiáng)安全性。