歡迎光臨
每天分享高質量文章

簡析容器、無服務器和虛擬機的安全性差異

在三十多年前,虛擬化僅適用於擁有大型機和眾多小型計算機的用戶,而安全問題僅僅是物理上的。 二十年前,VMware發佈了其第一款產品,網絡邊界安全性仍處於起步階段,依賴於防火牆。 十二年前,AWS推出,網絡安全成為一個問題。 五年前,由於Docker,容器成為主流,主機安全成為焦點。 今天,隨著無服務器安全性的增長,應用程式級安全性終於受到已經存在多年的計算和網絡層全面審查。
隨著應用程式,計算和網絡安全都被審計,通過SOC type 2等報告,管理層和客戶端都可以更加瞭解安全問題。隨著客戶端透明度的提高,安全專業人員是確保部署資產和使生產具有堅實安全性的關鍵。 根據正在使用的部署型別,相應的配置規模大小可能會急劇增加。
以上就是理解不同型別的新興部署技術(即容器,無服務器計算和虛擬機)之間的安全細微差別的原因。 下麵,我們對比一下他們的安全方面。


無服務器安全

首先,讓我們解決無服務器安全問題,因為無服務器應用程式通常是純粹執行單個函式的代碼——因此叫做function-as-a-service。 你實際部署平臺可能對無服務器應用程式中發生的最常見安全問題無動於衷。
除了遵循安全編碼最佳實踐,例如僅傳回處理請求絕對需要的資料並讓應用程式使用僅具有允許其執行其工作所需的訪問權限的服務帳戶,發現的任何漏洞都將導致資料被泄露, 這遠遠超出了無服務器應用程式的範圍——這可能導致公關噩夢。
另一個主要關註領域是應用程式中包含的任何第三方庫,這些第三方庫主要是為了提供增強功能,並節省開發團隊的開發時間。 比如用於驗證電話號碼或郵政編碼的庫,以及連接到外部PostgreSQL資料庫所需的JDBC驅動程式等客戶端庫。 如果不使用自動更新並定期掃描構建的工件的掃描工具,那麼在組織內針對所有第三方庫的監控所有各種漏洞公告串列的過程,將是一項巨大的手動工作。


容器安全

實際上,由於無服務器應用程式通常在後臺運行在容器中,因此容器將承載與無服務器相同的所有問題,以及容器為開發人員提供的附加功能的新問題。
針對容器的特定安全問題可以簡化為兩個不同的區域:您基於部署的容器源的可信度,以及容器對主機操作系統的訪問級別。
在任何主機(無論是Windows還是Linux)上運行容器時,不應使用root或管理員權限運行容器。 使用命名空間和捲等功能而不是原始磁盤訪問,允許這些容器守護程式在一個或多個容器之間共享儲存以獲取持久資料,而不需要容器本身具有升級的權限。 甚至還有一些專案,例如谷歌的gVisor,它們更進一步,隱藏了除容器需要運行的確切系統呼叫之外的所有專案。
對容器的更大關註是構建容器的層的可信度。 有多種方法可以解決這個問題。 它們包括指向您已經測試並確定的特定版本,而不是依賴於最新的tag。 您還可以擴展針對無服務器應用程式中的第三方庫所進行的任何掃描範圍,以便掃描整個容器以查找已知漏洞。 此掃描可以在容器源中提前執行,也可以在構建過程中執行,因為您將它們用作構建的基礎。


虛擬機安全

虛擬機是另一個需要解決的大問題。 有不少關於如何保護操作系統的書籍和最佳實踐指南。 甚至美國政府也有一個團體在NIST網站上發佈一些清單。 最近推出的操作系統提供了開箱即用的合理安全配置檔案,但它們總需要進行改進。
一種改進upis的方法是將運行服務限製為絕對需要的服務。 例如,預設的HTTP服務器很適合查看日誌,但是當您的應用程式在Java中運行時,有不少可用的產品,哪些產品可以通過SSH連接並集中整合日誌?
另一種選擇是在發佈後儘快應用補丁。 一些補丁每月發佈。 還有微軟的“Patch Tuesday”,而其他更關鍵的補丁在有可用修複的那天發佈(這些被稱為out-of-band patch)。 與容器和無服務器不同,在完整虛擬機上需要應用任何指定補丁的幾率要高得多,因為需要和安裝的軟體包要多得多。


結論

只有瞭解您和您的開發團隊正在部署應用程式的計算環境型別,您才可能應用所有安全性最佳實踐。 理想情況下,您的每個應用程式都可以被評估,並且我們鼓勵您使用最合適和簡化的部署選項。 通過將更多應用程式遷移到容器,併在適當的時候使用無服務器,它將使得類似生產的安全實踐能夠在開發周期的早期實施,並最終提高您的整體安全性。
原文鏈接:https://thenewstack.io/security-differences-containers-vs-serverless-vs-virtual-machines/

Kubernetes應用實戰培訓

Kubernetes應用實戰培訓將於2018年11月9日在北京開課,3天時間帶你系統學習Kubernetes本次培訓包括:容器特性、鏡像、網絡;Docker特性、架構、組件、概念、Runtime;Docker安全;Docker實踐;Kubernetes架構、核心組件、基本功能;Kubernetes設計理念、架構設計、基本功能、常用物件、設計原則;Kubernetes的實踐、運行時、網絡、插件已經落地經驗;微服務架構、DevOps等,點擊下方圖片查看詳情。

赞(0)

分享創造快樂