SecurityContext
Security Context 的目的是限制不可信容器的行爲,保護系統和其他容器不受其影響。
Kubernetes 提供了三種配置 Security Context 的方法:
Container-level Security Context:僅應用到指定的容器
Pod-level Security Context:應用到 Pod 內所有容器以及 Volume
Pod Security Policies(PSP):應用到集群內部所有 Pod 以及 Volume
Container-level Security Context
Container-level Security Context 僅應用到指定的容器上,並且不會影響 Volume。比如設置容器運行在特權模式:
Pod-level Security Context
Pod-level Security Context 應用到 Pod 內所有容器,並且還會影響 Volume(包括 fsGroup 和 selinuxOptions)。
Pod Security Policies(PSP)
Pod Security Policies(PSP)是集群級的 Pod 安全策略,自動爲集群內的 Pod 和 Volume 設置 Security Context。
使用 PSP 需要 API Server 開啓 extensions/v1beta1/podsecuritypolicy
,並且配置 PodSecurityPolicy
admission 控制器。
由於 中從代碼庫中刪除。PodSecurityPolicy API 不夠靈活、認證模型不夠完善且配置更新繁瑣等缺陷,PodSecurityPolicy 已在 v1.21 正式棄用,並將在 v1.25 中從代碼庫中刪除。已經使用 PodSecurityPolicy 的用戶推薦遷移到 Open Policy Agent。
API 版本對照表
v1.5-v1.15
extensions/v1beta1
v1.10+
policy/v1beta1
v1.21
deprecated
支持的控制項
privileged
運行特權容器
defaultAddCapabilities
可添加到容器的 Capabilities
requiredDropCapabilities
會從容器中刪除的 Capabilities
allowedCapabilities
允許使用的 Capabilities 列表
volumes
控制容器可以使用哪些 volume
hostNetwork
允許使用 host 網絡
hostPorts
允許的 host 端口列表
hostPID
使用 host PID namespace
hostIPC
使用 host IPC namespace
seLinux
SELinux Context
runAsUser
user ID
supplementalGroups
允許的補充用戶組
fsGroup
volume FSGroup
readOnlyRootFilesystem
只讀根文件系統
allowedHostPaths
允許 hostPath 插件使用的路徑列表
allowedFlexVolumes
允許使用的 flexVolume 插件列表
allowPrivilegeEscalation
defaultAllowPrivilegeEscalation
默認是否允許特權升級
示例
限制容器的 host 端口範圍爲 8000-8080:
限制只允許使用 lvm 和 cifs 等 flexVolume 插件:
SELinux
SELinux (Security-Enhanced Linux) 是一種強制訪問控制(mandatory access control)的實現。它的作法是以最小權限原則(principle of least privilege)爲基礎,在 Linux 核心中使用 Linux 安全模塊(Linux Security Modules)。SELinux 主要由美國國家安全局開發,並於 2000 年 12 月 22 日發行給開放源代碼的開發社區。
可以通過 runcon 來爲進程設置安全策略,ls 和 ps 的 - Z 參數可以查看文件或進程的安全策略。
開啓與關閉 SELinux
修改 / etc/selinux/config 文件方法:
開啓:SELINUX=enforcing
關閉:SELINUX=disabled
通過命令臨時修改:
開啓:setenforce 1
關閉:setenforce 0
查詢 SELinux 狀態:
示例
這會自動給 docker 容器生成如下的 HostConfig.Binds
:
對應的 volume 也都會正確設置 SELinux:
參考文檔
Last updated