Red Hat Training
A Red Hat training course is available for RHEL 8
4.3. sigstore 署名を使用したコンテナーイメージの署名
Podman バージョン 4.2 以降では、コンテナー署名の sigstore 形式を使用できます。
前提条件
- 公開鍵と秘密鍵のペアが存在します。
公開鍵と秘密鍵の生成は実装されていません。アップストリームの Cosign プロジェクトを使用して、公開鍵と秘密鍵のペアを生成する必要があります。
cosign ツールをインストールします。
$ git clone 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.conf.d/default.yaml ファイルに追加します:
docker
:<registry>: use-sigstore-attachments: true
use-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 ./cosign.key <registry>/<namespace>/image>
podman push
コマンドは、<registry>/<namespace>/<image>
ローカルイメージを<registry>/<namespace>/<image>
としてリモートレジストリーにプッシュします。--sign-by-sigstore-private-key
オプションは、cosign.key
秘密鍵を使用して sigstore 署名を<registry>/<namespace>/<image>
イメージに追加します。イメージと sigstore 署名がリモートレジストリーにアップロードされます。
既存のイメージをコンテナーレジストリー間で移動するときに署名する必要がある場合は、skopeo copy
コマンドを使用できます。
検証
- 詳細については、sigstore イメージ署名の検証 を参照してください。
関連情報
-
podman-push
の man ページ -
podman-build
の man ページ - Sigstore: ソフトウェアサプライチェーンの信頼とセキュリティーに対するオープンな答え