在 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 身份验证。
-
要创建 GnuPG 身份,请运行以下命令。
gpg --generate-key
-
使用 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
命令。