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