真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Docker容器中實現(xiàn)安全與隔離

本篇內(nèi)容介紹了“怎么在Docker容器中實現(xiàn)安全與隔離”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)公司專注于白塔企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站制作。白塔網(wǎng)站建設(shè)公司,為白塔等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

虛擬化和隔離

操作系統(tǒng)級的虛擬化,容器,空間,以及“chroot with steroids”,其實都定義了同一個概念:用戶空間隔離。類似Docker的產(chǎn)品都使用了操作系統(tǒng)級的虛擬化,通過用戶空間隔離可以提供額外的安全性。

0.9版本起,Docker包含了libcontainer庫作為它直接虛擬化的方法,這個功能由Linux內(nèi)核提供。 此外,它還通過 LXC[1],systemd-nspawn[2],和libvert[3]使用了抽象虛擬接口。
這些虛擬化庫全部利用了Linux的原始容器(參見上圖)

* namespaces
* cgroups
* capabilities等等。

Docker在一個包裝中聯(lián)合了以上功能,并稱之為容器格式。

Libcontainer

默認(rèn)的容器格式被稱為libcontainer。

Docker也支持使用[LXC](https://linuxcontainers.org/的傳統(tǒng)Linux容器。在將來,Docker可能會支持其他的容器格式,比如結(jié)合BSD jails或者Solaris Zones。

執(zhí)行驅(qū)動程序是一種特殊容器格式的實現(xiàn),用來運行docker容器。在最新的版本中,libcontainer有以下特性:

* 是運行docker容器的默認(rèn)執(zhí)行驅(qū)動程序。
* 和LXC同時裝載。
* 使用沒有任何其他依賴關(guān)系的Go語言設(shè)計的庫,來直接訪問內(nèi)核容器的API。
 * 目前的Docker涵蓋的功能有:命名空間使用,cgroups管理,capabilities權(quán)限集,進(jìn)程運行的環(huán)境變量配置以及網(wǎng)絡(luò)接口防火墻設(shè)置——所有功能是固定可預(yù)測的,不依賴LXC或者其它任何用戶區(qū)軟件包。
 * 只需提供一個根文件系統(tǒng),和libcontainer對容器的操作配置,它會幫你完成剩下的事情。
 * 支持新建容器或者添加到現(xiàn)有的容器。
 * 事實上,對libcontainer最迫切的需求是穩(wěn)定,開發(fā)團(tuán)隊也將其設(shè)為了默認(rèn)。
   * 在Docker 0.9中,LXC現(xiàn)在可以選擇關(guān)閉。
   * 注意:LXC在將來會繼續(xù)被支持。
   * 如果想要重新使用LXC驅(qū)動,只需輸入指令`docker -d –e lxc`,然后重啟Docker。

用戶命名空間

Docker不是虛擬化,相反的,它是一個支持命名空間抽象的內(nèi)核,提供了獨立工作空間(或容器)。當(dāng)你運行一個容器的時候,Docker為容器新建了一系列的namespace。

一些Docker使用的linux命名空間:

* pid namespace
 * 用作區(qū)分進(jìn)程(PID: Process ID)。
 * 容器中運行的進(jìn)程就如同在普通的Linux系統(tǒng)運行一樣,盡管它們和其他進(jìn)程共享一個底層內(nèi)核。
* net namespace
 * 用作管理網(wǎng)絡(luò)接口。
 * [DNAT]允許你單獨配置主機(jī)中每個用戶的的網(wǎng)絡(luò),并且有一個方便的接口傳輸它們之間的數(shù)據(jù)。
  * 當(dāng)然,你也可以通過使用網(wǎng)橋用物理接口替換它。
* ipc namespace
 * 用作管理對IPC (IPC: InterProcess Communication)資源的訪問。
* mnt namespace
 * 用作管理mount-points (MNT: Mount)。
* uts namespace
 * 用作區(qū)分內(nèi)核和版本標(biāo)識符(UTS: Unix Timesharing System)。

cgroups

Linux上的Docker使用了被稱為cgroups的技術(shù)。因為每個虛擬機(jī)都是一個進(jìn)程,所有普通Linux的資源管理應(yīng)用可以被應(yīng)用到虛擬機(jī)。此外,資源分配和調(diào)度只有一個等級,因為一個容器化的Linux系統(tǒng)只有一個內(nèi)核并且這個內(nèi)核對容器完全可見。

總之,cgroups可以讓Docker:

* 實現(xiàn)組進(jìn)程并且管理它們的資源總消耗。
* 分享可用的硬件資源到容器。
* 限制容器的內(nèi)存和CPU使用。
 * 可以通過更改相應(yīng)的cgroup來調(diào)整容器的大小。
 * 通過檢查Linux中的/sys/fs/cgroup對照組來獲取容器中的資源使用信息。
* 提供了一種可靠的結(jié)束容器內(nèi)所有進(jìn)程的方法。

Capabilities

Linux使用的是“POSIX capabilities”。這些權(quán)限是所有強(qiáng)大的root權(quán)限分割而成的一系列權(quán)限。在[Linux manpages]上可以找到所有可用權(quán)限的清單。Docker丟棄了除了[所需權(quán)限]外的所有權(quán)限,使用了白名單而不是黑名單。

一般服務(wù)器(裸機(jī)或者虛擬機(jī))需要以root權(quán)限運行一系列進(jìn)程。包括:

* SSH
* cron
* syslogd
* 硬件管理工具 (比如負(fù)載模塊)
* 網(wǎng)絡(luò)配置工具 (比如處理DHCP, WPA, or VPNs)等。

每個容器都是不同的,因為幾乎所有這些任務(wù)都由圍繞容器的基礎(chǔ)設(shè)施進(jìn)行處理。默認(rèn)的,Docker啟用一個嚴(yán)格限制權(quán)限的容器。大多數(shù)案例中,容器不需要真正的root權(quán)限。舉個例子,進(jìn)程(比如說網(wǎng)絡(luò)服務(wù))只需要綁定一個小于1024的端口而不需要root權(quán)限:他們可以被授予[CAP_NET_BIND_SERVICE](http://man7.or來代替。因此,容器可以被降權(quán)運行:意味著容器中的root權(quán)限比真正的root權(quán)限擁有更少的特權(quán)。
Capabilities只是現(xiàn)代Linux內(nèi)核提供的眾多安全功能中的一個。為了加固一個Docker主機(jī),你可以使用現(xiàn)有知名的系統(tǒng):

* TOMOYO
* [AppArmor]
* [SELinux]
* GRSEC, etc.

“怎么在Docker容器中實現(xiàn)安全與隔離”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


文章題目:怎么在Docker容器中實現(xiàn)安全與隔離
本文路徑:http://weahome.cn/article/jddjed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部