8.6. 使用 Fulcio 和 Rekor 验证带有 sigstore 签名的容器镜像


您可以通过在 policy.json 文件中添加 Fulcio 和 Rekor-related 信息来验证镜像签名。验证容器镜像签名确保镜像来自可信源,且没有被篡改或修改。

先决条件

  • container-tools 模块已安装。

流程

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

    docker:
        <registry>:
            use-sigstore-attachments: true
    Copy to Clipboard Toggle word wrap
    • 通过设置 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. /etc/containers/policy.json 文件中添加 fulcio 部分和 rekorPublicKeyPathrekorPublicKeyData 字段:

    {
        ...
        "transports": {
    	"docker": {
            "<registry>/<namespace>": [
                {
                "type": "sigstoreSigned",
                "fulcio": {
                    "caPath": "/path/to/local/CA/file",
                    "oidcIssuer": "https://expected.OIDC.issuer/",
                    "subjectEmail", "expected-signing-user@example.com",
                },
                "rekorPublicKeyPath": "/path/to/local/public/key/file",
                }
            ]
        ...
    	}
      }
      ...
    }
    Copy to Clipboard Toggle word wrap
    • fulcio 部分提供签名是基于 Fulcio 发布的证书。
    • 您必须指定 caPathcaData 字段中的一个,其中包含 Fulcio 实例的 CA 证书。
    • oidcIssuersubjectEmail 都是必需的,准确指定预期的身份提供商,以及获取 Fulcio 证书的用户身份。
    • 您必须指定 rekorPublicKeyPathrekorPublicKeyData 字段之一。
  3. 拉取镜像:

    $ podman pull <registry>/<namespace>/<image>
    Copy to Clipboard Toggle word wrap

podman pull 命令会强制签名存在,而无需额外的选项。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat