Red Hat Training

A Red Hat training course is available for RHEL 8

8.5. 使用 Fulcio 和 Rekor ,用 sigstore 签名签名容器镜像

有了 Fulcio 和 Rekor 服务器,您现在可以根据 OpenID Connect (OIDC)服务器身份验证使用短期证书来创建签名,而不是手动管理私钥。

先决条件

  • container-tools 模块已安装。
  • 您有 Fulcio (https:// <your-fulcio-server>)和 Rekor (https://<your-rekor-server>)服务器正在运行,且已配置。
  • Podman v4.4 或更高版本已安装。

流程

  1. /etc/containers/registries.conf.d/default.yaml 文件中添加以下内容:

    docker:
        <registry>:
            use-sigstore-attachments: true
    • 通过设置 use-sigstore-attachments 选项,Podman 和 Skopeo 可以将容器 sigstore 签名与镜像一起读写,并将它们保存在与签名镜像相同的存储库中。

      注意

      您可以编辑 /etc/containers/registries.d 目录中任何 YAML 文件中的 registry 或 repository 配置部分。单个范围 (default-docker、注册中心或命名空间) 只能存在于 /etc/containers/registries.d 目录中的一个文件中。您还可以在 /etc/containers/registries.d/default.yaml 文件中编辑系统范围的 registry 配置。请注意,所有 YAML 文件都是可读的,文件名是任意的。

  2. 创建 file.yml 文件:

    fulcio:
      fulcioURL: "https://<your-fulcio-server>"
      oidcMode: "interactive"
      oidcIssuerURL: "https://<your-OIDC-provider>"
      oidcClientID: "sigstore"
    rekorURL: "https://<your-rekor-server>"
    • file.yml 是 sigstore 签名参数 YAML 文件,其用于存储创建 sigstore 签名所需的选项。
  3. 为镜像签名并将其推送到注册中心:

    $ podman push --sign-by-sigstore=file.yml <registry>/<namespace>/<image>
    • 您还可以使用带有类似 --sign-by-sigstore 选项的 skopeo copy 命令来为现有镜像签名,同时将它们在多个容器注册中心之间移动。
警告

请注意,您对公共服务器提交包含有关公钥和证书的数据,以及有关签名的元数据。

其它资源

  • containers-sigstore-signing-params.yaml man page
  • podman-push 手册页
  • container-registries.d 手册页