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