一、–insecure-registry是什么
--insecure-registry
是docker中用來設置與docker registry通信的安全限制的一個參數(shù),如果設置為true或1,意味著Docker將會在與這個registry通信時跨過證書問題,不再驗證registry的TLS認證證書,可以忽略證書錯誤,從而繞過Docker安全機制。
這個描述很奇怪,一般由服務端決定以什么方式訪問,https是服務器端開啟的,客戶端必須按照Https訪問。應該docker服務器端同時開啟了https、http,然后客戶端默認禁用http,而
--insecure-registry
是client參數(shù),允許本地開啟http訪問
這個參數(shù)的使用主要是為了方便在開發(fā)過程中迅速測試鏡像,或者當運行docker的主機不具備安全加密能力的時候,可以選擇打開這個開關。
在正式的生產(chǎn)環(huán)境中,一般情況下禁用這個選項,因為這個選項的打開為我們的系統(tǒng)帶來很大的安全隱患。
二、如何使用–insecure-registry
使用--insecure-registry
,我們可以在運行docker命令時添加這個參數(shù)。
docker run --rm --insecure-registry registry.local:5000 busybox
在上面的命令中,我們通過--insecure-registry
參數(shù)指定了registry的地址為registry.local:5000,這意味著docker將會忽略registry.local:5000的SSL證書認證。
上述格式在新版本中可能已經(jīng)不支持,通過docker run --help,未看到上述參數(shù)
在Docker 1.13.1及之后的新版本
中,可以使用以下的方式來配置 --insecure-registry 的默認值:
{
"insecure-registries" : ["registry.local:5000"]
}
這個配置文件需要保存為 /etc/docker/daemon.json
。
需要注意的是,在Windows操作系統(tǒng)中,這個配置文件需要在C:\ProgramData\Docker\config目錄下創(chuàng)建。
配置完后記得使用
service docker restart
重啟docker服務
上述方法只能對單個服務器生效,如果想對所有的生效,可以使用 ”insecure-registries“ : [ “0.0.0.0/0“ ]
三、–insecure-registry的安全風險
雖然使用--insecure-registry
參數(shù)可以幫助我們快速測試鏡像,但是打開這個選項也帶來了很大的安全風險。
當我們忽略SSL證書時,意味著所有與該registry通信的數(shù)據(jù)都是明文傳輸,容易受到中間人攻擊。黑客可以通過在通信過程中截取傳輸?shù)臄?shù)據(jù),來獲取敏感信息或者篡改數(shù)據(jù)。
同時,如果registry服務器本身被黑客攻擊,會助長黑客利用中間人攻擊的可能性,可以通過域名欺騙等方式進行攻擊。
四、–insecure-registry的替代方案
如果我們有必要經(jīng)常使用–insecure-registry,可以選擇使用內(nèi)部CA證書,將證書寫入docker TLS認證證書池中,實現(xiàn)相對的安全性。這個過程需要創(chuàng)建自簽名證書來為docker registry簽名。
下面是一個創(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í)行完上面的命令,會生成三個文件:key.pem、csr.pem、cert.crt,其中cert.crt就是我們創(chuàng)建的自簽名證書。我們將cert.crt拷貝到所有需要訪問registry的docker客戶端主機上,然后重新啟動docker服務。
當我們在運行docker命令時,可以使用–tlsverify參數(shù)打開docker TLS驗證。我們可以將上面生成的key.pem,csr.pem,cert.crt放在服務器的某個目錄中,然后使用以下命令啟動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通信時,Docker將會驗證認證證書的有效性,實現(xiàn)了更高的安全性。
五、總結
–insecure-registry是Docker中用來臨時繞過TLS認證證書認證的參數(shù),可以在開發(fā)、測試過程中節(jié)省時間和精力。但是在生產(chǎn)環(huán)境中,為了保證系統(tǒng)的安全性,我們需要關閉這個參數(shù)。
如果確實有必要經(jīng)常使用這個參數(shù),我們可以選擇使用內(nèi)部CA證書來實現(xiàn)相對的安全性。
在使用–insecure-registry時,我們需要時刻注意安全風險,并采取相應的防范措施。文章來源:http://www.zghlxwxcb.cn/news/detail-763881.html
參考
–insecure-registry詳解文章來源地址http://www.zghlxwxcb.cn/news/detail-763881.html
到了這里,關于【k8s】--insecure-registry詳解 ( 訪問倉庫、https、http)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!