适用范围 容器指南
9 校验容器映像 #
校验容器映像可以确认其来源,从而确保供应链的安全性。本章提供有关为容器映像签名和校验容器映像的信息。
9.1 使用 Docker 校验 SLE BCI #
通过 SUSE 注册表提供的映像签名存储在 Notary 中。您可以使用以下命令校验特定映像的签名:
docker trust inspect --pretty registry.suse.com/suse/IMAGE:TAG
例如,命令 docker trust inspect --pretty
registry.suse.com/suse/sle15:latest
校验最新 SLE15 基本映像的签名。
要在提取映像时自动验证该映像,请将环境变量 DOCKER_CONTENT_TRUST
设置为 1
。例如:
env DOCKER_CONTENT_TRUST=1 docker pull registry.suse.com/suse/sle15:latest
9.2 使用 Cosign 校验 SLE BCI #
要校验 SLE BCI 映像,请在容器中运行 Cosign。以下命令从 SUSE 服务器提取签名密钥,并使用它来校验最新的 BCI 基本容器映像。
> podman run --rm -it gcr.io/projectsigstore/cosign verify \ --key https://ftp.suse.com/pub/projects/security/keys/container–key.pem \ registry.suse.com/bci/bci-base:latest | tail -1 | jq [ { "critical": { "identity": { "docker-reference": "registry.suse.com/bci/bci-base" }, "image": { "docker-manifest-digest": "sha256:52a828600279746ef669cf02a599660cd53faf4b2430a6b211d593c3add047f5" }, "type": "cosign container image signature" }, "optional": { "creator": "OBS" } } ]
签名密钥可用于校验所有 SLE BCI 容器映像。SUSE Linux Enterprise 15 随附了签名密钥(/usr/share/container-keys/suse-container-key.pem
文件)。
您还可以对照不可变防篡改帐本 rekor 检查 SLE BCI 容器映像。例如:
> podman run --rm -it -e COSIGN_EXPERIMENTAL=1 gcr.io/projectsigstore/cosign \ verify --key https://ftp.suse.com/pub/projects/security/keys/container–key.pem \ registry.suse.com/bci/bci-base:latest | tail -1 | jq [ { "critical": { "identity": { "docker-reference": "registry.suse.com/bci/bci-base" }, "image": { "docker-manifest-digest": "sha256:52a828600279746ef669cf02a599660cd53faf4b2430a6b211d593c3add047f5" }, "type": "cosign container image signature" }, "optional": { "creator": "OBS" } } ]
如果校验失败,则 cosign verify
命令的输出如下所示。
Error: no matching signatures: crypto/rsa: verification error main.go:62: error during command execution: no matching signatures: crypto/rsa: verification error