Docker安全之用户资源隔离
Docker安全之用戶資源隔離
docker 字母哥 18小時前 75℃ 0評論向您推薦
Dcoker入門與實踐系列文章
歡迎加入QQ技術交流群:300139299
docker進行資源隔離的6種namespace
| UTS | 主機名與域名 | Linux 2.6.19 |
| IPC | 信號量,消息隊列和共享內存 | Linux 2.6.19 |
| PID | 進程編號 | Linux 2.6.24 |
| Network | 網絡設備,網絡棧,端口 | 始于Linux 2.6.24 完成于 Linux 2.6.29 |
| Mount | 文件掛載 | Linux 2.4.19 |
| User | 用戶用戶組 | 始于 Linux 2.6.23 完成于 Linux 3.8 |
其中User namespace是從docker1.10開始被支持,并且不是默認開啟的.
以上內容不是這篇文章的重點,此篇文章主要是介紹user namespace
一.User namespace的作用
docker 使用namespace進行資源隔離,其中一種是user namespace.user namespace主要隔離了安全相關的標識符和屬性,包括用戶ID,用戶組Id,root目錄,key(密鑰)以及特殊權限.
默認的情況下,docker容器使用的root用戶和宿主機的root用戶是同一個用戶,盡管可以限制容器內root用戶的權限(capability),但本質上仍然和宿主機root用戶是同一個用戶.
有了user namespace之后,我們就可以將宿主機上的普通用戶映射為容器的root用戶,這樣容器中的實際用戶為普通用戶權限,可以將容器的安全程度提高一個等級!
實驗一:不使用user namespace進行資源隔離
- 運行一個容器
- 另外開一個終端,查看該容器進程在宿主機上的用戶
可以看到,運行top命令的用戶是root,即容器中的root用戶就是宿主機的root用戶
實驗二:使用user namespace進行資源隔離
配置實現
- 運行docker deamon進程的時候加入參數--userns-remap=default,如:ubuntu中是修改/etc/default/docker中的DOCKER_OPTS,追加配置--userns-remap=default
- 重啟docker deamon,如:ubuntu中是使用service docker restart
實驗內容
- 運行一個容器
- 另外開一個終端,查看該容器進程在宿主機上的用戶
可以看到,在宿主機上top命令的執行使用的用戶是165536(uid),不是root
- 看看容器內的top命令的輸出
容器內,看上去仍然是root用戶.即:有了user namespace之后,我們就可以將宿主機上的普通用戶映射為容器的root用戶.
那么,有一個問題?這個普通用戶是誰?
二.user namespace的默認映射用戶
上面的實驗中,我們已經使用了user namespace的最簡化配置.即:--userns-remap=default
實際上,docker新建了一個用戶和用戶組都叫做dockremap,容器內的root用戶映射到宿主機的這個dockremap用戶上.
$ cat /etc/passwd …… dockremap:x:10000:10000:,,,:/home/dockremap:/bin/false $ cat /etc/subuid …… dockremap:165536:65536 $ cat /etc/subgid …… dockremap:165536:65536三.自定義映射用戶
首先在宿主機上創建用戶及用戶組,在啟動docker deamon的時候傳入如下參數.
--userns-remap=<uid> --userns-remap=<uid>:<gid> --userns-remap=<username> --userns-remap=<username>:<groupname>向您推薦
Dcoker入門與實踐系列文章
歡迎加入QQ技術交流群:300139299
轉載請注明:字母哥博客 ? Docker安全之用戶資源隔離
總結
以上是生活随笔為你收集整理的Docker安全之用户资源隔离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spark数据分析实战:大型活动大规模人
- 下一篇: CSS滤镜(Filters)