天天看點

容器可用安全政策

本節是第六部分“安全篇”的第二篇,在這個部分,我将用四篇内容為你介紹包括鏡像,容器和 Linux 核心的 LSM 等内容。上篇,我為你介紹了容器鏡像安全相關的内容。本篇,我們将重點放在容器安全上。

在第一部分“容器篇”中,我已經帶你深入剖析了 Docker 容器的本質,以及其所用到的核心技術 cgroups 和 namespace。

在上一篇中,我為你介紹了鏡像安全相關的内容,分享了一些思路及方法,本篇,我們将容器放在容器安全上。

那麼容器可能會有哪些安全問題呢?這就要從 Linux 的權限說起了。

Linux 的權限模型

Linux 的權限模型在早期隻分為兩類:特權程序和非特權程序。

  • 特權程序:有效 UID 為 0(一般也稱為超級使用者或者 root 使用者)的程序,特權程序可以繞過所有的核心權限檢查。
  • 非特權程序:有效 UID 為非 0 的程序,非特權程序需要根據程序的憑證(有效 UID、有效 GID 等)進行相應的權限檢查。

在這種模型下,很容易發生權限失控的問題。如果是一般使用者想要提升權限執行某些指令的話,通常有兩種方法:一種是使用 sudo 來完成,但如果伺服器上有很多使用者,且這些使用者需要有不同的權限控制,那就會很繁瑣;另一種是使用 SUID 的方式,允許一般使用者來運作一個歸屬于 root 的檔案,并同時具備 root 的權限,但這種情況下便更加不容易控制使用者的權限了。

是以從 Linux 2.2 開始便将與超級使用者相關聯的特權劃分為了不同的單元,稱之為 capabilities 并且可以獨