镜像签名和验证

本页介绍如何使用 Cosign 验证 Istio 镜像制品的来源。

Cosign 是作为 sigstore 项目的一部分开发的工具。 它简化了已签名的开放容器倡议(OCI)制品(例如容器镜像)的签名和验证。

从 Istio 1.12 开始,我们签署所有正式发布的容器镜像作为我们发布过程的一部分。 然后,最终用户可以使用下面描述的过程来验证这些镜像。

此过程适用于手动执行或与构建/部署管道集成,以自动验证镜像制品。

先决条件

在开始之前,请执行以下操作:

  1. 为您的架构下载最新的 Cosign 构建及其签名。

  2. 验证 cosign 二进制签名:

    1. $ openssl dgst -sha256 \
    2. -verify <(curl -ssL https://raw.githubusercontent.com/sigstore/cosign/main/release/release-cosign.pub) \
    3. -signature <(cat /path/to/cosign.sig | base64 -d) \
    4. /path/to/cosign-binary
  3. 使二进制文件可执行(chmod +x),并移动到 PATH 上的一个位置。

验证镜像

要验证容器镜像,请执行以下操作:

  1. $ ./cosign-binary verify --key "https://istio.io/misc/istio-key.pub" gcr.io/istio-release/pilot:1.16.0

此过程适用于使用 Istio 构建基础设施构建的任何已发布镜像或待发布镜像。

输出示例:

  1. $ cosign verify --key "https://istio.io/misc/istio-key.pub" gcr.io/istio-release/pilot:1.12.0
  2. gcr.io/istio-release/pilot:1.12.0 的验证——对这些签名中的每一个都进行了以下检查:
  3. - 联合署名声明得到验证
  4. - 签名已根据指定的公钥进行验证
  5. - 任何证书都已针对 Fulcio 根进行了验证。
  6. [{"critical":{"identity":{"docker-reference":"gcr.io/istio-release/pilot"},"image":{"docker-manifest-digest":"sha256:c37fd83f6435ca0966d653dc6ac42c9fe5ac11d0d5d719dfe97de84acbf7a32d"},"type":"cosign container image signature"},"optional":null}]