8.3. 秘密鍵と Rekor を使用した sigstore 署名によるコンテナーイメージの署名
イメージの完全性を確保し、ソフトウェアサプライチェーンの来歴を認証するために、Red Hat Enterprise Linux (RHEL) 上で、sigstore と秘密鍵、および Rekor を使用してコンテナーイメージに署名できます。このプロセスには、鍵ペアの生成、秘密鍵によるイメージの署名、および透明性ログに Rekor を使用するようにシステムを設定することが含まれます。
前提条件
-
container-toolsメタパッケージがインストールされている。
手順
sigstore の公開鍵または秘密鍵のペアを生成します。
$ skopeo generate-sigstore-key --output-prefix myKey.private公開鍵と秘密鍵
myKey.pubとmyKey.privateが生成されます。以下を
/etc/containers/registries.conf.d/default.yamlファイルに追加します。docker: <registry>: use-sigstore-attachments: trueuse-sigstore-attachmentsオプションを設定することで、Podman と Skopeo はコンテナーの sigstore 署名をイメージと共に読み書きし、署名されたイメージと同じリポジトリーに保存できます。注記/etc/containers/registries.d/ディレクトリー内の任意の YAML ファイルのレジストリーまたはリポジトリー設定セクションを編集できます。単一のスコープ (default-docker、registry、または namespace) は、/etc/containers/registries.d/ディレクトリー内の 1 つのファイルにのみ存在できます。/etc/containers/registries.d/default.yamlファイルでシステム全体のレジストリー設定を編集することもできます。すべての YAML ファイルが読み込まれ、ファイル名は任意であることに注意してください。カレントディレクトリーの
Containerfileを使用して、コンテナーイメージをビルドします。$ podman build -t <registry>/<namespace>/<image>/etc/containers/registries.d/file.ymlファイルを作成します。privateKeyFile: "/home/user/sigstore/myKey.private" privateKeyPassphraseFile: "/mnt/user/sigstore-myKey.private-passphrase" rekorURL: "https://<your-rekor-server>"file.ymlは、sigstore 署名の作成に必要なオプションを保存するために使用される sigstore 署名パラメーター YAML ファイルです。イメージに署名し、レジストリーにプッシュします。
$ podman push --sign-by-sigstore=file.yml <registry>/<namespace>/<image>あるいは、同様の
--sign-by-sigstoreオプションを指定してskopeo copyコマンドを使用して、既存のイメージをコンテナーレジストリー間で移動しながら署名することもできます。警告パブリックサーバーへの送信には、公開鍵に関するデータと署名に関するメタデータが含まれる点に注意してください。
検証
イメージをプルします。
$ podman pull <registry>/<namespace>/<image>先ほど設定した署名の存在を強制するには、
podman pullコマンドを実行する必要があります。設定済みのレジストリーから、署名されていないイメージ、または誤ったキーで署名されたイメージを取得しようとすると、コマンドは失敗します。詳細は、システム上の
podman-push(1)、podman-build(1)、およびcontainer-registries.dの man ページを参照してください。