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