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 ページを参照してください。