■ 山東 姜建華 趙長林
隨著開發(fā)及運(yùn)維(DevOps)及微服務(wù)架構(gòu)變得越來越普遍,APP的開發(fā)團(tuán)隊(duì)正尋求使用更為輕量級的云服務(wù)來部署應(yīng)用的工作負(fù)載。
一種常被采用的技術(shù)就是無服務(wù)器計(jì)算,它將整個(gè)的工作負(fù)載(容器和操作系統(tǒng)實(shí)例)都交給供應(yīng)商的背板架構(gòu),從而使開發(fā)人員可以創(chuàng)建微服務(wù)的APP,僅要求在云供應(yīng)商的環(huán)境中上傳和操作APP代碼。
然而,無服務(wù)器云架構(gòu)使用的日漸增加暴露了一些安全團(tuán)隊(duì)需要評估和解決的新的潛在風(fēng)險(xiǎn)。本文將討論關(guān)于無服務(wù)器架構(gòu)的安全問題,以及解決或緩解這些問題的最佳方法。
無服務(wù)器計(jì)算尤其易于遭受編碼安全風(fēng)險(xiǎn)。例如,惡意代碼的執(zhí)行可以經(jīng)由無服務(wù)器架構(gòu)產(chǎn)生,并且可以長時(shí)間存在于內(nèi)存中。無服務(wù)器環(huán)境中的固有缺陷本身也是一個(gè)問題,因?yàn)檫@些缺陷會導(dǎo)致遠(yuǎn)程代碼的執(zhí)行。
無服務(wù)器環(huán)境也容易產(chǎn)生代碼安全問題。由于容器的宿主平臺可能大規(guī)模地超出范圍,因此,團(tuán)隊(duì)必須專注于保護(hù)輸入、代碼和執(zhí)行。在制定減輕無服務(wù)器安全風(fēng)險(xiǎn)的策略時(shí),企業(yè)應(yīng)當(dāng)首先專注于靜態(tài)代碼的審查。為了掃描代碼,有些第三方的供應(yīng)商可以整合到無服務(wù)器的環(huán)境中。
很多無服務(wù)器的編碼風(fēng)險(xiǎn)都會存在而不管代碼在何處和如何運(yùn)行,由此導(dǎo)致如下的核心問題:
一是事件劫持。劫持缺陷仍可以影響代碼及其處理輸入的方式。改進(jìn)的輸入驗(yàn)證和預(yù)定義的數(shù)據(jù)庫層邏輯(例如存儲過程)有助于修復(fù)這個(gè)問題。
二是失敗的認(rèn)證。企業(yè)必須重視無服務(wù)器APP用戶的角色定義和強(qiáng)認(rèn)證的執(zhí)行。
三是不安全的APP秘密存儲。API密鑰、加密密鑰和其它秘密往往涉及到無服務(wù)器的功能執(zhí)行。安全團(tuán)隊(duì)?wèi)?yīng)當(dāng)確保開發(fā)人員使用成熟的秘密管理工具和某種特定云的密鑰存儲。
四是異常處理不當(dāng)。開發(fā)人員應(yīng)確保錯誤和異常得到適當(dāng)處理,以防止堆棧的痕跡被暴露或顯示。
無服務(wù)器的另一個(gè)主要安全問題是特權(quán)和許可的控制。這種控制應(yīng)當(dāng)針對所有的無服務(wù)器應(yīng)用程序,并由強(qiáng)健的“云身份和訪問管理(IAM)”實(shí)施。除了訪問無服務(wù)器功能的服務(wù)許可外,企業(yè)必須對無服務(wù)器功能得以運(yùn)行的許可實(shí)現(xiàn)最少化。
初涉此領(lǐng)域的企業(yè)需要在本地云環(huán)境中記錄每一個(gè)無服務(wù)器的API事件(包括訪問、修改及執(zhí)行等)。這可以由與亞馬遜的AWS CloudTrail云資源調(diào)用記錄服務(wù)等類似的服務(wù)實(shí)現(xiàn)。
無服務(wù)器的安全問題并不是只有編碼和云身份及訪問管理這兩方面。其它的需要關(guān)注的方面都與配置有關(guān):企業(yè)應(yīng)當(dāng)通過限制內(nèi)存利用和可能的無服務(wù)器輸入手段而減輕不安全的部署設(shè)置所帶來的問題。調(diào)整應(yīng)用程序的執(zhí)行超時(shí)有助于減輕拒絕服務(wù)攻擊和經(jīng)濟(jì)損失。
當(dāng)前,保障無服務(wù)器架構(gòu)的云的和本地的安全選項(xiàng)還是有限的。為真正保障無服務(wù)器的安全,企業(yè)可能需要全面的靜態(tài)代碼分析,對內(nèi)存進(jìn)行分析用以應(yīng)對緩沖區(qū)劫持,還要對輸入和行為進(jìn)行動態(tài)掃描,并且記錄所有活動,以及其它的安全控制。目前,多數(shù)供應(yīng)商僅僅提供了定義運(yùn)營要素的能力,如內(nèi)存的大小和使用、日志,以及對功能和無服務(wù)器相關(guān)服務(wù)自身的一些許可。
企業(yè)還可以整合一些工具用以提供對無服務(wù)器架構(gòu)實(shí)施的透明度。這些工具有很多,如Check Point Protego以及Dashbird等。企業(yè)還可以考慮可以將安全性增加到持續(xù)集成或持續(xù)交付階段的工具以及在云中實(shí)施的工具。許多容器安全工具,如Palo Alto Prisma和Aqua都可以實(shí)現(xiàn)此功能。但是安全從業(yè)者必須明確:所有這些產(chǎn)品都要求大量的資源,因此無法應(yīng)對所有可能發(fā)生的情況。