免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Docker容器全面的安全防護(hù)

Docker作為應(yīng)用容器中最引人矚目的實(shí)現(xiàn)方式,在近幾年得到飛速的發(fā)展,大有成為應(yīng)用容器事實(shí)標(biāo)準(zhǔn)的趨勢(shì),國(guó)內(nèi)外不少企業(yè)已經(jīng)將其應(yīng)用到生產(chǎn)系統(tǒng)中了,有理由相信隨著docker自身技術(shù)的完善和相關(guān)技術(shù)生態(tài)的建立,將成為下一代云計(jì)算的基石。

Docker的優(yōu)點(diǎn)很多,由于其誕生的目的就是便于持續(xù)的集成和快速部署,盡量減少中間環(huán)節(jié),這也為其安全控制帶來(lái)難度, Gartner在確定2017年中最高安全技術(shù),關(guān)于容器安全是其中一項(xiàng),原文如下:

Containers use a shared operating system (OS) model. Anattack on a vulnerability in the host OS could lead to a compromise of allcontainers. Containers are not inherently unsecure, but they are being deployedin an unsecure manner by developers, with little or no involvement fromsecurity teams and little guidance from security architects. Traditionalnetwork and host-based security solutions are blind to containers. Containersecurity solutions protect the entire life cycle of containers from creationinto production and most of the container security solutions providepreproduction scanning combined with runtime monitoring and protection.

報(bào)告分析了容器安全面臨的挑戰(zhàn):容器使用共享操作系統(tǒng)(OS)模型。對(duì)主機(jī)操作系統(tǒng)中的漏洞的攻擊可能導(dǎo)致所有容器被攻擊,且容器本身并不完全安全。但真正的問(wèn)題在于由開(kāi)發(fā)人員以不安全的方式部署,安全團(tuán)隊(duì)很少或根本沒(méi)有參與,安全架構(gòu)師也沒(méi)有指導(dǎo)。

Docker容器安全嗎?

本身這個(gè)問(wèn)題就是一個(gè)哲學(xué)問(wèn)題,答案是否定的-不安全,因?yàn)闆](méi)有絕對(duì)安全。其實(shí)對(duì)docker容器安全質(zhì)疑最大的一點(diǎn)就是其隔離的徹底性,與其對(duì)比就是當(dāng)前成熟的虛擬機(jī)(VM)技術(shù)。相對(duì)于VM,docker容器只是對(duì)進(jìn)程和文件進(jìn)行虛擬化,而VM做到了OS級(jí)別的虛擬化。從這個(gè)角度看VM的隔離性確實(shí)要好于docker容器,也就是說(shuō)對(duì)宿主機(jī)的安全影響VM要遠(yuǎn)遠(yuǎn)小于docker,但換個(gè)角度看,這也恰恰正是docker的一個(gè)優(yōu)點(diǎn):輕量級(jí),高效以及易移植。所以,安全和易用永遠(yuǎn)存在在一個(gè)平衡點(diǎn),本文探討的前提是認(rèn)同docker帶來(lái)的便利性,也接受其帶來(lái)的安全風(fēng)險(xiǎn),而要做的是利用一些的安全手段來(lái)將其風(fēng)險(xiǎn)降到可接受范圍。

而容器安全如何來(lái)實(shí)現(xiàn)呢?

其實(shí)在Gartner的報(bào)告中也提到了,需要對(duì)docker全生命周期的安全防護(hù),信息安全本質(zhì)上就是控制風(fēng)險(xiǎn),如果從一個(gè)docker的生命中周期面臨的安全威脅來(lái)設(shè)計(jì)docker的安全防護(hù)策略,那安全控制的思路就會(huì)十分清晰。

首先,來(lái)簡(jiǎn)單捋一下docker容器的生命周期,一個(gè)docker容器從產(chǎn)生到運(yùn)行部署大致分為如下三個(gè)狀態(tài):

–Dockerfile:用于創(chuàng)建image鏡像的模板文件,出于管理和安全的考慮,docker官方建議所有的鏡像文件應(yīng)該由dockerfile來(lái)創(chuàng)建,而當(dāng)前不少用戶把docker當(dāng)虛擬機(jī)來(lái)使用,甚至容器中安裝SSH,從安全的角度,這是不恰當(dāng)?shù)摹?/p>

–Image:鏡像文件,對(duì)比PC端的概念,我們可以把它理解為服務(wù)器端的可執(zhí)行軟件包。一旦打包生成,如存在安全問(wèn)題,那這些問(wèn)題也被一并打包,最后導(dǎo)致安全事件。

–Container:運(yùn)行起來(lái)的image文件就是容器了,從外來(lái)看就是一個(gè)應(yīng)用,可對(duì)外提供服務(wù)了。

所以不難發(fā)現(xiàn),docker容器的生命周期,就是一個(gè)鏡像文件從產(chǎn)生、運(yùn)行到停止的過(guò)程,對(duì)其安全防護(hù)的目標(biāo)就很明確了,那就是:

