8.4. GPG 署名を使用したコンテナーイメージへの署名
GPG 署名を使用して Red Hat Enterprise Linux コンテナーイメージに署名することで、信頼性を確立し、ソフトウェアの出所を検証できます。これらの暗号署名を適用することで、イメージが改ざんされないことが保証され、侵害されたアプリケーションの展開からインフラストラクチャーが保護されます。
前提条件
-
container-toolsメタパッケージとGPGツールがインストールされています。 ルックアサイド Web サーバーがセットアップされ、その上でファイルを公開できます。システム全体のレジストリー設定は、
/etc/containers/registries.d/default.yamlファイルで確認できます。lookaside-stagingオプションは、署名を書き込むためのファイルパスを参照し、通常、署名を発行するホストで設定されます。# cat /etc/containers/registries.d/default.yaml
docker:
<registry>:
lookaside: https://registry-lookaside.example.com
lookaside-staging: file:///var/lib/containers/sigstore
手順
GPG キーを生成します。
# gpg --full-gen-key公開鍵をエクスポートします。
# gpg --output <path>/key.gpg --armor --export <username@example.com>カレントディレクトリーにある
Containerfileを使用して、コンテナーイメージをビルドします。$ podman build -t <registry>/<namespace>/<image><registry>、<namespace>、および<image>をコンテナーイメージ識別子に置き換えます。イメージに署名し、レジストリーにプッシュします。
$ podman push \ --sign-by <username@example.com> \ <registry>/<namespace>/<image>注記既存のイメージをコンテナーレジストリー間で移動するときに署名する必要がある場合は、
skopeo copyコマンドを使用できます。オプション: 新しいイメージ署名を表示します。
# (cd /var/lib/containers/sigstore/; find . -type f) ./<image>@sha256=<digest>/signature-1ローカル署名をルックアサイド Web サーバーにコピーします。
# rsync -a /var/lib/containers/sigstore <user@registry-lookaside.example.com>:/registry-lookaside/webroot/sigstore署名は、
lookaside-stagingオプションによって決定される場所 (この場合は/var/lib/containers/sigstoreディレクトリー) に保存されます。
検証
イメージをプルします。
$ podman pull <registry>/<namespace>/<image>設定したとおりに署名の存在を強制するには、
podman pullコマンドを実行する必要があります。設定済みのレジストリーから、署名されていないイメージ、または誤ったキーで署名されたイメージを取得しようとすると、コマンドは失敗します。詳細は、お使いのシステムの
podman-image-trust(1)、podman-push(1)、およびpodman-build(1) のman ページを参照してください。