微服務(wù)是一種創(chuàng)新的方式來加速和改進(jìn)軟件開發(fā)。該術(shù)語是指可以單獨(dú)開發(fā)的應(yīng)用程序子組件,并且通常專注于一個特定功能。例如,用于在線購物的電子商務(wù)應(yīng)用需要具備訂單收集、賬戶訪問、庫存管理和運(yùn)輸?shù)膸讉€微服務(wù)。很多知名的電子商務(wù)或社交媒體組織,如Twitter、PayPal、亞馬遜、eBay和Netflix都依賴于微服務(wù)。
微服務(wù)與容器類似,但不完全相同。我們將微服務(wù)看做分子,容器看做原子;微服務(wù)可以在容器中運(yùn)行,反之亦然。微服務(wù)經(jīng)由應(yīng)用程序編程接口(API)實(shí)現(xiàn)通信,作為應(yīng)用程序的整個生態(tài)系統(tǒng)或架構(gòu)的一部分。
微服務(wù)有幾個優(yōu)點(diǎn):快速啟動,可以重復(fù)使用,提高可擴(kuò)展性,甚至可以包含不同的編碼語言。只需要調(diào)整一個或兩個微服務(wù),而不是整個程序,更新應(yīng)用程序很容易。微服務(wù)可以幫助促進(jìn)和跟蹤更改、解決問題、提高容錯并提高性能。
與其他技術(shù)一樣,微服務(wù)也存在安全風(fēng)險,以及適當(dāng)?shù)氖褂梅椒???雌饋砦⒎?wù)是分子內(nèi)的原子這樣的關(guān)系,但是漏洞仍然存在,即便只有一個微服務(wù)可能被破壞,仍然是一種風(fēng)險。此外,過多的微服務(wù)也可能增加復(fù)雜性,并且使安全難以實(shí)現(xiàn),特別是不同的開發(fā)人員和開發(fā)方法在整個應(yīng)用程序中的應(yīng)用。
NGINX產(chǎn)品主管Owen Garrett談及微服務(wù)安全時表示:“微服務(wù)具有不同于單片架構(gòu)的安全風(fēng)險,主要包括:
通信變化:單片應(yīng)用程序使用進(jìn)程之間的內(nèi)存通信,而微服務(wù)通過網(wǎng)絡(luò)通信。移動到網(wǎng)絡(luò)通信引起了速度和安全性的問題。
數(shù)據(jù)存儲:微服務(wù)使用很多數(shù)據(jù)存儲,這提供了微服務(wù)和緊耦合的服務(wù)之間的隱式服務(wù)的機(jī)遇。
技術(shù)專長:如果現(xiàn)有團(tuán)隊(duì)沒有適當(dāng)?shù)墓芾砦⒎?wù)的經(jīng)驗(yàn),微服務(wù)會造成額外的復(fù)雜性,反過來又會造成安全漏洞。”
以下將介紹10個保護(hù)微服務(wù)架構(gòu)的途徑:
1、在開發(fā)微服務(wù)時,建立通用的可重復(fù)編碼標(biāo)準(zhǔn),可以在其他地方重復(fù)使用,減少可能導(dǎo)致可利用漏洞或升級特權(quán)的差異。
2、將渠道控制在最低限度,考慮每個特定的微服務(wù)被損害之后會造成什么后果,并且注意如何調(diào)整并保護(hù)微服務(wù)。
3、使用訪問控制向進(jìn)程或個人提供數(shù)據(jù)。盡可能在單獨(dú)的功能和環(huán)境中使用分段,例如,如果沒有必要創(chuàng)建或更改現(xiàn)有信息,那么僅僅檢查清單可用性的微服務(wù)應(yīng)該被授予數(shù)據(jù)庫的讀取權(quán)限,而不是讀/寫權(quán)限。
4、在微服務(wù)的代碼中使用安全規(guī)則,而不是通過外部方法在實(shí)現(xiàn)之后應(yīng)用。
5、盡可能使用集中的安全或配置策略,可以跨平臺應(yīng)用,以建立一致性并減少人員分析或交互的必要性。
6、多人審查微服務(wù)的代碼,以減少人為錯誤,以及提供對代碼可行性的洞悉。
7、完全記錄每個微服務(wù)以說明其服務(wù)的功能,可以暴露出潛在的弱點(diǎn)
8、完全映射微服務(wù)之間的通信方法,以便識別潛在的問題區(qū)域以及可能表示漏洞或劫持的不規(guī)則行為
9、當(dāng)使用外部訪問時,對傳輸中的數(shù)據(jù)和禁止時使用加密
10、對微服務(wù)進(jìn)行定期代碼和使用評審,并刪除過時或未使用的服務(wù)。
原文鏈接:http://www.techrepublic.com/article/10-tips-for-securing-microservice-architecture/?ftag=TRE684d531&bhid=27317827725489798238806552765991