7.4. サプライチェーンセキュリティーのためのコンテナー署名を検証する
sigstore 署名方法を使用することで、サプライチェーンのセキュリティーを強化できます。
sigstore サポートはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
7.4.1. sigstore を使用してコンテナー署名を検証する方法 リンクのコピーリンクがクリップボードにコピーされました!
sigstore 署名方法を使用してイメージの整合性を検証するように、コンテナーランタイムを設定できます。MicroShift コンテナーランタイムを設定すると、イメージの整合性を検証できます。sigstore プロジェクトを使用すると、開発者はビルドした成果物にデジタル署名を追加できます。これにより、ソフトウェアのソースまで追跡できる、より安全な保管の連鎖を構築できます。その後、管理者は署名を検証し、大規模なワークフローを監視できます。sigstore を使用すると、ビルドイメージと同じレジストリーに署名を保存できます。
- ユーザー固有のイメージの場合は、適切な公開鍵を指すように設定ファイルを更新するか、それらのイメージソースの署名検証を無効にする必要があります。
非接続設定またはオフライン設定の場合、公開鍵の内容をオペレーティングシステムイメージに埋め込む必要があります。
7.4.2. sigstore を使用してコンテナー署名を検証する リンクのコピーリンクがクリップボードにコピーされました!
コンテナーランタイムで sigstore を使用するように設定して、MicroShift のコンテナー署名を検証します。コンテナー署名の検証では、イメージへの署名時に Red Hat キーペアの公開鍵が使用されます。sigstore を使用するには、コンテナーランタイムパッケージの一部としてインストールされているデフォルトの /etc/containers/policy.json
ファイルを編集します。
Red Hat 公開鍵には次のリンクからアクセスできます。
MicroShift コンテナーの署名検証には、リリースキー 3 を使用する必要があります。
前提条件
- MicroShift ホストへの管理者アクセス権がある。
- MicroShift をインストールしている。
手順
関連する公開鍵をダウンロードし、次のコマンドを実行して
/etc/containers/RedHat_ReleaseKey3.pub
として保存します。sudo curl -sL https://access.redhat.com/security/data/63405576.txt -o /etc/containers/RedHat_ReleaseKey3.pub
$ sudo curl -sL https://access.redhat.com/security/data/63405576.txt -o /etc/containers/RedHat_ReleaseKey3.pub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat ソースからのイメージを検証するようにコンテナーランタイムを設定するには、
/etc/containers/policy.json
ファイルを編集して次の設定を追加します。ポリシー JSON ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/containers/registries.d/registry.redhat.io.yaml`
ファイルを編集して次の設定を追加し、イメージをローカルストレージにプルするときに sigstore アタッチメントを使用するように Red Hat リモートレジストリーを設定します。cat /etc/containers/registries.d/registry.redhat.io.yaml docker: registry.redhat.io: use-sigstore-attachments: true
$ cat /etc/containers/registries.d/registry.redhat.io.yaml docker: registry.redhat.io: use-sigstore-attachments: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/containers/registries.d/registry.quay.io.yaml
ファイルを編集して次の設定を追加し、イメージをローカルストレージにプルするときに sigstore アタッチメントを使用するように Red Hat リモートレジストリーを設定します。cat /etc/containers/registries.d/quay.io.yaml docker: quay.io/openshift-release-dev: use-sigstore-attachments: true
$ cat /etc/containers/registries.d/quay.io.yaml docker: quay.io/openshift-release-dev: use-sigstore-attachments: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ユースケースでこれらのイメージソースの署名検証が必要な場合は、ユーザー固有のレジストリー設定ファイルを作成します。ここで示した例を基にして、独自の要件を追加できます。
次のステップ
- ミラーレジストリーを使用している場合は、sigstore アタッチメントを有効にします。
- それ以外の場合は、ローカルコンテナーストレージの消去に進みます。
7.4.2.1. ミラーレジストリーの sigstore アタッチメントを有効にする リンクのコピーリンクがクリップボードにコピーされました!
ミラーレジストリーを使用している場合は、sigstore アタッチメントとダイジェストによるミラーリングを有効にするために、追加の設定を適用する必要があります。
前提条件
- MicroShift ホストへの管理者アクセス権がある。
- 「sigstore を使用してコンテナー署名を検証する」にある手順を完了した。
手順
/etc/containers/registries.d/mirror.registry.local.yaml
ファイルを作成して、sigstore アタッチメントを有効にします。cat /etc/containers/registries.d/<mirror.registry.local.yaml> docker: mirror.registry.local: use-sigstore-attachments: true
$ cat /etc/containers/registries.d/<mirror.registry.local.yaml>
1 docker: mirror.registry.local: use-sigstore-attachments: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ミラーレジストリー URL に基づき、
<mirror.registry.local.yaml>
ファイルに名前を付けます。
次の内容で
/etc/containers/registries.conf.d/999-microshift-mirror.conf
を作成し、ダイジェストによるミラーリングを有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- ローカルコンテナーストレージを消去します。
7.4.2.2. ローカルコンテナーストレージの消去 リンクのコピーリンクがクリップボードにコピーされました!
既存のシステムに設定を適用する場合は、ローカルコンテナーストレージを消去する必要があります。コンテナーストレージを消去することで、署名付きのコンテナーイメージが適切にダウンロードされます。
前提条件
- MicroShift ホストへの管理者アクセス権がある。
- ミラーレジストリーで sigstore を有効にした。
手順
次のコマンドを実行して、CRI-O コンテナーランタイムサービスと MicroShift を停止します。
sudo systemctl stop crio microshift
$ sudo systemctl stop crio microshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、CRI-O コンテナーのランタイムストレージを消去します。
sudo crio wipe --force
$ sudo crio wipe --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、CRI-O コンテナーランタイムサービスと MicroShift を再起動します。
sudo systemctl start crio microshift
$ sudo systemctl start crio microshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを入力して、すべての Pod が正常な状態で実行されていることを確認します。
oc get pods -A
$ oc get pods -A
出力例
この出力例は、基本的な MicroShift を示しています。オプションの RPM をインストールしている場合は、それらのサービスを実行している Pod のステータスも出力に表示されるはずです。