Docker容器全面的安全防護_第1頁
Docker容器全面的安全防護_第2頁
Docker容器全面的安全防護_第3頁
Docker容器全面的安全防護_第4頁
Docker容器全面的安全防護_第5頁
免費預覽已結束,剩余2頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Docker 容器全面的安全防護Docker 作為應用容器中最引人矚目的實現方式, 在近幾年得到飛速的發展,大有成為應用容器事實標準的趨勢,國 內外不少企業已經將其應用到生產系統中了,有理由相信隨著 docker 自身技術的完善和相關技術生態的建立, 將成為下代云計算的基石。Docker 的優點很多, 由于其誕生的目的全的考慮, docker 官方建議所有的鏡像文件應該由 dockerfile就是便于持續的集成和快速部署,盡量減少中間環節,這也為其安全控制帶來難度, Gartner 在確定 2017 年中最高安全技術 ,關于容器安全是其中項,原文如下: Containers use ashar

2、ed operating system (OS) model. Anattack on a vulnerability in the host OS could lead to a compromise of allcontainers. Containers are not inherently unsecure, but they are being deployedin an unsecure manner by developers, with little or no involvement fromsecurity teams and little guidance from se

3、curity architects. Traditionalnetwork and host-based security solutions are blind to containers. Containersecurity solutions protect the entire life cycle of containers from creationinto production and most of the container security solutions providepreproduction scanning combined with runtime monit

4、oring and protection. 報告分析了容器安全面臨的挑戰: 容器使用共享操作系統(OS)模型。對主機操作系統中的漏 洞的攻擊可能導致所有容器被攻擊,且容器本身并不完全安 全。但真正的問題在于由開發人員以不安全的方式部署,安 全團隊很少或根本沒有參與, 安全架構師也沒有指導。 Docker容器安全嗎?本身這個問題就是一個哲學問題,答案是否定的 -不安全,因為沒有絕對安全。其實對docker 容器安全質 疑最大的一點就是其隔離的徹底性,與其對比就是當前成熟 的虛擬機( VM )技術。相對于 VM ,docker 容器只是對進程 和文件進行虛擬化,而 VM 做到了 OS 級別的虛擬化

5、。從這 個角度看 VM 的隔離性確實要好于 docker 容器,也就是說對 宿主機的安全影響 VM要遠遠小于docker,但換個角度看,這也恰恰正是 docker 的一個優點: 輕量級,高效以及易移植。所以,安全和易用永遠存在在一個平衡點,本文探討的前提 是認同 docker 帶來的便利性, 也接受其帶來的安全風險, 而 要做的是利用一些的安全手段來將其風險降到可接受范圍。而容器安全如何來實現呢?其實在 Gartner 的報告中也提到 了,需要對 docker 全生命周期的安全防護, 信息安全本質上 就是控制風險, 如果從一個 docker 的生命中周期面臨的安全 威脅來設計 docker 的

6、安全防護策略, 那安全控制的思路就會分清晰。首先,來簡單捋一下 docker 容器的生命周期, 個 docker 容器從產生到運行部署大致分為如下三個狀態:Dockerfile: 用于創建 image 鏡像的模板文件,出于管理和安來創建, 而當前不少用戶把 docker 當虛擬機來使用, 甚至容器中安裝SSH,從安全的角度,這是不恰當的。Image:鏡像文件,對比 PC 端的概念,我們可以把它理解為服務器端的可執行軟件包。一旦打包生成,如存在安全問題,那這些 起來的 image 文件就是容器了,從外來看就是一個應用,可 對外提供服務了。所以不難發現, docker 容器的生命周期, 就是一個鏡

7、像文件從產生、運行到停止的過程,對其安全防問題也被一并打包,最后導致安全事件。Container :運行護的目標就很明確了,那就是:接下來,我們把docker容器生命周期和實際工作中結合起來,大致如下圖所示:在一般 企業內,一個標準的產品發布流程大致如下:研發人員將代 碼提交給代碼庫; QA 和安全人員通過 jekins 等工具進行編 譯并測試;測試完成后,由運維人員獲取最終上線版本,發 布到生產環境。 也可能是測試完成后, 直接發布到生產環境。化繁為簡, 可將 docker 生命周期拆為兩個大階段, 非生產環 境階段和生產環境階段,這兩個階段安全控制的目標如下: 非生產環境中保證鏡像安全可信

8、,生產環境中保證鏡像正確 的運行。兩個階段安全保護措施 Docker 公司與美國互聯網安 全中心(CIS)合作,制定了 docker的最佳安全實踐,其中包括了主機安全配置、 docker 守護進程配置、 docker 守護程序 配置文件、容器鏡像和構建、容器運行安全、 docker 安全操方面,我們也對其進行了翻譯和整理,在本專欄的后續文章 中會陸續發布。保證非生產環境中的鏡像安全-容器使用非root 用戶運行為了防止容器逃逸而獲得宿主機的權限,容器 內應用以非 root 用戶身份運行, 如果用戶已經在容器鏡像中 定義,則默認情況下容器將作為該用戶運行,且不需要特定 的用戶命名空間重新映射。可

