Files
2022-07-13 21:54:30 +08:00

4.5 KiB

title, content_type, min-kubernetes-server-version
title content_type min-kubernetes-server-version
验证已签名容器镜像 task v1.24

{{< feature-state state="alpha" for_k8s_version="v1.24" >}}

{{% heading "prerequisites" %}}

这些说明适用于 Kubernetes {{< skew currentVersion >}}。如果你想要检查其他版本的 Kubernetes 组件的完整性, 请查看对应 Kubernetes 版本的文档。

你需要安装以下工具:

  • cosign (安装指南)
  • curl (通常由你的操作系统提供)

验证镜像签名

完整的镜像签名列表请参见发行版本

我们从这个列表中选择一个镜像,并使用 cosign verify 命令来验证它的签名:

COSIGN_EXPERIMENTAL=1 cosign verify k8s.gcr.io/kube-apiserver-amd64:v1.24.0

{{< note >}}

COSIGN_EXPERIMENTAL=1 用于对以 KEYLESS 模式签名的镜像进行验证。想要进一步了解 KEYLESS,请参考 Keyless Signatures。 {{< /note >}}

验证所有控制平面组件镜像

验证所有已签名的控制平面组件镜像,请运行以下命令:

curl -Ls https://sbom.k8s.io/$(curl -Ls https://dl.k8s.io/release/latest.txt)/release | grep 'PackageName: k8s.gcr.io/' | awk '{print $2}' > images.txt
input=images.txt
while IFS= read -r image
do
  COSIGN_EXPERIMENTAL=1 cosign verify "$image"
done < "$input"

当你完成某个镜像的验证时,可以在你的 Pod 清单通过摘要值来指定该镜像,例如: registry-url/image-name@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

要了解更多信息,请参考镜像拉取策略章节。

使用准入控制器验证镜像签名

有一些非控制平面镜像 (例如 conformance 镜像), 也可以在部署时使用 cosigned 控制器验证其签名。如要使用 cosigned,下面是一些有帮助的资源: