验证 Docker 镜像签名中的Verify Bridge

PodmanIBM® 上的图像 icr.io/isv-saas/verify-bridge:latest Container Registry 已签名,当您将该图像下载到本地机器后,可通过 Skopeo 或 验证该签名。

准备工作

你需要公钥。
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBGQjSS0BEADBqABkTk0zd3CYmDWlA+NupW8Pn6gWni6xfpARhVZPmBP/DI/u
s+wuaEJVgA9Sf13qlFdd166BCYayFv3V7bbwX2i0sXVqSR6dxkigM+Y700e0VhDC
eGyTnLIwG5z3SEG26Wo0y+3x14tWe0jG7hV01lb2rx+1k9k4pHfA6AOPVtuYEmoC
ZrIstMcTa6hPGft2wJL1tnpB+MRLp1DlnFiaLo9FWFJ1zEELSNAkUw+zJNRrnzpT
C3RGh+I0byqB4EKxa2+P8minLetQVEt9wBc7Yr2BngHWKWAMiWTpZOhu3WhUrWxm
mTdshdvu0xw+HeRMFzARQMddDpmBtrkRhSXCsvNRIaElhZcZXm7UMzW5w/NK7H1w
dyB2HKiGZBcD4gdx2iBSJtMHrlKua0Cvrz7AVabYw7hR29TtmRaH8q4eMp/yRNt3
abZ9SZsEPAxv6Ur33AaqxO7s4z9fWXg51j/YtL3VnXiAsY+MbDxUwsn6vpK6IVPW
lmm/7V2PZDmq0+9OdV6poi2IvYKtozD1/oM5kE5WEDn0p/HL8XPg6GcgVSd+rh+J
Z37AccDjs9UHNBseCkQk1zFrfjP+HWZbb6GzZecMIjThagA2VjxYM+GDlE6AAElf
pdZhI/nZR14csUoOgPVPbHI+HS6KQSs32hhev3X10AnYo6rGTObZx80ArQARAB
tC1JQk0gU2VjdXJpdHkgVmVyaWZ5IEJyaWRnZSA8cHNpcnRAdXMuaWJtLmNvbT6J
AjoEEwEIACQFAmQjSS0CGw8FCwkIBwIGFQoJCAsCBBYCAwECHgEFCQAAAAAACgkQ
AQH8KJX/rscK7BAAlpPIi/Wjqroryw560p6GxvjHRbB/rofIbyled5u7Mw/U74Nl
6x/P8Vytpxx/om5JgbP/OP01iHakeJHHkpgux7bJYqvMRlWlR88H806gVAttaFUU
DKQzchVP1R+/gqaoXpNDmZytapYcsDICX+B2aXo1MshTKoYd8MYOnoKnm69dhqlL
ImzMxZk9bRvmsOrx4XB7+1IdoBA/Hck0xrsQTlQocHy4IQICErnJwgYhoSClcSjG
6Nm6p+BfR4oWwKmj51OyzGr7aywJu3304ZE4Ea1qGWVAoF+FinbVcHuA6mYGA+cf
TsZcqsNaMct7KDnC9lzRQpY6MzghHaCAHqE2oIfp7uSCfNYqtN5GQTC6VBcFALoK
Nxm2+YI6WDpJKx4nkGm4NpPsFFF0meofqWMu/oB4U+lADPhJvmqTNxjdqcc+gjEL
skLnA5dkijownmzwWHQHEPzl00Fdx3LS4v26rT0jE/HCrUIhKNrr82hQ90ELGwas
o5gcMuXd85qO1FzPrBKKZU1Ax2SH6J1TYZ6El5i//qUAHY7vc5M+a64IiyWBEol3
xu68GqEBRQi3ZrCNIxZ0ulhOUcs7G275mKClw4uy+f18i91SlyX1zdZ18W9ENcNf
8QY6g9cU6Gn6SfLNnr0wLAMzFt78ylNQTkfnGqr9egsJiwZGCT7eFNtQ7/s=
=hwfo

-----END PGP PUBLIC KEY BLOCK-----

关于此任务

Red Hat® OpenShift®、 Skopeo 和 Podman 所使用的容器运行时是一个 policy.json 描述签名验证策略的文件。 当策略创建并应用于容器工具( Red Hat OpenShift、 Skopeo 或 Podman )时,该策略会通过验证签名来确保镜像的完整性。 它还可以验证简单签名负载的其他部分。

过程

  1. 登录目标系统。
  2. 创建或更新一个 /etc/containers/policy.json 或类似的文件,例如 ~/policy.json.
    请参阅 Red Hat OpenShift 上的镜像策略文档: podman-image-trust。 如果您拥有来自旧平台和新平台的多个公钥,或者在证书续期后,您可以将这两个 gpg 公钥合并,并在 <public key>. 中使用该文件。
    例如,
    {
        "default": [
            {
                "type":"reject"
            }
        ],
        "transports":
            {
                "docker":
                    {
                        "": [{ "type": "signedBy", "keyType": "GPGKeys", "keyPath": "<path to public keyfile>"}]
                    }
            }
    }
  3. 请使用以下任一命令,指定验证“ Docker ”映像签名的“Verify Bridge”的方法。
    • 要使用 Skopeo 将签名复制到本地临时目录以进行验证,请使用以下命令。
      skopeo copy --policy ~/policy.json docker://icr.io/isv-saas/verify-bridge:latest dir:./temp
    • 若要使用 Skopeo 命令并配合 选项 --policy 将签名复制到本地临时目录以进行验证,请执行以下命令。
      skopeo copy --policy ~/policy.json docker://icr.io/isv-saas/verify-bridge:latest dir:./temp
    • Podman要在拉取过程中使用 验证签名,请执行以下命令。
      podman pull --signature-policy ~/policy.json icr.io/isv-saas/verify-bridge:latest