保護(hù)微服務(wù)需要知道的那些事

責(zé)任編輯:jackye

作者:Chris Tozzi

2016-09-06 09:43:24

摘自:TechTarget中國

隨著容器的持續(xù)流行,將應(yīng)用改造成云上的微服務(wù),對于很多希望IT運營更加敏捷高效的企業(yè)來說是顯而易見的下一步。云托管的微服務(wù)所帶來的安全挑戰(zhàn),和傳統(tǒng)應(yīng)用情況并不完全一樣,我們必須妥善解決這些問題,避免暴露重大的安全漏洞。

隨著容器的持續(xù)流行,將應(yīng)用改造成云上的微服務(wù),對于很多希望IT運營更加敏捷高效的企業(yè)來說是顯而易見的下一步。但是,在容器化應(yīng)用并且部署之前,需要首先確保你的應(yīng)用是安全的。云托管的微服務(wù)所帶來的安全挑戰(zhàn),和傳統(tǒng)應(yīng)用情況并不完全一樣,我們必須妥善解決這些問題,避免暴露重大的安全漏洞。

1.什么讓微服務(wù)如此不同

要理解為什么必須保護(hù)微服務(wù),比如那些運行在Docker容器里的應(yīng)用,你首先需要理解微服務(wù)和傳統(tǒng)應(yīng)用之間的主要區(qū)別。

傳統(tǒng)來說,程序員構(gòu)建“單體”應(yīng)用。也就是說應(yīng)用使用的整個軟件堆棧被組織成一個單一的可交付的實體。比如,你的團(tuán)隊可能已經(jīng)通過編寫前端代碼為應(yīng)用構(gòu)建了web應(yīng)用,將其和MySQL數(shù)據(jù)庫集成來存儲數(shù)據(jù),并且將所有東西打包到一個基于Linux的虛擬機鏡像里,從而可以將其部署到公有云服務(wù),比如AWS或者Azure上。

微服務(wù)方案通過將應(yīng)用分解成模塊化碎片改變了這一切。它們是分布式的,并且通常并不依賴于特定類型的操作系統(tǒng)來運行。這意味著上述描述的應(yīng)用并不會以虛擬機鏡像的形式分發(fā)。相反,前端代碼可以被打包進(jìn)一個容器鏡像。數(shù)據(jù)庫可以運行在單獨的容器里。所有這些容器都在Docker或者其他容器平臺上運行,并且底層操作系統(tǒng)或者托管它們的云環(huán)境和容器本身并不相關(guān)。

2.微服務(wù)和安全

微服務(wù)消除了一些和單體應(yīng)用相關(guān)的安全挑戰(zhàn)。它們讓應(yīng)用環(huán)境更加一致,簡化了安全監(jiān)控。它們還增加了應(yīng)用不同部分之間的隔離性,降低了入侵應(yīng)用的一部分就可以控制整個堆棧的風(fēng)險。并且它們可以幫助提供抵御分布式拒絕服務(wù)攻擊的彈性,因為容器可以帶來更大的靈活性和可擴展性,并且能夠更好地抵御通過向服務(wù)器發(fā)送過多請求來摧毀其基礎(chǔ)架構(gòu)的攻擊。

保護(hù)微服務(wù)架構(gòu)時也會遇到一些挑戰(zhàn)。包括:

更大的攻擊面。有更多的組件意味著有更多黑客可以利用的可能漏洞。比如,單體軟件堆棧可能不依賴于網(wǎng)絡(luò)在前端應(yīng)用和數(shù)據(jù)庫之間發(fā)送信息,而容器通常是這么做的。這帶來了新的可能的攻擊向量。

更少的內(nèi)部一致性。微服務(wù)的優(yōu)勢之一是它們允許開發(fā)人員在開發(fā)語言和框架間輕松改變。比如,如果你目前用PHP開發(fā)應(yīng)用,但是想切換成Go,那么當(dāng)應(yīng)用前端和堆棧其他部分解耦合時就很容易完成這樣的切換。但是應(yīng)用內(nèi)部可以按照開發(fā)人員喜好頻繁改動的事實也意味著更少的一致性。無論何時發(fā)生變化,也正是新的安全漏洞可能產(chǎn)生之時。

現(xiàn)有工具無法保護(hù)微服務(wù)。大部分目前可用的久經(jīng)考驗的安全工具都是在微服務(wù)變革之前設(shè)計的。新的方案正在涌現(xiàn),但是目前的事實是,很多漏洞掃描工具在容器或者其他基于微服務(wù)的應(yīng)用上無法正常工作。

全新的信任關(guān)系。容器化基礎(chǔ)架構(gòu)的優(yōu)勢之一是可以從公開存儲庫里免費快速地下載并且部署容器鏡像。想要搭建MySQL數(shù)據(jù)庫或者Ubuntu Linux服務(wù)器?一個簡單的docker --pull 命令就能夠在幾秒內(nèi)獲得所需的容器鏡像。缺點正是這些來自于公開存儲庫的容器鏡像。這并不意味著這些鏡像不安全,但是的確意味著如果使用這些鏡像,你就和堆棧里的第三方軟件合并了。你無法保證不受你控制的代碼的安全性。

3.保護(hù)微服務(wù)的步驟

制定正確的策略,可以減輕在云上運行微服務(wù)架構(gòu)的應(yīng)用程序相關(guān)的安全風(fēng)險。如下步驟特別有效:

保護(hù)內(nèi)部環(huán)境。雖然微服務(wù)涉及更多部分,但是可以通過確保托管微服務(wù)的環(huán)境的盡可能安全來降低總體安全風(fēng)險。如果在云上運行Docker 環(huán)境,這意味著確保除了你沒有其他人能夠訪問你的云主機,并且除非必要,將 Docker容器配置成拒絕公開網(wǎng)絡(luò)的連接。

使用安全掃描器。大部分傳統(tǒng)的安全工具仍然在嘗試適用微服務(wù)的過程中。但是已經(jīng)有一些好用的工具可用,比如Docker Security Scanning和CoreOS的Clair。這些工具幫助你尋找并且解決容器內(nèi)的安全漏洞。

使用訪問控制??梢栽谲浖褩5牟煌瑢用媸褂迷L問控制限制來降低安全風(fēng)險。比如,在管理層面,必須確保能夠運行Docker命令的用戶才有執(zhí)行Unix系統(tǒng)的Docker CLI工具的權(quán)限。還可以在大部分容器存儲庫里配置訪問權(quán)限,避免公開的訪問。

確保溝通。確保負(fù)責(zé)構(gòu)建并且部署企業(yè)軟件的團(tuán)隊的所有成員不斷地溝通,而不是各自為戰(zhàn)。這樣能夠確保運維的所有人都知道upstream或者downstream所發(fā)生的變化——以及可能的安全隱患。

越來越多的企業(yè)開始向基于DevOps的工作流和容器這樣的技術(shù)轉(zhuǎn)變,微服務(wù)的安全會變得越來越容易管理。但是,現(xiàn)在,微服務(wù)能使用的安全工具的缺失意味著企業(yè)需要特別前瞻性地保護(hù)計劃在微服務(wù)架構(gòu)下運行的軟件。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號