婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何隔離docker容器中的用戶的方法

如何隔離docker容器中的用戶的方法

熱門標(biāo)簽:新鄉(xiāng)人工智能電話機(jī)器人加盟 臨汾電銷機(jī)器人費(fèi)用 福州呼叫中心外呼系統(tǒng)哪家好 地圖標(biāo)注需要提交啥資料入駐 河南省鄭州市地圖標(biāo)注 七大洲地圖標(biāo)注 地圖標(biāo)注w是什么方向 400電話申請找哪家公司 昆明外呼系統(tǒng)

筆者在前文《理解 docker 容器中的 uid 和 gid》介紹了 docker 容器中的用戶與宿主機(jī)上用戶的關(guān)系,得出的結(jié)論是:docker 默認(rèn)沒有隔離宿主機(jī)用戶和容器中的用戶。如果你已經(jīng)了解了 Linux 的 user namespace 技術(shù)(參考《Linux Namespace : User》),那么自然會問:docker 為什么不利用 Linux user namespace 實現(xiàn)用戶的隔離呢?事實上,docker 已經(jīng)實現(xiàn)了相關(guān)的功能,只是默認(rèn)沒有啟用而已。筆者將在本文中介紹如何配置 docker 來隔離容器中的用戶。
說明:本文的演示環(huán)境為 ubuntu 16.04。

了解 Linux user namespace

Linux user namespace 為正在運(yùn)行的進(jìn)程提供安全相關(guān)的隔離(其中包括 uid 和 gid),限制它們對系統(tǒng)資源的訪問,而這些進(jìn)程卻感覺不到這些限制的存在。關(guān)于 Linux User Namespace 的介紹請參考筆者的《Linux Namespace : User》一文。

對于容器而言,阻止權(quán)限提升攻擊(privilege-escalation attacks)的最好方法就是使用普通用戶權(quán)限運(yùn)行容器的應(yīng)用程序。
然而有些應(yīng)用必須在容器中以 root 用戶來運(yùn)行,這就是我們使用 user namespace 的最佳場景。我們通過 user namespace 技術(shù),把宿主機(jī)中的一個普通用戶(只有普通權(quán)限的用戶)映射到容器中的 root 用戶。在容器中,該用戶在自己的 user namespace 中認(rèn)為自己就是 root,也具有 root 的各種權(quán)限,但是對于宿主機(jī)上的資源,它只有很有限的訪問權(quán)限(普通用戶)。

User namespace 的用戶映射

在配置 docker daemon 啟用 user namespace 前,我需要先來了解一些關(guān)于從屬(subordinate)用戶/組和映射(remapping)的概念。從屬用戶和組的映射由兩個配置文件來控制,分別是 /etc/subuid 和 /etc/subgid。看下它們的默認(rèn)內(nèi)容:在配置 docker daemon 啟用 user namespace 前,我需要先來了解一些關(guān)于從屬(subordinate)用戶/組和映射(remapping)的概念:

對于 subuid,這一行記錄的含義為:

用戶 nick,在當(dāng)前的 user namespace 中具有 65536 個從屬用戶,用戶 ID 為 100000-165535,在一個子 user namespace 中,這些從屬用戶被映射成 ID 為 0-65535 的用戶。subgid 的含義和 subuid 相同。

比如說用戶 nick 在宿主機(jī)上只是一個具有普通權(quán)限的用戶。我們可以把他的一個從屬 ID(比如 100000 )分配給容器所屬的 user namespace,并把 ID 100000 映射到該 user namespace 中的 uid 0。此時即便容器中的進(jìn)程具有 root 權(quán)限,但也僅僅是在容器所在的 user namespace 中,一旦到了宿主機(jī)中,你頂多也就有 nick 用戶的權(quán)限而已。

當(dāng)開啟 docker 對 user namespace 的支持時(docker 的 userns-remap 功能),我們可以指定不同的用戶映射到容器中。比如我們專門創(chuàng)建一個用戶 dockeruser,然后手動設(shè)置其 subuid 和 subgid:

nick:100000:65536
dockeruser:165536:65536

并把它指定給 docker daemon:

{
 "userns-remap": "dockeruser"
}

