1. 程式人生 > >Docker學習總結(39)——簡析容器、無伺服器和虛擬機器的安全性差異

Docker學習總結(39)——簡析容器、無伺服器和虛擬機器的安全性差異

外文翻譯:英文原文

前言

在三十多年前,虛擬化僅適用於擁有大型機和眾多小型計算機的使用者,而安全問題僅僅是物理上的。 二十年前,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)。 與容器和無伺服器不同,在完整虛擬機器上需要應用任何指定補丁的機率要高得多,因為需要和安裝的軟體包要多得多。

結論

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

相關推薦

Docker學習總結39——容器伺服器虛擬機器安全性差異

外文翻譯:英文原文 前言 在三十多年前,虛擬化僅適用於擁有大型機和眾多小型計算機的使用者,而安全問題僅僅是物理上的。 二十年前,VMware釋出了其第一款產品,網路邊界安全性仍處於起步階段,依賴於防火牆。 十二年前,AWS推出,網路安全成為一個問題。 五年前,由於Dock

Docker學習總結31——使用Maven外掛構建docker映象

Maven是一個強大的專案管理與構建工具。如果可以使用Maven構建Docker映象,以下幾款Maven的Docker外掛比較常用。外掛名稱官方地址docker-maven-pluginhttps://github.com/spotify/docker-maven-plugindocker-maven-plu

Docker學習總結21——Docke網路bridge詳解

Docker 安裝時會建立一個 命名為 docker0的 linux bridge。如果不指定--network,建立的容器預設都會掛到docker0上。 當前 docker0 上沒有任何其他網路

Docker學習總結22——Docke run命令詳解

在Docker中,run應該是使用者使用最多的命令了,很多讀者反饋不是很明白run命令的用法,而且相關的書籍、中文資料中對run命令的描述也不是非常完整,所以DockerOne組織翻譯了Docker官方的文件,以饗讀者。注意,本文基於最新的Docker 1.4文件翻譯。Docker會在隔離的容器中執行程序。當

Docker學習總結13——從零開始搭建Jenkins+Docker自動化整合環境

本文只簡單標記下大概的步驟,具體搭建各個部分的細節,還請自行搜尋。第一、二部分只是對Jenkins和Docker的簡單介紹,熟悉的同學請直接跳到第三部分。 一、關於Jenkins Jenk

Docker學習總結41——三個技巧,將Docker映象體積減小90%

一、前言 在構建Docker容器時,應該儘量想辦法獲得體積更小的映象,因為傳輸和部署體積較小的映象速度更快。但RUN語句總是會建立一個新層,而且在生成映象之前還需要使用很多中間檔案,在這種情況下,該如何獲得體積更小的映象呢?你可能已經注意到了,大多數Dockerfiles都

Docker學習總結10——10分鐘玩轉Docker

1、前言 進入雲端計算的時代,各大雲提供商AWS,阿里雲紛紛推出針對Docker的服務,現在Docker是十分火爆,那麼Docker到底是什麼,讓我們來體驗一下。 2、Docker是什麼 Dock

Docker學習總結29——Docker核心技術與實現原理

提到虛擬化技術,我們首先想到的一定是 Docker,經過四年的快速發展 Docker 已經成為了很多公司的標配,也不再是一個只能在開發階段使用的玩具了。作為在生產環境中廣泛應用的產品,Docker 有著非常成熟的社群以及大量的使用者,程式碼庫中的內容也變得非常龐大。同樣,由於

Docker學習總結33——Docker環境下搭建 MySQL 主從複製

搭建環境Centos 7.2 64位MySQL 5.7.13Docker 1.13.1接下來,我們將會在一臺伺服器上安裝docker,並使用docker執行三個MySQL容器,分別為一主兩從。安裝doc

Docker學習總結19——Google開源的容器叢集管理系統Kubernetes介紹

Kubernetes是Google開源的容器叢集管理系統。它構建Ddocker技術之上,為容器化的應用提供資源排程、部署執行、服務發現、擴容縮容等整一套功能,本質上可看作是基於容器技術的mini-P

Docker學習總結3——Docker實戰之入門以及Dockerfile

應用映象 csphere/wordpress:4.2 # cd docker-training/wordpress/ # ls -a . license.txt wp-config-sample.php wp-login.

Docker學習總結12——非常詳細的 Docker 學習筆記

Usage of docker: --api-enable-cors=false Enable CORS headers in the remote API # 遠端 API 中開啟 CORS 頭 -b, --bridge=""

Docker學習總結23——Docker搭建大規模測試環境的實踐

內容來源:2017年4月8日,第四正規化資深測試開發工程師孫高飛在“餓了麼技術沙龍【第四彈】北京研發中心測試專場”進行《docker搭建大規模測試環境的實踐》演講分享。IT大咖說作為獨家視訊合作方,經主辦方和講者審閱授權釋出。 摘要 Docker是一個開源的應用容器

Docker學習總結42——Docker Compose 入門學習

一、Docker Compose介紹 Compose 是 Docker 公司推出的一個工具軟體,可以管理多個 Docker 容器組成一個應用(稱為一個 project,即專案)。Compose 定位是“Define and run multi-container applications w

Docker學習總結17——學會使用Dockerfile

Docker、Dockerfile、Docker映象、容器這些都是什麼鳥? 老生常談,再再再……普及一下: Docker: 最早是dotCloud公司出品的一套容器管理工具,但後來Docker慢慢火

Docker學習總結7——雲端基於Docker的微服務與持續交付實踐

本文根據〖2016 全球運維大會•深圳站〗現場演講嘉賓分享內容整理而成 講師簡介 易立 畢業於北京大學,獲得學士學位和碩士學位;目前負責阿里雲容器技術相關的產品的研發工作。 加入阿

Docker學習總結26——Docker 管理工具的選擇:Kubernetes 還是 Swarm?

Docker 容器技術已經成為推動雲技術發展最重要的技術之一。如果你還沒有使用容器技術,那麼你很可能很快就會使用到它,不管以什麼樣的方式。 使用這種技術有兩個步驟。首先,你需要理解容器的概念。然後你需要有一個編排工具來處理容器的排程和管理。最終選擇誰取決於技術偏好和需求。 Docker是一種高階技術,能給使用

Docker學習總結14——從程式碼到上線, 雲端Docker化持續交付實踐

2016雲棲大會·北京峰會於8月9號在國家會議中心拉開帷幕,在雲棲社群開發者技術專場中,來自阿里雲技術專家羅晶(瑤靖)為在場的聽眾帶來《從程式碼到上線,雲端Docker化持續交付實踐》精彩分享。

Docker學習總結40——Docker常見應用場景再總結

前言 Docker提供了輕量級的虛擬化,它幾乎沒有任何額外開銷,這個特性非常酷。首先你在享有Docker帶來的虛擬化能力的時候無需擔心它帶來的額外開銷。其次,相比於虛擬機器,你可以在同一臺機器上建立更多數量的容器。Docker的另外一個優點是容器的啟動與停止都能在幾秒中內完

Docker學習總結8——利用Docker開啟持續交付之路

持續交付即Continuous Delivery,簡稱CD,隨著DevOps的流行正越來越被傳統企業所重視。持續交付講求以短週期、小細粒度,自動化的方式頻繁的交付軟體,在這個過 程中要求開發、測試、