?

微服務應用安全分析

2020-12-23 13:23何俊鏵梁鴻基陳漢杰張天成雷騰龍
科學導報·學術 2020年48期
關鍵詞:微服務安全漏洞應對策略

何俊鏵 梁鴻基 陳漢杰 張天成 雷騰龍

摘? 要:隨著軟件的不斷發展,軟件的開發技術也在不斷地提高,如今的軟件開發者所使用的開發技術不再是以前的那種單一整體架構了,更多使用的是分布式的微服務架構。使用微服務架構的方式來開發軟件確實降低了軟件開發過程中的復雜性,但同時也給軟件帶來了更多的安全隱患。本文針對微服務架構應用中存在的一些安全漏洞,簡單介紹了一些開發者進行軟件開發時需要考慮到的攻擊方式和應對策略。

關鍵詞:微服務;安全漏洞;應對策略

1 微服務的興起

什么是微服務?微服務就是將單個應用程序拆分成多個小的服務的集群,每個微服務都圍繞具體業務進行實現,相互之間通過輕量級通信機制,有著極少的統一管理。每個微服務可以獨立部署,使用不同的編程語言,使用不同的數據存儲技術。[1,2]從上面這段話我們可以知道,微服務的思想就是使用一個個獨立的微服務來構成整個系統。

為什么我們不再趨向于使用以前的單一整體架構來開發?單體架構在系統規模較小時的效果確實很不錯,但隨著系統規模的不斷擴大,出現的問題就越來越多,舉一個簡單的例子,技術是在不斷發展的,可以說是日新月異,我們通常都會使用新的技術來更新項目,但在使用單體架構實現的項目中,各個功能模塊之間是有著復雜的聯系,你想用新的技術來更新項目非常困難,你必須更改每一個模塊的代碼,需要付出的時間和精力實在是太大了。而微服務架構恰好解決了這個問題,每個微服務都是獨立的,想用什么技術就用什么技術,并且微服務的體積通常都是很小的,即使需要使用新的技術來更新也不會太過復雜。除此之外,微服務還解決了單體架構中軟件擴展困難、維護困難、復雜性高等問題,這就是為什么微服務越來越受歡迎的原因。

2 微服務存在的安全問題

安全問題是每一個應用在開發過程中都不能忽視的問題,盡管微服務架構的使用解決了單體架構中的許多問題,但安全問題也會更加復雜。相比于單體架構,微服務暴露了更多的可攻擊面。[3]一個基于微服務的應用中,存在的安全問題可分為兩類,一類是傳統的安全問題,一類是微服務架構中存在的安全問題。

第一類安全問題并不是微服務架構獨有的,它也存在于以前的單體架構中,比較常見的攻擊有注入攻擊、XSS攻擊、文件上傳等。[4]但這一類的安全問題現在人們已經提出了許多相對完善的防御方法了,對于開發者來說不足為慮。第二類安全問題才是使用微服務架構時需要重視的問題,這一類的安全問題有很多個方面,本文主要講微服務系統中微服務之間訪問這一方面的問題。

3 安全漏洞的處理

通過前面的分析,我們已經把系統中存在的安全漏洞都分析出來了,下一步,我們就應該“對癥下藥”了。在下文,我將根據現有的研究簡述這兩類安全問題產生的原因以及我們應該用什么樣的方法來防御。

3.1 傳統的安全問題

首先說一下注入攻擊,注入攻擊有分好幾類,其中我們聽得比較多的就是SQL注入。SQL注入主要是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,實現無帳號登錄,甚至篡改數據庫。SQL注入的本質實際上就是對提交數據檢查的不充分,將提交的非法數據當成SQL語句來執行。對于這種攻擊,我們常使用字符過濾和使用參數化查詢(最有效的方法)來預防。

XSS攻擊,即跨站腳本攻擊,它是一種最普遍的WEB安全漏洞,其原理是嵌入惡意代碼到WEB頁面里面,用戶一旦訪問這個頁面就會觸發這些惡意代碼,這時攻擊者的特殊目的就可以實現了,他們可以竊取你的cookie、會話等私人信息,嚴重的話會造成非常大的損失。抵御這種攻擊最常用的方式就是通過添加攔截器過濾請求參數來阻止惡意代碼的執行。

文件上傳與表單數據重復提交也是比較常見的安全問題,前者會導致一些惡意腳本文件被上傳到系統中,而后者會增加服務器負載均衡,嚴重的時候還會造成服務器宕機。文件上傳漏洞是開發者在開發過程中僅設置文件后綴檢驗產生的,一些惡意腳本文件可以通過修改文件后綴名等方式通過文件后綴檢驗進入到系統中,所以對付文件上傳漏洞的最好方式就是同時設置文件后綴校驗和文件格式檢驗。表單數據重復提交的原因有很多,可能是用戶的誤操作或者網絡原因,也可能是攻擊者刻意而為,但不管是什么樣的可能性我們都要考慮到這個問題。常用的阻止表單重復提交方法有JavaScript屏蔽提交按鈕、數據庫添加唯一約束、利用session設置提交有效時間和AOP自定義切入,推薦使用后面兩種方式。

3.2 微服務之間的訪問

不管是什么樣的系統,用戶訪問服務前為了保證系統的安全性都需要對用戶進行身份認證,認證通過后才能授權給用戶去訪問這個服務。在單體架構中,所有的服務都是部署在同一個服務器上的,用戶想訪問另一個服務服務器可以通過本地方法調用的方式來實現,用戶只需要進行一次身份驗證。但在微服務架構里,各個微服務通常是部署在不同服務器上的,用戶想訪問多個微服務就要進行多次認證,非常復雜,而且還會暴露微服務的存在,讓攻擊者有更多的機會來攻擊,安全性不夠高。有沒有什么方法可以讓微服務之間的訪問變得更安全和更簡單呢?答案是肯定的,人們提出了4種解決方法,分別是單點登錄(SSO)、分布式會話(Session)、客戶端令牌(Token)和API網關(Gateway)。我們經常用到的解決方法就是微服務系統中使用API網關。

API網關為微服務系統提供了統一入口,起到了客戶端和后臺微服務應用之間的橋接作用,是微服務架構系統的重要部分。[5]API網關有著很多功能,認證授權、訪問控制、負載均衡、動態路由、過濾、日志、監控和熔斷等功能都是網關需要做到的。使用API網關就意味著一切的請求都交由網關來處理,用戶想訪問多個微服務只需要在API網關進行一次身份驗證,驗證通過后網關會動態地把用戶的請求轉發給對應的微服務來處理,這就是網關的核心功能之一的動態路由。

猜你喜歡
微服務安全漏洞應對策略
芻議計算機軟件中的安全漏洞檢測技術
智能設備安全漏洞知多少
微信公眾平臺在醫院圖書館的應用現狀調查
計算機軟件安全漏洞檢測技術
基于微信企業號的校園移動服務
從單一模式系統架構往微服務架構遷移轉化技術研究
筑牢洪災后的輿情“堤壩”
利率市場化改革對商業銀行的挑戰及應對策略研究
我國信用評級業存在的問題及應對策略
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合