Red Hat Training

A Red Hat training course is available for RHEL 8

8.6. Fulcio と Rekor を使用した sigstore 署名を持つコンテナーイメージの検証

Fulcio および Rekor 関連の情報を policy.json ファイルに追加することで、イメージの署名を検証できます。コンテナーイメージの署名を検証すると、イメージが信頼できるソースからのものであり、改ざんまたは変更されていないことが保証されます。

前提条件

  • container-tools モジュールがインストールされている。

手順

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

  2. /etc/containers/policy.json ファイルに fulcio セクションと rekorPublicKeyPath フィールドまたは rekorPublicKeyData フィールドを追加します。

    {
        ...
        "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",
                }
            ]
        ...
    	}
      }
      ...
    }
    • fulcio セクションでは、署名が Fulcio 発行の証明書に基づいていることが規定されています。
    • Fulcio インスタンスの CA 証明書を含む caPath フィールドと caData フィールドのいずれかを指定する必要があります。
    • oidcIssuersubjectEmail は両方とも必須であり、予期される ID プロバイダー、および Fulcio 証明書を取得するユーザーの ID を正確に指定します。
    • rekorPublicKeyPath フィールドと rekorPublicKeyData フィールドのいずれかを指定する必要があります。
  3. イメージをプルします:

    $ podman pull <registry>/<namespace>/<image>

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

関連情報

  • policy.json man ページ
  • container-registries.d man ページ