什麼是「容器 (Container) 」? 「容器 (Container)? 」 是一個軟體單元,裡面包含了所有讓應用程式在各種不同環境 (如不同電腦硬體、基礎架構或雲端環境) 都能順利執行的必要元素,包括:程式碼、執行時期環境、系統工具、系統程式庫、軟體相依性等等。
採用容器,讓軟體開發更加方便。傳統上,一個軟體要從某個運算環境移植到另一個運算環境上執行,會遭遇許多困難。例如,當底層支援的軟體環境不同時,就可能帶來許多挑戰。而容器之所以能解決此問題,就是因為容器將所有必要的元素全部包裝在一起。如此一來,就能消除底層作業系統和基礎架構差異性所帶來的問題,因為容器執行時期環境已抽離這些差異性。
什麼是容器映像(container image)?
容器映像 (container image) 包含了可執行程式碼、支援程式庫、運算要求條件,以及在某種 IT 基礎架構上運作一個執行程序所需的其他物件。每個容器都需要載入一個容器映像來執行。
容器映像是藉由層層堆疊的檔案系統層 (file system layer) 而建構出一個修改後的映像或全新的映像。要建立一個映像,可使用容器平台的建構 (build) 指令從無到有全新打造,也可以從既有的映像修改而來,變成新容器的基礎。除此之外,還可持續更新容器來修正問題、加入更多功能,或將產品全面翻新。
如何確保容器安全?
確保容器安全需找出容器內所有元素的漏洞。
當容器在執行應用程式時,需載入容器映像。而含有漏洞的映像,將使得容器暴露在感染惡意程式或遭到漏洞攻擊的風險,甚至使得執行容器的主機也遭遇危險。這類資安漏洞應盡早在容器建構時期以及容器在生產環境上線之前預先發掘。換句話說,就是將資安融入整個流程當中,提供穩定可靠的容器給生產環境使用,節省時間和人力。此外,還可減輕應用程式開發週期的成本與開發中斷的情況。以下是確保容器安全的一些作法:
- 容器映像必須經過掃瞄。掃瞄後,已知安全的容器映像就必須冠上簽章、驗證等證明,並放到信賴的登錄 (Trusted Registry) 當中以供存取。使用者只需單純相信登錄的安全性即可。但如果事先的安全措施不夠完善,很可能就會發生問題。
- 容器的執行時期環境必須安全無虞,因為容器是在一個半隔離的環境下執行。若容器執行環境不安全,很可能將為容器和執行容器的主機帶來嚴重後果。因此,其存取必須受到管制。而且當連上網路時,還必須採用加密通訊協定。
- 資源應做好隔離。例如,必須正確設定控制群組 (control group) 和命名空間 (namespace);必須決定一個容器可使用哪些資源以及可使用的數量。
- 資安必須融入流程當中,才能提升營運整體效率。例如 Docker 即提供了一些文件來說明其容器引擎內建了哪些資安功能。
如需更多有關趨勢科技容器防護的相關資訊,請參閱此處。
原文出處:Container