接下來(lái),我們把docker容器生命周期和實(shí)際工作中結(jié)合起來(lái),大致如下圖所示:

在一般企業(yè)內(nèi),一個(gè)標(biāo)準(zhǔn)的產(chǎn)品發(fā)布流程大致如下:研發(fā)人員將代碼提交給代碼庫(kù);QA和安全人員通過(guò)jekins等工具進(jìn)行編譯并測(cè)試;測(cè)試完成后,由運(yùn)維人員獲取最終上線版本,發(fā)布到生產(chǎn)環(huán)境。也可能是測(cè)試完成后,直接發(fā)布到生產(chǎn)環(huán)境。

化繁為簡(jiǎn),可將docker生命周期拆為兩個(gè)大階段,非生產(chǎn)環(huán)境階段和生產(chǎn)環(huán)境階段,這兩個(gè)階段安全控制的目標(biāo)如下:非生產(chǎn)環(huán)境中保證鏡像安全可信,生產(chǎn)環(huán)境中保證鏡像正確的運(yùn)行。

兩個(gè)階段安全保護(hù)措施

Docker公司與美國(guó)互聯(lián)網(wǎng)安全中心(CIS)合作,制定了docker的最佳安全實(shí)踐,其中包括了主機(jī)安全配置、docker守護(hù)進(jìn)程配置、docker守護(hù)程序配置文件、容器鏡像和構(gòu)建、容器運(yùn)行安全、docker安全操作六大項(xiàng),99個(gè)控制點(diǎn)。幾乎覆蓋了docker安全要求各個(gè)方面,我們也對(duì)其進(jìn)行了翻譯和整理,在本專欄的后續(xù)文章中會(huì)陸續(xù)發(fā)布。

保證非生產(chǎn)環(huán)境中的鏡像安全

容器使用非root用戶運(yùn)行

為了防止容器逃逸而獲得宿主機(jī)的權(quán)限,容器內(nèi)應(yīng)用以非root用戶身份運(yùn)行,如果用戶已經(jīng)在容器鏡像中定義,則默認(rèn)情況下容器將作為該用戶運(yùn)行,且不需要特定的用戶命名空間重新映射??梢栽贒ockerfile中添加用戶:RUN useradd -d / home /username -m -s / bin / bash username USER username

–使用安全的基礎(chǔ)鏡像

如果基礎(chǔ)鏡像存在安全問(wèn)題,那整個(gè)鏡像文件的安全性也無(wú)從談起,用戶可根據(jù)自身需求定制基礎(chǔ)鏡像,并強(qiáng)制要求組織內(nèi)使用認(rèn)可的基礎(chǔ)鏡像;也可使用第三方安全的鏡像,這里推薦使用Alpine-linux,docker所有的官方鏡像都使用其作為基礎(chǔ)鏡像,docker也會(huì)對(duì)其維護(hù)更新,所以安全性有保證。

–刪除鏡像中的setuid和setgid權(quán)限

setuid和setgid權(quán)限可用于提權(quán)。雖然有時(shí)候必須要使用到,但如果被濫用,可能會(huì)導(dǎo)致非法的提升權(quán)限??梢栽阽R像中限制這些權(quán)限的使用。具體做法可參考:在構(gòu)建鏡像時(shí)通過(guò)在Dockerfile中添加以下命令來(lái)刪除這些權(quán)限,一般在Dockerfile的末尾添加:RUN find / -perm 6000-type f-exec chmod a-s {} \;|| true

–啟用Docker的內(nèi)容信任

內(nèi)容信任允許當(dāng)用戶使用遠(yuǎn)程Docker倉(cāng)庫(kù)進(jìn)行操作時(shí),以執(zhí)行鏡像標(biāo)記的客戶端簽名和驗(yàn)證。內(nèi)容信任提供了對(duì)從Docker倉(cāng)庫(kù)發(fā)送和接收的數(shù)據(jù)使用數(shù)字簽名的能力。這些簽名允許客戶端驗(yàn)證特定鏡像標(biāo)簽的完整性。

在默認(rèn)情況下,內(nèi)容信任是禁用的??赏ㄟ^(guò)如下命令進(jìn)行啟動(dòng):export DOCKER_CONTENT_TRUST = 1

–最小安裝原則:

安全的普適法則,不要安裝任何與應(yīng)用無(wú)關(guān)的東西。

–對(duì)鏡像進(jìn)行安全漏洞掃描

鏡像中包含了很多的插件及軟件包,需要對(duì)這些軟件包進(jìn)行漏洞掃描,并根據(jù)結(jié)果安裝補(bǔ)丁或更新軟件,Coreos提供了一款開(kāi)源docker鏡像安全掃描器-Clair,(github地址鏈接

關(guān)于Clair的實(shí)現(xiàn)原理,會(huì)在后續(xù)的文章介紹,同時(shí)我們參考了Clair的實(shí)現(xiàn)方式,優(yōu)化了開(kāi)發(fā)了一款docker鏡像掃描器,也會(huì)在適當(dāng)?shù)臅r(shí)候推出并開(kāi)源。