9、以在 Dockerfile 中添加用戶:RUN useradd -d / home /username -m -s / bin / bash usernameUSER username -使用安全的基礎鏡像如果基礎鏡像存在安 全問題,那整個鏡像文件的安全性也無從談起,用戶可根據 自身需求定制基礎鏡像,并強制要求組織內使用認可的基礎 鏡像;也可使用第三方安全的鏡像,這里推薦使用Alpine-linux , docker所有的官方鏡像都使用其作為基礎鏡像, docker 也會對其維護更新,所以安全性有保證。-刪除鏡像 中的 setuid 和 setgid 權限 setuid 和 setgid 權限

10、可用于提權 雖然有時候必須要使用到,但如果被濫用,可能會導致非法的提升權限。可以在鏡像中限制這些權限的使用。具體做法 刪除這些權限,一般在 Dockerfile 的末尾添加: RUN find / -perm 6000-type f-exec chmod a-s ;| true 啟用 Docker 的 內容信任內容信任允許當用戶使用遠程 Docker 倉庫進行操 作時,以執行鏡像標記的客戶端簽名和驗證。內容信任提供 了對從 Docker 倉庫發送和接收的數據使用數字簽名的能力。可參考:在構建鏡像時通過在Dockerfile 中添加以下命令來這些簽名允許客戶端驗證特定鏡像標簽的完整性。在默認情況

11、下, 內容信任是禁用的。 可通過如下命令進行啟動: exportDOCKER_CONTENT_TRUST = 1-最小安裝原則:安全的github 地址鏈接通過前文介紹,列舉了在 docker 容器生命普適法則,不要安裝任何與應用無關的東西。-對鏡像進行 安全漏洞掃描鏡像中包含了很多的插件及軟件包,需要對這 些軟件包進行漏洞掃描,并根據結果安裝補丁或更新軟件,Coreos 提供了一款開源 docker 鏡像安全掃描器 -Clair ,(github地址鏈接關于 Clair 的實現原理,會在后續的文章介紹,同 時我們參考了 Clair 的實現方式,優化了開發了一款 docker鏡像掃描器,也會在

12、適當的時候推出并開源。如何保證生產環境中容器的安全?-對docker宿主機進行安全加固務必保證 docker 宿主機的安全, 需要對宿主機的系統進行安全加 固處理,主機加固可以參考相關的安全 checklist 以及各企業 制定的主機安全規范,在這里就不在贅述。-限制容器之間 的網絡流量在默認情況下,同一主機上的所有容器之間網絡 流量不受限制。因此,每個容器都有可能在同一主機上的容 器網絡上讀取所有數據包。這可能會導致意外泄露信息。因 此,需要限制容器間通信具體操作:在守護進程模式下運行docker,并將-icc = false作為參數。女口: / usr / bin / dockerd-ic

13、c = false -配置Docker守護程序的TLS身份驗證在默認情況下, Docker 守護程序綁定到非聯網的Unix 套接字,并TCP 端口或任何其他 Unix 套接字,那么任何有權訪問該端 口或套接字的人都可以完全訪問 Docker 守護程序。 因此, 不 應該將 Docker 守護程序綁定到另一個 IP /端口或 Unix 套接 字。如果必須通過網絡套接字暴露 Docker 守護程序, 需為守 護程序和Docker Swarm API配置TLS身份驗證。-啟用用戶命名空間支持防止容器內的提權攻擊的最佳方法是將容器的應用程序配置為無特權用戶運行。對于必須使用roo 身份運行的容器,可以

14、將該用戶重新映射到Docker主機上特定用戶。映射的用戶被分配一個范圍的 UID ,它們在命名空間 內作為正常的 UID ,但對主機本身沒有特權。關于使用用戶 命名空間隔離容器在后續文章中詳細介紹。-限制容器的內 存使用量在默認情況下,容器可以使用主機上的所有內存。可以使用內存限制機制來防止一個容器消耗所有主機資源 數運行容器。 如下: $ docker run - memory -適當設置 容器 CPU 優先級在默認情況下, CPU 時間在容器間平均分 配,可使用 CPU 共享功能來設定優先級。 CPU 共享允許將的拒絕服務攻擊,具體可使用使用“-m 或-memory 參個容器優先于另一個容器,并禁止較低優先級的容器頻繁 地占用 CPU 資源。這樣可確保高優先級的容器更好地運行, 且可以有效的防止資源耗盡攻擊。針對 docker 安全配置檢 查, docker 官方提供了一個腳本工具 docker-bench-secruity周期需要進行的安全控制措施,但如果僅靠人工實施和監 督

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論