容器安全之啟用用戶命名空間

描述

Docker守護程序中啟用用戶命名空間支持,可對用戶進行重新映射。該建議對鏡像中沒有指定用戶是有幫助的。

如果在容器鏡像中已經(jīng)定義了非root運行,可跳過此建議。

隱患分析

Docker守護程序中對Linux內核用戶命名空間支持為Docker主機系統(tǒng)提供了額外的安全性。
它允許容器具有獨特的用戶和組ID,這些用戶和組ID在主機系統(tǒng)所使用的傳統(tǒng)用戶和組范圍之外。
例如,root用戶希望有容器內的管理權限,可映射到主機系統(tǒng)上的非rootUID

審計

如果容器進程以root身份運行,則不符合安全要求

[root@localhost ~]# ps -ef|grep 15eebdabbb8b
root      80060  73608  0 04:03 ?        00:00:00 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/15eebdabbb8bd59366348ae95a89d79100370b9c9381b070fdfbb0119b516400 -address /var/run/docker/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc -systemd-cgroup
root     111259   1482  0 07:08 pts/0    00:00:00 grep --color=auto 15eebdabbb8b

修復建議

修改系統(tǒng)參數(shù)

$ sed -i "/user.max_user_namespaces/d" /etc/sysctl.conf
$ echo "user.max_user_namespaces=15000" >> /etc/sysctl.conf
$ sysctl -p

編輯配置文件

$ vi /etc/systemd/system/docker.service

ExecStart=/usr/bin/dockerd添加參數(shù)--userns-remap=default

重載服務

$ systemctl daemon-reload
$ systemctl restart docker

啟動一個容器

[root@localhost ~]# docker run -idt --name ccc alpine

查看容器內進程用戶

[root@localhost ~]# ps -p $(docker inspect --format='{{.State.Pid}}' $(docker ps |grep ccc|awk '{print $1}')) -o pid,user
 PID USER
2535 100000

參考文檔

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容