如何保證生產(chǎn)環(huán)境中容器的安全?

–對(duì)docker宿主機(jī)進(jìn)行安全加固

務(wù)必保證docker宿主機(jī)的安全,需要對(duì)宿主機(jī)的系統(tǒng)進(jìn)行安全加固處理,主機(jī)加固可以參考相關(guān)的安全checklist以及各企業(yè)制定的主機(jī)安全規(guī)范,在這里就不在贅述。

–限制容器之間的網(wǎng)絡(luò)流量

在默認(rèn)情況下,同一主機(jī)上的所有容器之間網(wǎng)絡(luò)流量不受限制。因此,每個(gè)容器都有可能在同一主機(jī)上的容器網(wǎng)絡(luò)上讀取所有數(shù)據(jù)包。這可能會(huì)導(dǎo)致意外泄露信息。因此,需要限制容器間通信具體操作:在守護(hù)進(jìn)程模式下運(yùn)行docker,并將’–icc = false’作為參數(shù)。如:/ usr / bin / dockerd –icc = false

–配置Docker守護(hù)程序的TLS身份驗(yàn)證

在默認(rèn)情況下,Docker守護(hù)程序綁定到非聯(lián)網(wǎng)的Unix套接字,并以root權(quán)限運(yùn)行。若將默認(rèn)的docker守護(hù)程序更改為綁定到TCP端口或任何其他Unix套接字,那么任何有權(quán)訪問(wèn)該端口或套接字的人都可以完全訪問(wèn)Docker守護(hù)程序。因此,不應(yīng)該將Docker守護(hù)程序綁定到另一個(gè)IP /端口或Unix套接字。如果必須通過(guò)網(wǎng)絡(luò)套接字暴露Docker守護(hù)程序,需為守護(hù)程序和Docker Swarm API配置TLS身份驗(yàn)證。

–啟用用戶命名空間支持

防止容器內(nèi)的提權(quán)攻擊的最佳方法是將容器的應(yīng)用程序配置為無(wú)特權(quán)用戶運(yùn)行。對(duì)于必須使用roo身份運(yùn)行的容器,可以將該用戶重新映射到Docker主機(jī)上特定用戶。映射的用戶被分配一個(gè)范圍的UID,它們?cè)诿臻g內(nèi)作為正常的UID,但對(duì)主機(jī)本身沒(méi)有特權(quán)。關(guān)于使用用戶命名空間隔離容器在后續(xù)文章中詳細(xì)介紹。

–限制容器的內(nèi)存使用量

在默認(rèn)情況下,容器可以使用主機(jī)上的所有內(nèi)存??梢允褂脙?nèi)存限制機(jī)制來(lái)防止一個(gè)容器消耗所有主機(jī)資源的拒絕服務(wù)攻擊,具體可使用使用“-m”或“–memory”參數(shù)運(yùn)行容器。如下:

$> docker run <運(yùn)行參數(shù)> –memory <memory-size> <Container ImageName或ID> <Command>

–適當(dāng)設(shè)置容器CPU優(yōu)先級(jí)

在默認(rèn)情況下,CPU時(shí)間在容器間平均分配,可使用CPU共享功能來(lái)設(shè)定優(yōu)先級(jí)。 CPU共享允許將一個(gè)容器優(yōu)先于另一個(gè)容器,并禁止較低優(yōu)先級(jí)的容器頻繁地占用CPU資源。這樣可確保高優(yōu)先級(jí)的容器更好地運(yùn)行,且可以有效的防止資源耗盡攻擊。

針對(duì)docker安全配置檢查,docker官方提供了一個(gè)腳本工具docker-bench-secruity(github地址鏈接

通過(guò)前文介紹,列舉了在docker容器生命周期需要進(jìn)行的安全控制措施,但如果僅靠人工實(shí)施和監(jiān)督,可能效果不會(huì)太好。若能將docker各個(gè)生命周期的安全管理自動(dòng)化才是最佳實(shí)現(xiàn)方式,docker安全剛剛開(kāi)始呀:)

后續(xù)預(yù)告

由于docker安全涉及內(nèi)容較多,dosec專欄會(huì)發(fā)布一系列的原創(chuàng)文章,目前擬定有:

《docker鏡像安全掃描器的實(shí)現(xiàn)》

《利用docker插件實(shí)現(xiàn)細(xì)粒度權(quán)限控制》

《配置安全的docker運(yùn)行l(wèi)iunx主機(jī)》

《docker最佳安全實(shí)踐詳解》

《docker內(nèi)容信任詳解》

《docker安全管理平臺(tái)的架構(gòu)設(shè)計(jì)》

歡迎關(guān)注?。?!

專欄

2

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
再見(jiàn)Docker!使用Podman、Skopeo和Buildah下一代容器新架構(gòu)
Docker中級(jí)篇
linux下 docker部署asp.net core 應(yīng)用程序
谷歌開(kāi)源Java鏡像構(gòu)建工具Jib
Docker運(yùn)維之最佳實(shí)踐
玩轉(zhuǎn)容器安全 - 容器安全概述
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服