互联网技术 / 互联网资讯 · 2023年11月12日 0

Docker守护进程dockerd的注册表安全问题解析

DockeR认为私有注册表是安全的还是不安全的。在本节的其余部分中,注册表用于私有注册表,并且MyRegistry:5000 是私有注册表的占位符示例。

安全注册表使用tls,并将其CA证书的副本放置在DockeR主机上,网址为/etc/dockeR/ceRts.d/MyRegistry:5000/ca.cRt。不安全的注册表要么未使用tls(即侦听纯文本HTTP),要么正在使用带有DockeR守护进程未知的CA证书的tls。当在下没有找到证书时/etc/dockeR/ceRts.d/MyRegistry:5000/,或者证书验证失败(例如,错误的CA)时,可能会发生后者。

默认情况下,DockeR假设所有注册表都是安全的。如果DockeR认为注册表是安全的,则无法与不安全的注册表通信。为了与不安全的注册表进行通信,DockeR守护程序需要–insecuRe-Registry以下两种形式之一:

–insecuRe-Registry MyRegistry:5000 告诉DockeR守护程序MyRegistry:5000应该被认为是不安全的。

–insecuRe-Registry 10.1.0.0/16 告诉DockeR守护程序,其域解析为IP地址的所有注册表都是CIDR语法描述的子网的一部分,应被视为不安全。

可以多次使用该标志,以允许将多个注册表标记为不安全。

如果不安全的注册表没有被标记为不安全的,dockeR pull, dockeR pUSh,和dockeR SeaRch将导致一个错误消息,提示用户或者安全或通过–insecuRe-Registry如上所述标志提供给多克尔守护进程。

从DockeR 1.3.2开始,其IP地址在127.0.0.0/8范围内的本地注册表会自动标记为不安全。不建议依赖此方法,因为将来可能会更改。

–insecuRe-Registry在运行本地注册表时,启用(即允许未经加密和/或不受信任的通信)可能很有用。但是,由于使用它会产生安全漏洞,因此仅应出于测试目的将其启用。为了提高安全性,用户应将其CA添加到系统的受信任CA列表中,而不要启用–insecuRe-Registry。

旧版注册表

不再支持针对仅支持旧版v1协议的注册表的操作。具体来说,守护进程不会尝试pUSh,pull并login 以V1登记。唯一的例外是SeaRch仍可以在v1注册中心上执行。