8.3. 秘密鍵を使用した sigstore 署名によるコンテナーイメージの署名
Podman バージョン 4.2 以降では、コンテナー署名の sigstore 形式を使用できます。
前提条件
-
container-toolsモジュールがインストールされている。
手順
sigstore 公開鍵/秘密鍵ペアを生成します。
$ skopeo generate-sigstore-key --output-prefix myKey公開鍵と秘密鍵
myKey.pubとmyKey.privateが生成されます。注記skopeo generate-sigstore-keyコマンドは、RHEL 8.8 から利用できます。それ以外の場合は、アップストリームの Cosign プロジェクトを使用して、公開鍵と秘密鍵のペアを生成する必要があります。cosign ツールをインストールします。
$ git clone -b v2.0.0 https://github.com/sigstore/cosign $ cd cosign $ make ./cosign公開鍵/秘密鍵のペアを生成します。
$ ./cosign generate-key-pair ... Private key written to cosign.key Public key written to cosign.pub
次の内容を
/etc/containers/registries.d/default.yamlファイルに追加します。docker: <registry>: use-sigstore-attachments: trueuse-sigstore-attachmentsオプションを設定することで、Podman と Skopeo はコンテナーの sigstore 署名をイメージと共に読み書きし、署名されたイメージと同じリポジトリーに保存できます。注記/etc/containers/registries.d/default.yamlファイルで、システム全体のレジストリー設定を編集できます。/etc/containers/registries.dディレクトリーにある任意の YAML ファイルのレジストリーまたはリポジトリー設定セクションを編集することもできます。すべての YAML ファイルが読み取られ、ファイル名は任意です。単一のスコープ (default-docker、レジストリー、または名前空間) は、/etc/containers/registries.dディレクトリー内の 1 つのファイルにのみ存在できます。現在のディレクトリーで
Containerfileを使用してコンテナーイメージをビルドします。$ podman build -t <registry>/<namespace>/<image>イメージに署名し、レジストリーにプッシュします。
$ podman push --sign-by-sigstore-private-key ./myKey.private <registry>/<namespace>/image>podman pushコマンドは、<registry>/<namespace>/<image>ローカルイメージを<registry>/<namespace>/<image>としてリモートレジストリーにプッシュします。--sign-by-sigstore-private-keyオプションは、myKey.private秘密鍵を使用して sigstore 署名を<registry>/<namespace>/<image>イメージに追加します。イメージと sigstore 署名がリモートレジストリーにアップロードされます。
既存のイメージをコンテナーレジストリー間で移動するときに署名する必要がある場合は、skopeo copy コマンドを使用できます。
検証
- 詳細は、公開鍵を使用した sigstore イメージ署名の検証 を参照してください。