?
This document uses PHP Chinese website manual Release
通過使用密鑰來管理圖像標(biāo)簽的信任。Docker的內(nèi)容信任使用五種不同類型的密鑰:
鍵 | 描述 |
---|---|
根密鑰 | 圖像標(biāo)簽的內(nèi)容信任根。啟用內(nèi)容信任后,您將創(chuàng)建一次根密鑰。也稱為脫機(jī)密鑰,因?yàn)樗鼞?yīng)該保持脫機(jī)狀態(tài)。 |
目標(biāo) | 此密鑰允許您簽署圖像標(biāo)記,以管理委托,包括委托密鑰或允許的委派路徑。也稱為存儲庫密鑰,因?yàn)榇嗣荑€確定可以將哪些標(biāo)簽簽入圖像存儲庫。 |
快照 | 這個鍵標(biāo)記當(dāng)前的圖像標(biāo)簽集合,防止混合和匹配攻擊。 |
時間戳 | 此密鑰允許Docker映像存儲庫具有新鮮度安全保證,而無需在客戶端定期刷新內(nèi)容。 |
委托鍵 | 授權(quán)密鑰是可選的標(biāo)簽密鑰,允許您將簽名圖像標(biāo)簽委托給其他發(fā)布者,而無需共享目標(biāo)密鑰。 |
當(dāng)做一個docker push
在第一次啟用內(nèi)容信任之后,將自動為映像存儲庫生成根、目標(biāo)、快照和時間戳鍵:
根鍵和目標(biāo)鍵是本地客戶端生成和存儲的.
時間戳和快照鍵安全地生成并存儲在部署在Docker注冊表旁邊的簽名服務(wù)器中。這些密鑰是在后端服務(wù)中生成的,該后端服務(wù)不直接暴露在互聯(lián)網(wǎng)上,而是在休息時加密。
授權(quán)密鑰是可選的,不是作為正常docker
工作流程的一部分生成的。他們需要手動生成并添加到存儲庫。
注意:在Docker Engine 1.11之前,快照鍵也是在客戶端本地生成和存儲的。使用公證卡CLI再次本地管理您的快照密鑰,以獲取使用較新版本的Docker創(chuàng)建的存儲庫。
您為根密鑰和存儲庫密鑰選擇的密碼應(yīng)該隨機(jī)生成并存儲在密碼管理器中。使用存儲庫密鑰允許用戶在存儲庫上簽名圖像標(biāo)簽。密碼短語用于加密您的密鑰,并確保丟失的筆記本電腦或意外備份不會使密鑰材料處于危險之中。
所有Docker信任密鑰都使用您在創(chuàng)建時提供的密碼進(jìn)行加密存儲。即使如此,您仍應(yīng)該照顧您備份它們的位置。好的做法是創(chuàng)建兩個加密的USB密鑰。
將鑰匙備份到安全,安全的位置非常重要。存儲庫密鑰的丟失是可恢復(fù)的,而根鍵的損失卻不是。
Docker客戶端將密鑰存儲在~/.docker/trust/private
目錄中。在備份之前,您應(yīng)該將tar
歸檔:
$ umask 077; tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private; umask 022
Docker Content Trust可以使用Yubikey 4的根密鑰進(jìn)行存儲和簽名。Yubikey優(yōu)先于存儲在文件系統(tǒng)中的密鑰。當(dāng)您使用內(nèi)容信任初始化新的存儲庫時,Docker Engine會在本地查找根密鑰。如果沒有找到密鑰并且存在Yubikey 4,則Docker Engine將在Yubikey 4中創(chuàng)建一個根密鑰。請參閱公證文檔以獲取更多詳細(xì)信息。
在Docker Engine 1.11之前,這一特性只出現(xiàn)在實(shí)驗(yàn)分支中。
如果發(fā)行商丟失密鑰,這意味著您無法為您的存儲庫簽署可信內(nèi)容。如果丟失密鑰,請聯(lián)系Docker Support(support@docker.com)以重置存儲庫狀態(tài)。
這種損失還需要每個在損失之前拉動標(biāo)簽圖像的消費(fèi)者進(jìn)行手動干預(yù)。圖片使用者會收到他們已經(jīng)下載的內(nèi)容的錯誤訊息:
Warning: potential malicious behavior - trust data has insufficient signatures for remote repository docker.io/my/image: valid signatures did not meet threshold
要糾正這一點(diǎn),他們需要下載一個新的圖像標(biāo)記,該標(biāo)記是用新鍵簽名的。
碼頭的內(nèi)容信任
內(nèi)容信任的自動化
內(nèi)容信任授權(quán)
在內(nèi)容信任沙箱中播放