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
docker 使用namespace進行資源隔離,其中一種是user namespace.user namespace主要隔離了安全相關的識別符號和屬性,包括使用者id,使用者組id,root目錄,key(金鑰)以及特殊許可權.
預設的情況下,docker容器使用的root使用者和宿主機的root使用者是同乙個使用者,儘管可以限制容器內root使用者的許可權(capability),但本質上仍然和宿主機root使用者是同乙個使用者.
有了user namespace之後,我們就可以將宿主機上的普通使用者對映為容器的root使用者,這樣容器中的實際使用者為普通使用者許可權,可以將容器的安全程度提高乙個等級!
docker run -it ubuntu:14.04 top
~$ ps -aux|grep top
root 18724 0.2 0.0 19848 2400 pts/15 ss+ 14:16 0:00 top
可以看到,執行top命令的使用者是root,即容器中的root使用者就是宿主機的root使用者
配置實現
實驗內容
docker run -it ubuntu:14.04 top
~$ ps -aux|grep top
165536 19347 0.1 0.0 19848 2424 pts/15 ss+ 14:32 0:00 top
可以看到,在宿主機上top命令的執行使用的使用者是165536(uid),不是root
1 root 20 0 19848 2424 2108 r 0.0 0.0 0:00.07 top
容器內,看上去仍然是root使用者.即:有了user namespace之後,我們就可以將宿主機上的普通使用者對映為容器的root使用者.
那麼,有乙個問題?這個普通使用者是誰?
上面的實驗中,我們已經使用了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=--userns-remap=:--userns-remap=--userns-remap=:
MySQL之使用者資源限制
膜拜一下,mysql太強悍了。建立新使用者 mysql grant all privileges on to zhaiwx1987 localhost identified by 123456 with grant option 而通過如下語句建立使用者,則暫不授權,所有許可權都未開啟.grant ...
docker資源隔離實現方式
預設情況下,乙個容器沒有資源限制,幾乎可以使用宿主主機的所有資源。docker提供了控制記憶體 cpu block io。但是實際上主要是namespace和cgroup控制資源的隔離。docker的隔離性主要運用namespace 技術。傳統上linux中的pid是唯一且獨立的,在正常情況下,使用...
AIX Study之 使用者訪問系統資源限制配置
aix 使用者使用的系統資源限制包括兩個概念 硬限制 hard limits 和軟限制 soft limits hard limits自aix 4.1版本開始引入。hard limits 應由aix系統管理員設定,只有security組的成員可以將此值增大,使用者本身可以減小此限定值,但是其更改將隨...