8.2. GPG イメージ署名の検証

次の手順を使用して、コンテナーイメージが GPG キーで正しく署名されていることを確認できます。

前提条件

  • container-tools メタパッケージがインストールされている。
  • 署名読み取り用の Web サーバーがセットアップされ、その上でファイルを公開できます。

    • システム全体のレジストリー設定は、/etc/containers/registries.d/default.yaml ファイルで確認できます。lookaside オプションは、署名読み取り用の Web サーバーを参照します。署名を検証するには、lookaside オプションを設定する必要があります。

      # cat /etc/containers/registries.d/default.yaml
      docker:
          <registry>:
              lookaside: https://registry-lookaside.example.com
              lookaside-staging: file:///var/lib/containers/sigstore
      ...

手順

  1. <registry> の信頼範囲を更新します。

    $ podman image trust set -f <path>/key.gpg <registry>/<namespace>
  2. オプション: /etc/containers/policy.json ファイルを表示して、信頼ポリシーの設定を確認します。

    $ cat /etc/containers/policy.json
    {
      ...
      "transports": {
        "docker": {
          "<registry>/<namespace>": [
            {
              "type": "signedBy",
              "keyType": "GPGKeys",
              "keyPath": "<path>/key.gpg"
            }
          ]
        }
      }
    }
    注記

    通常、/etc/containers.policy.json ファイルは、同じキーが使用される組織のレベルで設定されます。たとえば、公開レジストリーの場合は <registry>/<namespace>、単一企業専用レジストリーの場合は単に <registry> です。

  3. イメージをプルします:

    # podman pull <registry>/<namespace>/<image>
    ...
    Storing signatures
    e7d92cdc71feacf90708cb59182d0df1b911f8ae022d29e8e95d75ca6a99776a

    podman pull コマンドは、設定どおりに署名の存在を強制します。追加のオプションは必要ありません。

注記

/etc/containers/registries.d/default.yaml ファイルで、システム全体のレジストリー設定を編集できます。/etc/containers/registries.d ディレクトリーにある任意の YAML ファイルのレジストリーまたはリポジトリー設定セクションを編集することもできます。すべての YAML ファイルが読み取られ、ファイル名は任意です。単一のスコープ (default-docker、レジストリー、または名前空間) は、/etc/containers/registries.d ディレクトリー内の 1 つのファイルにのみ存在できます。

重要

/etc/containers/registries.d/default.yaml ファイルのシステム全体のレジストリー設定により、公開された署名にアクセスできます。sigstore および sigstore-staging オプションは非推奨になりました。これらのオプションは署名ストレージを参照しており、sigstore 署名形式には関連付けられていません。代わりに、新しい同等の lookaside および lookaside-staging オプションを使用してください。

関連情報

  • podman-image-trust の man ページ
  • podman-pull の man ページ