IBM Cloud Docs
在 Container Registry

在 Container Registry

IBM Cloud® Container Registry 提供可信内容技术,以便您可以对映像签名,以确保注册表名称空间中映像的完整性。

通过拉出和推送签名的映像,可以验证映像是否由正确的参与方(例如,连续集成 (CI) 工具)推送。

您可以使用 Red Hat® 签名来为图片签名。

使用 Red Hat 签名对图像进行签名

您可以使用各种工具为图片创建 Red Hat 签名。 您可以使用 Red Hat 签名扩展 API 为可信内容存储签名图片,IBM Cloud Container Registry 支持该 API。

您可以使用以下工具创建 Red Hat 签名:

使用 Skopeo 签署图像

要使用 Skopeo 来签署图像,你必须创建一个私有的 GNU Privacy Guard(GnuPG 或 GPG) 身份,然后运行 skopeo 命令。

下面的示例不包括 Skopeo 身份验证。

  1. 要创建 GnuPG 身份,请运行以下命令。

    gpg --generate-key
    
  2. 使用 GnuPG 身份对图像进行签名,同时推送和签名图像。 其中 YOUR_EMAIL 是您注册 GnuPG, 时使用的电子邮件地址,REPOSITORY:TAG 是您的版本库和标记,IMAGE 是您的图像名称,格式为 <region><namespace><repository>:<tag>,其中 <region> 是您的区域名称,<namespace> 是您的命名空间名称,<repository>:<tag> 是您的版本库和标记。

    要查找映像的名称,请运行 ibmcloud cr image-list。 将“存储处”列 (repository) 和 “标签”列 (tag) 的内容用冒号 (:) 分隔,创建格式为 <repository>:<tag> 的图像名称。 如果 list images 命令超时,请参阅 为什么在我列出图像时会发生超时? 以获取帮助。

    skopeo --insecure-policy copy --sign-by YOUR_EMAIL docker-daemon:REPOSITORY:TAG docker://IMAGE
    

    例如,YOUR_EMAIL 是您的 GnuPG 电子邮件地址 (user@email.com),bluebird:build1 是您的存储库和标记,us.icr.io/birds/bluebird:build1 是您的图片名称。

    skopeo --insecure-policy copy --sign-by user@email.com docker-daemon:bluebird:build1 docker://us.icr.io/birds/bluebird:build1
    

    macOS 在 上,如果出现错误,请使用 选项运行命令,覆盖注册表配置的内部默认值,以便使用正确的签名存储。macOS, Error copying image to the remote destination: Error writing signatures: mkdir /var/lib/containers/sigstore: permission denied --registries.d

    skopeo --registries.d . --insecure-policy copy --sign-by user@email.com docker-daemon:us.icr.io/birds/bluebird:build1 docker://us.icr.io/birds/bluebird:build1
    

LinuxmacOS 在 和 上,工具的默认配置是在本地存储签名。Linux® macOS, 在本地存储签名可能会导致签名验证失败,因为签名不在注册表中。 要解决这个问题,可以修改或删除配置文件。 在 Linux® 上,配置保存在 /etc/containers/registries.d/default.yaml 中。 在 macOS, 上,配置文件保存在 /usr/local/etc/containers/registries.d/default.yaml 中。 在 macOS, 上,当使用 Homebrew 软件包管理器安装 Skopeo 时,配置文件可能位于 /opt/homebrew/Cellar/etc/containers/registries.d/default.yaml ( Apple silicon )或 /usr/local/Cellar/etc/containers/registries.d/default.yaml (Intel)。

使用 Podman 签署图像

您可以使用 Podman 签署图像。 更多信息,请参见 Podman.

使用 Red Hat OpenShift CLI 签名图像

您可以使用 Red Hat OpenShift CLI 签署您的图像。 更多信息,请参阅 Red Hat OpenShift CLI。 Red Hat® OpenShift® CLI 使用 oc 命令。