請注意 subuid 的設(shè)置信息,我們?yōu)?dockeruser 設(shè)置的從屬 ID 和 nick 用戶是不重疊的,實際上任何用戶的從屬 ID 設(shè)置都是不能重疊的。

或者一切從簡,讓 docker 為我們包辦這些繁瑣的事情,直接把 docker daemon 的 userns-rempa 參數(shù)指定為 "default":

{
 "userns-remap": "default"
}

這時,docker 會自動完成其它的配置。

配置 docker daemon 啟用用戶隔離

這里筆者采取簡單的方式,讓 docker 創(chuàng)建默認(rèn)的用戶用于 user namespace。我們需要先創(chuàng)建 /etc/docker/daemon.json 文件:

$ sudo touch /etc/docker/daemon.json

然后編輯其內(nèi)容如下(如果該文件已經(jīng)存在,僅添加下面的配置項即可),并重啟 docker 服務(wù):

{
 "userns-remap": "default"
}
$ sudo systemctl restart docker.service

下面我們來驗證幾個關(guān)于用戶隔離的幾個點(diǎn)。

首先驗證 docker 創(chuàng)建了一個名為 dockremap 的用戶:

然后查看 /etc/subuid 和 /etc/subgid 文件中是否添加了新用戶 dockremap 相關(guān)的項:

接下來我們發(fā)現(xiàn)在 /var/lib/docker 目錄下新建了一個目錄: 165536.165536,查看該目錄的權(quán)限:

165536 是由用戶 dockremap 映射出來的一個 uid。查看 165536.165536 目錄的內(nèi)容:

與 /var/lib/docker 目錄下的內(nèi)容基本一致,說明啟用用戶隔離后文件相關(guān)的內(nèi)容都會放在新建的 165536.165536 目錄下。

通過上面的檢查,我們可以確認(rèn) docker daemon 已經(jīng)啟用了用戶隔離的功能。

宿主機(jī)中的 uid 與容器中 uid

在 docker daemon 啟用了用戶隔離的功能后,讓我們看看宿主機(jī)中的 uid 與容器中 uid 的變化。

$ docker run -d --name sleepme ubuntu sleep infinity

uid 165536 是用戶 dockremap 的一個從屬 ID,在宿主機(jī)中并沒有什么特殊權(quán)限。然而容器中的用戶卻是 root,這樣的結(jié)果看上去很完美:

新創(chuàng)建的容器會創(chuàng)建 user namespace

在 docker daemon 啟用用戶隔離的功能前,新創(chuàng)建的容器進(jìn)程和宿主機(jī)上的進(jìn)程在相同的 user namespace 中。也就是說 docker 并沒有為容器創(chuàng)建新的 user namespace:

上圖中的容器進(jìn)程 sleep 和宿主機(jī)上的進(jìn)程在相同的 user namespace 中(沒有開啟用戶隔離功能的場景)。

在 docker daemon 啟用用戶隔離的功能后,讓我們查看容器中進(jìn)程的 user namespace:

上圖中的 4404 就是我們剛啟動的容器中 sleep 進(jìn)程的 PID。可以看出,docker 為容器創(chuàng)建了新的 user namespace。在這個 user namespace 中,容器中的用戶 root 就是天神,擁有至高無上的權(quán)力!

訪問數(shù)據(jù)卷中的文件

我們可以通過訪問數(shù)據(jù)卷中的文件來證明容器中 root 用戶究竟具有什么樣的權(quán)限?創(chuàng)建四個文件,分別屬于用戶 root 、165536 和 nick。rootfile 只有 root 用戶可以讀寫,用戶 nick 具有 nickfile 的讀寫權(quán)限,uid 165536 具有文件 165536file 的讀寫權(quán)限,任何用戶都可以讀寫 testfile 文件:

下面把這幾個文件以數(shù)據(jù)卷的方式掛載到容器中,并檢查從容器中訪問它們的權(quán)限:

$ docker run -it --name test -w=/testv -v $(pwd)/testv:/testv ubuntu

容器中的 root 用戶只能訪問 165536file 和 testfile,說明這個用戶在宿主機(jī)中只有非常有限的權(quán)限。

在容器中禁用 user namespace

