8.2. Fulcio と Rekor を使用した sigstore 署名によるコンテナーイメージの署名
Fulcio および Rekor サーバーを使用すると、秘密鍵を手動で管理する代わりに、OpenID Connect (OIDC) サーバー認証に基づく短期証明書を使用して署名を作成できます。
前提条件
-
container-toolsメタパッケージがインストールされている。 - Fulcio (https://<your-fulcio-server>) サーバーと Rekor (https://<your-rekor-server>) サーバーが実行および設定されている。
- Podman がインストールされている。
手順
次の内容を
/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 ファイルが読み込まれ、ファイル名は任意であることに注意してください。/etc/containers/registries.d/file.ymlファイルを作成します。fulcio: fulcioURL: "https://<your-fulcio-server>" oidcMode: "interactive" oidcIssuerURL: "https://<your-OIDC-provider>" oidcClientID: "sigstore" 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コマンドを使用して、既存のイメージをコンテナーレジストリー間で移動しながら署名することもできます。警告パブリックサーバーへの送信には、公開鍵、証明書、および署名メタデータが含まれる点に注意してください。
詳細は、システム上の
containers-sigstore-signing-params.yaml、podman-push(1)、およびcontainer-registries.dの man ページを参照してください。
検証
イメージをプルします。
$ podman pull <registry>/<namespace>/<image>先ほど設定した署名の存在を強制するには、
podman pullコマンドを実行する必要があります。設定済みのレジストリーから、署名されていないイメージ、または誤ったキーで署名されたイメージを取得しようとすると、コマンドは失敗します。