網(wǎng)站建設(shè)高校關(guān)鍵詞排名優(yōu)化公司推薦
文章目錄
- 一、--insecure-registry是什么
- 二、如何使用--insecure-registry
- 三、--insecure-registry的安全風(fēng)險(xiǎn)
- 四、--insecure-registry的替代方案
- 五、總結(jié)
- 參考
一、–insecure-registry是什么
--insecure-registry
是docker中用來設(shè)置與docker registry通信的安全限制的一個(gè)參數(shù),如果設(shè)置為true或1,意味著Docker將會(huì)在與這個(gè)registry通信時(shí)跨過證書問題,不再驗(yàn)證registry的TLS認(rèn)證證書,可以忽略證書錯(cuò)誤,從而繞過Docker安全機(jī)制。
這個(gè)描述很奇怪,https一般是服務(wù)器端開啟的,客戶端必須按照Https訪問。除非docker服務(wù)器端同時(shí)開啟了https、http,然后客戶端默認(rèn)禁用http,而
--insecure-registry
允許本地開啟http
這個(gè)參數(shù)的使用主要是為了方便在開發(fā)過程中迅速測(cè)試鏡像,或者當(dāng)運(yùn)行docker的主機(jī)不具備安全加密能力的時(shí)候,可以選擇打開這個(gè)開關(guān)。
在正式的生產(chǎn)環(huán)境中,一般情況下禁用這個(gè)選項(xiàng),因?yàn)檫@個(gè)選項(xiàng)的打開為我們的系統(tǒng)帶來很大的安全隱患。
二、如何使用–insecure-registry
使用–insecure-registry,我們可以在運(yùn)行docker命令時(shí)添加這個(gè)參數(shù)。
docker run --rm --insecure-registry registry.local:5000 busybox
在上面的命令中,我們通過--insecure-registry
參數(shù)指定了registry的地址為registry.local:5000,這意味著docker將會(huì)忽略registry.local:5000的SSL證書認(rèn)證。
在Docker 1.13.1及之后的版本中,可以使用以下的方式來配置–insecure-registry的默認(rèn)值:
{"insecure-registries" : ["registry.local:5000"]
}
這個(gè)配置文件需要保存為 /etc/docker/daemon.json
。
需要注意的是,在Windows操作系統(tǒng)中,這個(gè)配置文件需要在C:\ProgramData\Docker\config目錄下創(chuàng)建。
記得使用 service docker restart
重啟docker服務(wù)
上述方法只能對(duì)單個(gè)服務(wù)器生效,如果想對(duì)所有的生效,可以使用 “insecure-registries” : [ “0.0.0.0/0” ]
三、–insecure-registry的安全風(fēng)險(xiǎn)
雖然使用--insecure-registry
參數(shù)可以幫助我們快速測(cè)試鏡像,但是打開這個(gè)選項(xiàng)也帶來了很大的安全風(fēng)險(xiǎn)。
當(dāng)我們忽略SSL證書時(shí),意味著所有與該registry通信的數(shù)據(jù)都是明文傳輸,容易受到中間人攻擊。黑客可以通過在通信過程中截取傳輸?shù)臄?shù)據(jù),來獲取敏感信息或者篡改數(shù)據(jù)。
同時(shí),如果registry服務(wù)器本身被黑客攻擊,會(huì)助長黑客利用中間人攻擊的可能性,可以通過域名欺騙等方式進(jìn)行攻擊。
四、–insecure-registry的替代方案
如果我們有必要經(jīng)常使用–insecure-registry,可以選擇使用內(nèi)部CA證書,將證書寫入docker TLS認(rèn)證證書池中,實(shí)現(xiàn)相對(duì)的安全性。這個(gè)過程需要?jiǎng)?chuàng)建自簽名證書來為docker registry簽名。
下面是一個(gè)創(chuàng)建自簽名證書的例子:
openssl genrsa -out key.pem 2048
openssl req -new -key key.pem -out csr.pem
openssl x509 -req -in csr.pem -signkey key.pem -out cert.crt
執(zhí)行完上面的命令,會(huì)生成三個(gè)文件:key.pem、csr.pem、cert.crt,其中cert.crt就是我們創(chuàng)建的自簽名證書。我們將cert.crt拷貝到所有需要訪問registry的docker客戶端主機(jī)上,然后重新啟動(dòng)docker服務(wù)。
當(dāng)我們?cè)谶\(yùn)行docker命令時(shí),可以使用–tlsverify參數(shù)打開docker TLS驗(yàn)證。我們可以將上面生成的key.pem,csr.pem,cert.crt放在服務(wù)器的某個(gè)目錄中,然后使用以下命令啟動(dòng)docker:
docker --tlsverify --tlscacert=/path/to/ca.pem --tlscert=/path/to/cert.pem --tlskey=/path/to/key.pem -H=127.0.0.1:5555 version
通過使用–tlsverify參數(shù),在與registry通信時(shí),Docker將會(huì)驗(yàn)證認(rèn)證證書的有效性,實(shí)現(xiàn)了更高的安全性。
五、總結(jié)
–insecure-registry是Docker中用來臨時(shí)繞過TLS認(rèn)證證書認(rèn)證的參數(shù),可以在開發(fā)、測(cè)試過程中節(jié)省時(shí)間和精力。但是在生產(chǎn)環(huán)境中,為了保證系統(tǒng)的安全性,我們需要關(guān)閉這個(gè)參數(shù)。
如果確實(shí)有必要經(jīng)常使用這個(gè)參數(shù),我們可以選擇使用內(nèi)部CA證書來實(shí)現(xiàn)相對(duì)的安全性。
在使用–insecure-registry時(shí),我們需要時(shí)刻注意安全風(fēng)險(xiǎn),并采取相應(yīng)的防范措施。
參考
–insecure-registry詳解