一旦為 docker daemon 設(shè)置了 "userns-remap" 參數(shù),所有的容器默認(rèn)都會啟用用戶隔離的功能(默認(rèn)創(chuàng)建一個新的 user namespace)。有些情況下我們可能需要回到?jīng)]有開啟用戶隔離的場景,這時可以通過 --userns=host 參數(shù)為單個的容器禁用用戶隔離功能。--userns=host 參數(shù)主要給下面三個命令使用:

docker container create
docker container run
docker container exec

比如執(zhí)行下的命令:

$ docker run -d --userns=host --name sleepme ubuntu sleep infinity

查看進(jìn)程信息:

進(jìn)程的有效用戶又成 root 了,并且也沒有為進(jìn)程創(chuàng)建新的 user namespace:

已知問題

User namespace 屬于比較高級的功能,目前 docker 對它的支持還算不上完美,下面是已知的幾個和現(xiàn)有功能不兼容的問題:

  • 共享主機(jī)的 PID 或 NET namespace(--pid=host or --network=host)
  • 外部的存儲、數(shù)據(jù)卷驅(qū)動可能不兼容、不支持 user namespace
  • 使用 --privileged 而不指定 --userns=host

總結(jié)

Docker 是支持 user namespace 的,并且配置的方式也非常簡便。在開啟 user namespace 之后我們享受到了安全性的提升,但同時也會因為種種限制讓其它的個別功能出現(xiàn)問題。這時我們需要作出選擇,告別一刀切的決策,讓合適的功能出現(xiàn)的合適的場景中。

參考:

