<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你的鏡像真的安全嗎?

          共 3260字,需瀏覽 7分鐘

           ·

          2021-01-13 19:26

          點(diǎn)擊上方“開源Linux”,選擇“設(shè)為星標(biāo)”

          回復(fù)“學(xué)習(xí)”獲取獨(dú)家整理的學(xué)習(xí)資料!

          你的鏡像安全嗎?

          與傳統(tǒng)的服務(wù)器和虛擬機(jī)相比,Docker容器為我們工作提供了更安全的環(huán)境。容器中可以使我們的應(yīng)用環(huán)境組件實(shí)現(xiàn)更小,更輕。每個(gè)應(yīng)用的組件彼此隔離并且大大減少了攻擊面。這樣即使有人入侵了您的應(yīng)用,也會(huì)最大程度限制被攻擊的程度,而且入侵后,利用漏洞傳播攻擊更難。

          不過,我們還是需要最大程度了解Docker技術(shù)本身的存在的安全隱患,這樣才能實(shí)現(xiàn)最大程度保護(hù)我們的容器化系統(tǒng)。

          其中大部分將類似于我們已經(jīng)為基于服務(wù)器所做的工作,例如監(jiān)視容器活動(dòng),限制每個(gè)容器環(huán)境的資源消耗,維持良好的應(yīng)用程序設(shè)計(jì)實(shí)踐,修補(bǔ)漏洞并確保憑據(jù)不會(huì)被入侵您的Docker映像。

          但是,我們還是需要采取專門針對Docker部署的安全措施。因此,以下列出了確保容器平臺(tái)上托管的應(yīng)用程序安全的三個(gè)基本步驟。

          讓我們從最重要的開始。

          以非Root用戶運(yùn)行容器鏡像

          默認(rèn)情況下,Docker授予容器中進(jìn)程的root權(quán)限,這意味著它們具有對容器和主機(jī)環(huán)境的完全管理訪問權(quán)限。一般來說,就像我們不會(huì)在標(biāo)準(zhǔn)Linux服務(wù)器上以root身份運(yùn)行進(jìn)程一樣,我們大部分容器應(yīng)用部署時(shí),也不會(huì)在容器中以root身份運(yùn)行。

          但是,如果沒有適當(dāng)?shù)淖⒁夂完P(guān)注,開發(fā)人員可以輕松地忽略此默認(rèn)行為并創(chuàng)建不安全的映像,這些映像會(huì)錯(cuò)誤地授予root用戶訪問權(quán)限。這可能是對黑客送了一份大禮,黑客可以利用此漏洞竊取API密鑰,令牌,密碼和其他機(jī)密數(shù)據(jù),或者干擾容器部署的基礎(chǔ)主機(jī),并對服務(wù)器系統(tǒng)造成惡意破壞。

          甚至,您的DevOps團(tuán)隊(duì)還可能會(huì)受到侵害,從而給Docker環(huán)境帶來意想不到的后果。例如,他們可能會(huì)無意中創(chuàng)建具有管理訪問權(quán)限的,由Dockerfile命令構(gòu)建的映像,這些映像在啟動(dòng)容器時(shí)會(huì)擦除數(shù)據(jù)或更改主機(jī)系統(tǒng)設(shè)置。

          如何防止容器以root權(quán)限運(yùn)行

          如果不確定基礎(chǔ)鏡像使用什么權(quán)限,應(yīng)該強(qiáng)制使用自定義用戶的非root用戶或用戶組。這樣,容器進(jìn)程只能訪問我們預(yù)期功能所需要的資源

          可以通過以下任意方式操作即可:

          • 在Dockerfile中設(shè)置非root用戶

          首先,設(shè)置僅具有應(yīng)用程序所需訪問權(quán)限的專用用戶或用戶組。

          然后,Dockerfile中添加User,并以此用戶或組以構(gòu)建鏡像和啟動(dòng)容器運(yùn)行時(shí)進(jìn)程命令

          FROM?centos:7

          ?????RUN?groupadd?-g?1000?basicuser???&&

          ????????useradd?-r?-u?1000?-g?basicuser???basicuser

          ?????USER?basicuser
          • 在Docker run命令中使用-user指定非root用戶

          Docker run命令中的-user選項(xiàng)將覆蓋Dockerfile中指定的任何用戶。所以,在以下示例中,您的容器將始終以最低特權(quán)運(yùn)行-所提供的用戶標(biāo)識(shí)符1009的權(quán)限級(jí)別也最低。但是,此方法無法解決鏡像本身的潛在安全缺陷。因此,最好在Dockerfile中指定一個(gè)非root用戶,以便您的容器始終安全運(yùn)行。

          $?docker?run?--user?1009?centos:7

          使用自己的私有注冊中心

          私有注冊中心是由我們自己的組織搭建的完全獨(dú)立的容器映像倉庫。您可以搭建在自己的服務(wù)器上,也可以托管在第三方云服務(wù)上,例如Amazon ECR,Azure容器注冊,Google容器注冊,Red Hat Quay和JFrog自己的容器注冊服務(wù)。

          私有注冊中心可以讓您獲得更完善的鏡像的管理方式,并且通常提供更高級(jí)的功能,可以幫助確保庫存安全。

          例如:

          • 復(fù)雜的鏡像掃描工具,用于識(shí)別威脅和未修補(bǔ)的漏洞。

          • 嚴(yán)格的治理,例如基于角色的訪問控制(RBAC)和合規(guī)性監(jiān)視。

          • 數(shù)字簽名,鏡像認(rèn)證和其他防篡改功能。

          • 用于開發(fā),測試和生產(chǎn)多環(huán)境的鏡像倉庫。

          相比之下,諸如Docker Hub之類的公共注冊表一般僅提供基本服務(wù)-您必須信任鏡像發(fā)布者,而鏡像發(fā)布者可能未遵循相同的高安全標(biāo)準(zhǔn)。

          這樣,您最終可能會(huì)得到包含惡意或過時(shí)代碼的鏡像,并最終獲得對數(shù)據(jù)泄露敞開大門的容器環(huán)境。

          保持鏡像最小化

          鏡像越大,受到攻擊的可能性越大。對于linux系統(tǒng),您沒有選擇余地,但是對于Docker來說,只選擇自己需要的組件即可。

          選擇最小的基礎(chǔ)鏡像

          Docker hub上的某些鏡像比其他的鏡像更簡化。比如在ubuntu倉庫中,有些鏡像的大小是部分版本的2倍以上。

          所以在您獲取鏡像時(shí),不要單純的只獲取最新版本的鏡像,最理想的是獲取占用空間最小的鏡像,然后自主添加應(yīng)用所需的軟件包和依賴。

          Docker Hub顯示存儲(chǔ)庫中每個(gè)映像的壓縮大小,如下面的Minimal Ubuntu版本所示。

          拉取鏡像后可以使用docker images命令檢查其實(shí)際大小。

          $?docker?images

          然后,如下所示查找剛剛下載的鏡像的條目。

          優(yōu)化Dockerfile和.dockerignore中的鏡像

          接下來,您需要?jiǎng)?chuàng)建一個(gè)Dockerfile來為容器構(gòu)建簡化鏡像。這將由基礎(chǔ)鏡像層和自己的鏡像層組成。添加這些層時(shí),有些制品將不是運(yùn)行時(shí)環(huán)境的必需部分。要排除這些,應(yīng)該在要從中構(gòu)建映像的根目錄中設(shè)置一個(gè).dockerignore文件。

          多階段構(gòu)建

          最后,減小鏡像大小的另一種方法是使用Docker多階段構(gòu)建功能,Docker 17.05及更高版本支持。

          基于這個(gè)能力,Dockerfile中可以使用多個(gè)FROM命令。

          對于每個(gè)新的FROM語句,我們可以使用多個(gè)不同的基礎(chǔ)鏡像。然后我們可以有選擇的將所需的文件復(fù)制到下一階段,多余的各層將被留下。具體示例如下:

          FROM?golang:1.7.3

          WORKDIR?/go/src/github.com/alexellis/href-counter/

          RUN?go?get?-d?-v?golang.org/x/net/html?

          COPY?app.go?.

          RUN?CGO_ENABLED=0?GOOS=linux?go?build?-a?-installsuffix?cgo?-o?app?.



          FROM?alpine:latest?

          RUN?apk?--no-cache?add?ca-certificates

          WORKDIR?/root/

          COPY?--from=0?/go/src/github.com/alexellis/href-counter/app?.

          CMD?["./app"]

          驗(yàn)證鏡像完整性

          改善容器安全狀況的另一種方法是在將鏡像從Docker Hub中拉出之前進(jìn)行驗(yàn)證。

          Docker守護(hù)程序默認(rèn)在不檢查其完整性的情況下拉取Docker映像。但是,隨著Docker Engine 1.8的發(fā)布,該平臺(tái)引入了一項(xiàng)新功能Docker Content Trust,該功能支持鏡像的數(shù)字簽名和身份驗(yàn)證。

          此服務(wù)使您可以向發(fā)布到遠(yuǎn)程倉庫的鏡像添加加密簽名。同時(shí),每當(dāng)您嘗試?yán)$R像時(shí),它都會(huì)自動(dòng)驗(yàn)證數(shù)字簽名。這樣,您可以確定鏡像的所有者的身份是不是與他們聲明的一致。

          要激活Docker Content Trust,您需要使用Linux export命令設(shè)置以下變量。

          $?export???DOCKER_CONTENT_TRUST=1

          這只會(huì)在您當(dāng)前的shell中設(shè)置。如果要全面啟用Docker Content Trust,則需要在所有用戶共享的默認(rèn)環(huán)境變量中進(jìn)行設(shè)置。

          盡管Docker Content Trust無法驗(yàn)證映像的質(zhì)量,但可以通過防止在傳輸過程中受到破壞或通過對存儲(chǔ)庫的未授權(quán)訪問,以此來幫助保持鏡像的清潔。

          文章轉(zhuǎn)自:JFrog杰蛙DevOps

          - End -

          關(guān)注「開源Linux」加星標(biāo),提升IT技能

          瀏覽 76
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线观看女人爽网 | 综合一和综合二图片小说 | 99热这里只有免费精品 | 丁香五月天在线视频 | 大香蕉在线视频欧美 |