跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / 容器指南 / 校验容器映像
适用范围 容器指南

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