在Docker中,容器是在特定的安全環境下運行的,這個環境被稱為容器空間。默認情況下,容器被限制為僅能使用主機資源的子集,并且無法執行潛在危險的操作。為了使容器更加靈活,Docker提供了PFN(Process File System Namespace)和PSCAP(Process Capability Namespace)這兩個namepace,允許Docker容器在安全的前提下擁有更多的擴展權限。
下面我們將聚焦于PSCAP,在Docker中,PSCAP是用于控制進程的權限。通過配置一個容器的PSCAP,可以改變容器在運行時對進程的管轄權,從而提高容器的安全性和靈活性。
# 以下是pscap的使用范式: docker run --cap-add=ImageName docker run --cap-drop= ImageName
上述命令中,docker run --cap-add
可以為容器添加特定的權限,docker run --cap-drop
則是用于從容器中剝奪掉某些特定的權限。
需要注意的是,在為容器添加或者剝奪權限時,需要明確具體的權限名稱。在Linux中,有很多的權限,能夠控制容器對CPU資源、內存等不同的系統資源的調度和使用,以及訪問修改Linux命名空間配置的相關操作。
# 以下是一些常用的權限名稱: CAP_AUDIT_CONTROL:跟蹤進程活動以及系統的安全審計 CAP_IPC_LOCK:鎖定內存分段,控制進程能夠鎖定和解鎖共享內存區域的大小 CAP_NET_ADMIN:網絡管理 CAP_SYS_ADMIN:管理員權限,在容器中可以執行一些底層操作,例如掛載文件系統、設置網絡等操作。 CAP_SYS_PTRACE:允許進程使用PTRACE操作,可以控制正在運行的進程 ,通常只被開發人員或系統管理員使用。 CAP_SYS_TIME: 與time相關的所有命令都需要這個權限,包括settimeofday
和adjtime
等等。
通常情況下,Docker會根據不同的應用場景和需求,在容器的默認安全級別上,使用--cap-add
和--cap-drop
命令來完成對容器權限的控制。但是需要注意的,在一些非常重要的容器上,最好不要輕易地將容器的權限調高,以免對系統安全帶來不必要的風險。