Understanding how uid and gid work in Docker containers
Introduction to User Namespaces in Docker Engine
Isolate containers with a user namespace

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:臨沂 鎮(zhèn)江 岳陽 海口 股票 烏海 紅河 四川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何隔離docker容器中的用戶的方法》,本文關(guān)鍵詞  如何,隔離,docker,容器,中的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何隔離docker容器中的用戶的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于如何隔離docker容器中的用戶的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    中文字幕在线观看一区二区| 麻豆精品在线播放| 欧美怡红院视频| 亚洲一区二区欧美激情| 欧美老肥妇做.爰bbww视频| 免费成人结看片| 久久嫩草精品久久久久| 成人免费视频播放| 一级做a爱片久久| 7777精品伊人久久久大香线蕉经典版下载 | 欧美精品一区二区三| 国产一区二区在线免费观看| 国产日韩av一区二区| 99久久精品一区二区| 亚洲香蕉伊在人在线观| 日韩精品综合一本久道在线视频| 国产电影一区二区三区| 亚洲精选视频免费看| 91精品国产91综合久久蜜臀| 国产一区二区三区电影在线观看| 国产精品国产自产拍高清av王其| 欧美三级蜜桃2在线观看| 国产在线视频一区二区三区| 国产精品高潮呻吟| 制服丝袜在线91| 国产伦理精品不卡| 亚洲精品va在线观看| 日韩欧美高清dvd碟片| 成人理论电影网| 午夜私人影院久久久久| 久久久久久免费| 色www精品视频在线观看| 麻豆国产精品一区二区三区| 9人人澡人人爽人人精品| 亚洲chinese男男1069| 久久亚洲综合色| 在线一区二区三区| 久久精品国产在热久久| 日韩美女视频19| 日韩欧美一区二区免费| 一本色道久久加勒比精品| 精品亚洲免费视频| 亚洲精品国产无套在线观| 欧美成人a在线| 一本一本大道香蕉久在线精品 | 欧美日韩高清一区| 成人一道本在线| 日本在线不卡视频| 综合精品久久久| 精品国产sm最大网站| 欧美色图天堂网| 国产成人av福利| 免费观看在线综合色| 欧美午夜宅男影院| 国产成人小视频| 日本在线不卡视频| 亚洲自拍欧美精品| 久久久不卡网国产精品二区| 777午夜精品免费视频| 色欲综合视频天天天| 国产精品一卡二卡| 日本在线不卡视频| 亚洲狠狠爱一区二区三区| 国产精品视频线看| 欧美zozozo| 欧美一区二区三区喷汁尤物| 色噜噜狠狠色综合欧洲selulu| 国产精品一卡二卡| 久久99精品久久久久久动态图| 亚洲成人av电影| 夜夜精品视频一区二区| 国产精品三级av在线播放| 久久―日本道色综合久久| 欧美一区午夜精品| 欧美年轻男男videosbes| 色成年激情久久综合| 不卡在线观看av| 国产精品一区二区久久不卡| 蜜桃视频一区二区| 日韩精品一区在线观看| 91精品国产色综合久久| 欧美久久一区二区| 欧美日韩国产综合一区二区 | 韩国成人福利片在线播放| 午夜激情综合网| 亚洲综合另类小说| 一个色在线综合| 亚洲免费在线观看| 亚洲四区在线观看| 亚洲区小说区图片区qvod| 国产精品传媒视频| 1区2区3区国产精品| 亚洲欧洲三级电影| 国产精品欧美综合在线| 国产欧美一区二区精品性色超碰| 久久综合九色综合欧美98| 久久嫩草精品久久久精品| 久久久久久一级片| 久久亚区不卡日本| 国产午夜一区二区三区| 国产夜色精品一区二区av| www精品美女久久久tv| 亚洲精品一区二区精华| 国产精品乡下勾搭老头1| 国产一区不卡在线| 顶级嫩模精品视频在线看| 高清国产午夜精品久久久久久| 成人免费高清在线| 不卡欧美aaaaa| 99久久er热在这里只有精品66| www.亚洲免费av| 91丨porny丨户外露出| 色94色欧美sute亚洲线路一久 | 国产欧美一区二区精品婷婷| 国产精品日韩精品欧美在线| 中文字幕免费一区| 亚洲丝袜精品丝袜在线| 亚洲一区二区在线观看视频| 亚洲成人你懂的| 蜜桃av一区二区| 国产福利精品一区| 91麻豆精品在线观看| 欧美日韩免费观看一区二区三区| 欧美精品乱码久久久久久| 欧美一区二区黄| 国产亚洲欧洲997久久综合| 中文字幕在线不卡视频| 亚洲最新在线观看| 日韩二区三区在线观看| 国产日产欧产精品推荐色| 亚洲国产精品二十页| 一区二区成人在线| 久色婷婷小香蕉久久| 国产黄色91视频| 日本韩国精品在线| 欧美一区二区三区四区五区| 久久久噜噜噜久噜久久综合| 成人欧美一区二区三区黑人麻豆| 亚洲国产成人高清精品| 精品中文字幕一区二区| bt欧美亚洲午夜电影天堂| 欧美日韩一区二区电影| 亚洲精品在线网站| 中文字幕日韩一区| 亚洲福利视频一区二区| 九一九一国产精品| 99re热视频精品| 3d动漫精品啪啪| 中文av一区二区| 五月天久久比比资源色| 国产尤物一区二区在线| 一本色道久久综合亚洲aⅴ蜜桃| 777色狠狠一区二区三区| 国产视频在线观看一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 蜜桃av一区二区在线观看| 99久久精品国产毛片| 91精品婷婷国产综合久久性色| 欧美国产综合一区二区| 日韩欧美国产高清| 国产精品国模大尺度视频| 免费在线观看精品| 91色综合久久久久婷婷| 日韩精品自拍偷拍| 一区二区三区久久| 国产精品一区二区三区乱码| 欧美日韩亚洲综合一区二区三区| 久久久国产精品麻豆| 水野朝阳av一区二区三区| 成人aaaa免费全部观看| 欧美电影免费观看完整版| 亚洲麻豆国产自偷在线| 国产麻豆视频一区二区| 在线播放中文字幕一区| 国产精品久久久久久久久免费相片| 三级一区在线视频先锋| 91丨porny丨中文| 国产丝袜欧美中文另类| 奇米四色…亚洲| 在线观看免费视频综合| 欧美激情综合网| 久久精品久久久精品美女| 日本精品免费观看高清观看| 久久婷婷国产综合国色天香 | 成人亚洲一区二区一| 日韩精品一区国产麻豆| 亚洲成人免费看| 色呦呦国产精品| 欧美激情艳妇裸体舞| 国内精品视频一区二区三区八戒| 天天综合天天做天天综合| 色婷婷av一区二区三区大白胸| 国产亚洲精品超碰| 精品午夜久久福利影院| 欧美精品99久久久**| 亚洲激情校园春色| 成人动漫精品一区二区| 久久免费电影网| 日本免费新一区视频| 欧美日韩在线播放|