容器安全保障:签名验证、内核能力定制与SELinux策略
1. 容器镜像签名验证
在容器安全领域,镜像签名验证是至关重要的一环。当使用提供的公钥进行签名验证后,镜像可以成功拉取到本地存储。下面我们来测试签名验证失败的情况。
1.1 签名存储不可用的情况
若使签名存储(sigstore)不可用,Podman在无法验证签名时是否还能成功拉取镜像呢?我们可以通过停止暴露签名存储的本地httpd服务器来进行测试:
# podman stop sigstore_server
为避免误判,在再次拉取镜像前,需移除之前缓存的镜像:
$ podman rmi localhost:5000/custom_httpd
接着再次尝试拉取镜像:
$ podman pull --tls-verify=false localhost:5000/custom_httpd
此时会出现一系列错误信息,表明Podman尝试连接暴露签名存储的Web服务器失败,这一错误阻止了整个镜像拉取过程。
1.2 公钥无效的情况
当用于验证签名的公钥无效或不属于用于签署镜像的密钥对时,会出现不同的错误。我们可以用另一个密钥对的公钥(如Fedora 34 RPM - GPG公钥)替换当前公钥进行测试: