企業(yè)使用無服務(wù)器架構(gòu)時需考慮其安全問題
(文章來源:百家號)
? ? ? ?無服務(wù)器是虛擬化和云計算發(fā)展的結(jié)果,是指其企業(yè)完全通過租賃云供應(yīng)商的資源來實現(xiàn)業(yè)務(wù)的模式,無服務(wù)器的核心是在架構(gòu)中完全摒除硬件和后端基礎(chǔ)軟件服務(wù)(比如數(shù)據(jù)庫,賬號體系等),而依賴第三方的云資源(BaaS或者FaaS)。
當(dāng)考慮無服務(wù)器架構(gòu)時候主要基于一個想法:如果并不是所有應(yīng)用程序的功能都是一直要用,那么為什么要為不經(jīng)常使用的服務(wù)器支付租金呢?一般來說系統(tǒng)都需要一些功能,如業(yè)務(wù)邏輯,用戶認(rèn)證系統(tǒng),數(shù)據(jù)庫,以及其他一些用戶簡短的和特定活動需要的功能。使用服務(wù)器架構(gòu),會執(zhí)行和打包這一系列的功能,所以一般也將無服務(wù)器叫做功能即服務(wù)(FaaS);這些功能為后端服務(wù),所以也叫為BaaS "Backend as a Service"。
FaaS服務(wù)最典型的例子是知名云廠商亞馬遜AWS的AWS Lambda。雖然云廠商會提供了很多安全服務(wù)和一些基本的安全策略,但是需要你花費購買相關(guān)服務(wù),而且一些策略也需要自己配置。關(guān)于無服務(wù)器架構(gòu)的安全我們需要注意以下事項。為了確保應(yīng)用程序的安全,最有效方法之一是確保所有組件都是最新的。使用的第三方模塊是否需要打安全補(bǔ)丁?
軟件更新時候經(jīng)常被忽略的問題是忘記更新組件依賴項,尤其是在應(yīng)用程序中使用開源組件時。據(jù)統(tǒng)計有超過92%的應(yīng)用程序使用的開源組件會占到其代碼庫的60-80%,基礎(chǔ)開源組件的安全是不容忽視的部分。如何安全地使用開源模塊與商業(yè)軟件存在一些明顯差異,例如在開源組件在發(fā)布新漏洞或修復(fù)程序時無法很好的跟蹤其影響面,做到有效的升級通知。
另一個方面是要考慮構(gòu)建組件的依賴關(guān)系。如果其中一個依賴存在漏洞,則會影響整個應(yīng)用程序的安全?,F(xiàn)在的基本的Git服務(wù)器端,比如Github和Gitlab都提供了對依賴的基本類庫安全自動化掃描工具。我們可以借助這些工具來確保我們的組件都更新到安全的版本。
進(jìn)行權(quán)限和訪問控制是維護(hù)無服務(wù)器安全性的重要規(guī)則,通過安全策略設(shè)置為每個功能授予最小權(quán)限,并使用基于角色的身份驗證(IAM角色),以最大限度地減少潛在安全風(fēng)險。
這個原則很重要,因為可訪問的用戶越多,對系統(tǒng)安全的潛在的風(fēng)險就越大。比如一個例子,黑客成功竊取了你的一個用戶的電子郵件賬戶,竊取了其登錄憑據(jù)。為了最大限度地降低風(fēng)險,我們應(yīng)該分角色限制可訪問的功能,并對訪問IP進(jìn)行限制,比如通過防火墻和VPN等設(shè)置限制登錄,這樣就算登錄憑據(jù)被竊取了也無法登陸。當(dāng)然除了外部黑客的攻擊以外我們也要防止內(nèi)部人員竊取其不應(yīng)該知道的信息,所以基于角色限制每個用戶的權(quán)限至關(guān)重要。
與限制用戶權(quán)限原理類似,將每個功能的網(wǎng)絡(luò)和資源訪問隔離也很重要。這條原則也被稱為微分段(Micro-Segmentation),就是通過設(shè)置訪問屏障的,保證我們的某功能被攻克后,不影響其他功能和節(jié)點。安全界常遵守一個常理就是"雞蛋不能放在同一個籃子里"。
如果正如我們將數(shù)據(jù)庫與另一個數(shù)據(jù)庫分開一樣,通過隔離不同的功能,不同的人容器,可以保證整體的安全不受部分節(jié)點的影響。