验证 Docker 映像签名上的 Verify Bridge

对 IBM® Container Registry 上的 icr.io/isv-saas/verify-bridge:latest 映像进行了签名,当将该映像拉下到您的机器时,可以使用 SkopeoPodman来验证此签名。

准备工作

你需要公钥。
-----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