12.3. 使用 OpenShift CLI 验证镜像签名


您可以使用 oc adm verify-image-signature 命令验证导入到 OpenShift Container Registry 的镜像的签名。此命令通过利用公共 GPG 密钥验证签名本身,验证镜像签名中包含的镜像身份是否可以被信任,然后将所提供的预期身份与给定镜像的身份( pull spec)匹配。

默认情况下,该命令使用位于 $GNUPGHOME/pubring.gpg 中的公共 GPG 密钥环,通常位于路径 ~/.gnupg 中。默认情况下,这个命令不会将验证结果保存到镜像对象。要做到这一点,您必须指定 --save 标志,如下所示。

注意

要验证镜像的签名,用户必须具有 image-auditor 集群角色。集群管理员可使用以下方法添加此项:

$ oc adm policy add-cluster-role-to-user system:image-auditor <user_name>
重要

在已验证的镜像上使用 --save 标志以及无效的 GPG 密钥或无效的预期身份,会导致保存的验证状态并移除所有签名,并且镜像将不再验证。

为了避免错误地删除所有签名,您可以先运行不带 --save 标志的命令,并检查日志中是否有潜在的问题。

要验证镜像签名,请使用以下格式:

$ oc adm verify-image-signature <image> --expected-identity=<pull_spec> [--save] [options]

<pull_spec> 可以通过描述镜像流来找到。<image> 可以通过描述镜像流标签来找到。请参见以下示例命令输出。

镜像签名验证示例

$ oc describe is nodejs -n openshift
Name:             nodejs
Namespace:        openshift
Created:          2 weeks ago
Labels:           <none>
Annotations:      openshift.io/display-name=Node.js
                  openshift.io/image.dockerRepositoryCheck=2017-07-05T18:24:01Z
Docker Pull Spec: 172.30.1.1:5000/openshift/nodejs
...

$ oc describe istag nodejs:latest -n openshift
Image Name:	sha256:2bba968aedb7dd2aafe5fa8c7453f5ac36a0b9639f1bf5b03f95de325238b288
...

$ oc adm verify-image-signature \
    sha256:2bba968aedb7dd2aafe5fa8c7453f5ac36a0b9639f1bf5b03f95de325238b288 \
    --expected-identity 172.30.1.1:5000/openshift/nodejs:latest \
    --public-key /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release \
    --save

注意

如果 oc adm verify-image-signature 命令返回 x509: certificate signed by unknown authority 错误,您可能需要将 registry 的证书颁发机构(CA)添加到系统中信任的 CA 列表中。您可以执行以下步骤来实现:

  1. 将 CA 证书从集群传输到客户端机器。

    例如,要为 docker-registry.default.svc 添加 CA,传输位于 /etc/docker/certs.d/docker-registry.default.svc\:5000/node-client-ca.crt 的文件。

  2. 将 CA 证书复制到 /etc/pki/ca-trust/source/anchors/ 目录中。例如:

    # cp </path_to_file>/node-client-ca.crt \
        /etc/pki/ca-trust/source/anchors/
  3. 执行 update-ca-trust 以更新可信 CA 列表:

    # update-ca-trust
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.