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